Habituellement, les zones de texte sont rectangulaires ou carrées, comme ceci:
Mais je veux une zone de texte personnalisée, comme celle-ci, par exemple:
Comment est-ce possible?
javascript
jquery
html
css
Paranoïaque
la source
la source
<div>
pour stocker du texte n'est pas une bonne solution. Cela peut aider à la conception et peut même être acceptable pour le texte en lecture seule (ce qui va complètement à l'encontre du but decontenteditable
), mais ce n'est pas bon pour la saisie de texte d'un utilisateur. Un div (même un contenu modifiable) n'est pas un élément d'entrée standard comme un élément de formulaire normal, par conséquent, il ne sera pas traité comme tel, et donc son contenu ne sera pas enregistré par les navigateurs en cas de plantage. L'utilisation d'un div entraîne une perte de données . Voir cet exemple .Réponses:
introduction
Premièrement, il existe de nombreuses solutions, proposées dans d'autres articles. Je pense que celui-ci est actuellement (en 2013) celui qui peut être compatible avec le plus grand nombre de navigateurs, car il n'a pas besoin de propriétés CSS3. Cependant, la méthode ne fonctionnera pas sur les navigateurs qui ne prennent pas en charge
contentdeditable
, soyez prudent.Solution avec un div
contenteditable
Comme proposé par @Getz , vous pouvez utiliser un div avec
contenteditable
puis le façonner avec un peu de div dessus. Voici un exemple, avec deux blocs qui flottent en haut à gauche et en haut à droite de la div principale:Comme vous pouvez le voir, vous devez jouer un peu avec les bordures si vous voulez le même résultat que celui demandé dans votre post. Le div principal a la bordure bleue de chaque côté. Ensuite, les blocs rouges doivent être collés pour masquer les bordures supérieures de la division principale, et vous devez leur appliquer une bordure uniquement sur des côtés particuliers (en bas et à gauche pour le bloc de droite, en bas et à droite pour la gauche).
Après cela, vous pouvez obtenir le contenu via Javascript, lorsque le bouton " Soumettre " est déclenché par exemple. Et je pense que vous pouvez également gérer le reste du CSS (
font-size
,color
, etc.) :)Exemple de code complet
la source
You can't apply a border color for the editable section keeping the two corner div's background-color:white
. N'est-ce pas? Pourtant, cela va gagner. +1bad things
là. Ce seraient les effets secondaires de la situation que je viens de poser et de ce que vous avez fait au violon. Mais c'est certainement une très bonne solution. Merci pour la clarification.Dans un avenir proche, nous pouvons utiliser ce qu'on appelle
css-shapes
pour y parvenir. Un div avec l'contenteditable
attribut défini surtrue
combiné aveccss-shapes
peut créer une zone de texte de n'importe quel type de forme.Actuellement, Chrome Canary est déjà compatible
css-shapes
. Un exemple de ce qui est possible avec les formes css est:Ici, ils utilisent une forme de polygone pour définir le flux de texte. Il devrait être possible de créer deux polygones pour correspondre à la forme souhaitée pour votre zone de texte.
Plus d'informations
css-shapes
ont été écrites sur: http://sarasoueidan.com/blog/css-shapes/Polygone créé avec: http://betravis.github.io/shape-tools/polygon-drawing/
Résultat
http://jsfiddle.net/A8cPj/1/
la source
Peut-être que c'est possible avec Content Editable ?
Ce n'est pas une zone de texte, mais si vous réussissez à créer un div avec cette forme, cela pourrait fonctionner.
Je pense que ce n'est pas possible avec juste une zone de texte ...
Un petit exemple: http://jsfiddle.net/qgfP6/5/
la source
Vous pouvez travailler avec un div contentable, avec deux div coins:
la source
Vous pouvez également le faire avec les régions CSS
(Plateforme Web)
[Actuellement pris en charge dans WebKit Nightly, Safari 6.1+ et iOS7 et déjà utilisable dans Chrome et Opera après avoir activé l'indicateur: enable-experimental-web-platform-features - caniuse , Web Platform ]
VIOLON
Vous pouvez donc créer cette forme de zone de texte en faisant passer le texte à travers 2 régions et en le modifiant en ajoutant contenteditable sur le contenu.
Marquage
(Pertinent) CSS
Le résultat:
Pour plus d'informations sur les régions - voici un bon article: régions CSS3: mise en page riche avec HTML et CSS3
la source
Une longue ligne de texte dans la boîte laissera tomber le curseur au-delà des bords du milieu et je n'arrive pas à résoudre ce problème.
la source
Ce n'est pas possible sire! Une zone de texte est généralement une zone rectangulaire ou carrée, où vous pouvez taper.
Cependant, pour faire quelque chose comme ça, vous pouvez utiliser 2 zones de texte et leur donner une largeur et une hauteur spécifiées. Sinon, je ne pense pas que ça va arriver!
La deuxième méthode consisterait à créer un élément modifiable.
http://jsfiddle.net/afzaal_ahmad_zeeshan/at2ke/
Le code est:
En utilisant cela, vous pouvez rendre n'importe quel élément modifiable! Vous pouvez lui donner des dimensions et ça marchera! Vous l'obtiendrez comme une zone de texte.
Référence: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_Editable
la source
div
s au lieu de textarea. Parce que la zone de texte ne peut pas être modifiée en forme! :) @Markasoftware Vous vous trompez donc lors du vote en aval de cette réponse! .. puisque c'est juste la même réponse que la sienne. La seule chose qui n'est pas présente ici est l'image et le code pour faire le div modifiable avec cette forme!Si vous combinez des formes CSS avec
contenteditable
cela, cela peut être fait dans les navigateurs webkit.Vous devez d'abord activer le drapeau: enable-experimental-web-platform-features
Redémarrez ensuite votre navigateur webkit et vérifiez ce FIDDLE !
Cette méthode fonctionnera également pour les formes non standard.
Marquage
CSS
Alors, comment diable ai-je obtenu cette forme de polygone?
Allez sur ce site et faites votre propre forme personnalisée!
Remarques sur l'activation du drapeau: (à partir d' ici )
la source
box-sizing
.)Vous pouvez utiliser l' outil de conception de sites Web Google pour créer des formes complexes à l'aide
HTML5-canvas and CSS
.De plus, vous obtiendrez d'autres outils comme des outils de saisie pour saisir des textes à l'intérieur de ces formes.
Comme le fichier de sortie contient beaucoup de code, fournir un violon d'un exemple de démonstration créé à l'aide de l' outil Google Web Designer
FIDDLE DEMO >>
la source
<textarea>
(c'est-à-dire une boîte de texte modifiable), mais avec une forme non rectangulaire. Sans la partie «modifiable», il n'y a pas de grand défi ici - les gens font du texte en HTML depuis l'introduction des images flottantes en HTML 2.0.Si, pour une raison quelconque, vous avez vraiment besoin de prendre en charge des navigateurs qui n'en ont pas
contenteditable
, vous pouvez probablement faire la même chose en JavaScript, en utilisant des événements, bien que ce soit une solution très compliquée.Pseudocode:
la source