Comment désactiver la propriété redimensionnable d'une zone de texte?
2650
Je souhaite désactiver la propriété redimensionnable d'un fichier textarea.
Actuellement, je peux redimensionner un textareaen cliquant sur le coin inférieur droit de textareaet en faisant glisser la souris. Comment puis-je désactiver cela?
@JDIsaaks - en outre, autoriser le redimensionnement dans certaines situations peut casser la mise en page et l'imprimabilité (un aspect important d'un projet critique actuel).
random_user_name
10
Parfois, vous voulez vraiment une zone de texte non redimensionnable. Par exemple, dans ce cas, lorsque vous convertissez (conditionnellement) une zone de texte en quelque chose qui ressemble à une étiquette. Il semble vraiment étrange d'avoir une étiquette avec un grappin flottant aléatoire sur le côté.
neminem
2
Pour l'amour de tout ce qui est bon, veuillez ne pas le faire sur une zone de texte réelle ou vous aliénerez vos utilisateurs avancés. Briser la fonctionnalité principale du navigateur devrait être considéré comme une option nucléaire.
superluminaire le
Réponses:
3532
La règle CSS suivante désactive le comportement de redimensionnement des textareaéléments:
textarea {resize: none;}
Pour le désactiver pour certains (mais pas tous) textarea, il existe quelques options .
Pour désactiver un spécifique textareaavec l' nameattribut défini sur foo(c'est- à -dire <textarea name="foo"></textarea>):
textarea[name=foo]{resize: none;}
Ou, en utilisant un idattribut (c.-à-d. <textarea id="foo"></textarea>):
#foo {resize: none;}
La page W3C répertorie les valeurs possibles pour les restrictions de redimensionnement: aucune, les deux, horizontale, verticale et hérite:
textarea {resize: vertical;/* user can resize vertically, but width is fixed */}
Consultez une page de compatibilité décente pour voir quels navigateurs prennent actuellement en charge cette fonctionnalité. Comme Jon Hulka l'a commenté, les dimensions peuvent être encore plus restreintes en CSS en utilisant max-width, max-height, min-width et min-height.
Super important à savoir:
Cette propriété ne fait rien sauf si la propriété overflow est autre chose que visible, ce qui est la valeur par défaut pour la plupart des éléments. Donc, généralement, pour utiliser cela, vous devrez définir quelque chose comme débordement: défilement;
Existe-t-il une solution pour Firefox, Opera et / ou IE?
Šime Vidas
6
@ Šime IE et FF3 (et versions antérieures) n'ajoutent pas de redimensionnement de prise en charge, donc aucune solution n'est nécessaire pour eux. Pour FF4, cette solution devrait fonctionner.
Donut
24
selon davidwalsh.name/textarea-resize - utilisez resize: vertical ou resize: horizontal pour contraindre le redimensionnement à une dimension. Ou utilisez n'importe quelle largeur max, hauteur max, largeur min et hauteur min.
Jon Hulka
3
Suis-je le seul à trouver bizarre de définir cela en utilisant CSS et non des attributs? Pourquoi ne puis-je pas définir les propriétés désactivées ou vérifiées ou d'autres propriétés en utilisant CSS ...
Buksy
6
@Buksy Parce que "désactivé" est un état, pas une propriété visuelle. Il est donc logique que cela ne soit pas décidé par un langage de style .
CSS 3 a une nouvelle propriété pour les éléments d'interface utilisateur qui vous permettra de le faire. La propriété est la propriété de redimensionnement . Vous devez donc ajouter ce qui suit à votre feuille de style pour désactiver le redimensionnement de tous les éléments de zone de texte:
textarea { resize: none;}
Il s'agit d'une propriété CSS 3; utilisez un tableau de compatibilité pour voir la compatibilité du navigateur.
Personnellement, je trouverais très ennuyeux d'avoir le redimensionnement désactivé sur les éléments de la zone de texte. Il s'agit de l'une de ces situations où le concepteur tente de "casser" le client de l'utilisateur. Si votre conception ne peut pas accueillir une zone de texte plus grande, vous voudrez peut-être reconsidérer le fonctionnement de votre conception. Tout utilisateur peut ajouter textarea { resize: both !important; }à sa feuille de style utilisateur pour remplacer votre préférence.
Mais ce serait l'utilisateur qui casse intentionnellement sa mise en page, plutôt qu'un utilisateur qui a juste besoin de redimensionner son / sa texareaet finit par faire quelque chose qui ne fonctionne pas
Utilisez également resize:nonecette solution pour éviter que la poignée n'apparaisse dans le coin inférieur, ce qui ne fonctionne pas de manière frustrante.
Il s'agit d'un attribut HTML 5, donc seuls les nouveaux navigateurs le prendront en charge. J'ai lu quelque part qu'IE le prend en charge à partir de 9 heures.
Antony D'Andrea
4
Cela fonctionne dans la plupart des navigateurs. dans chaque dernier navigateur.
Thusitha Wickramasinghe,
cela n'empêchera pas le redimensionnement de la zone de texte
Mishko Vladimir
@ AntonyD'Andrea Cela ne fonctionne pas sur le dernier Chrome: jsfiddle.net/ps2v8df9
Advait Junnarkar
6
Pour désactiver la propriété de redimensionnement, utilisez la propriété CSS suivante:
resize: none;
Vous pouvez soit l'appliquer en tant que propriété de style en ligne comme ceci:
<textareastyle="resize: none;"></textarea>
ou entre les <style>...</style>balises d'élément comme ceci:
La propriété resize spécifie si un élément est redimensionnable ou non par l'utilisateur.
Remarque: La propriété resize s'applique aux éléments dont la valeur de débordement calculée est autre que "visible".
Redimensionner également non pris en charge dans Internet Explorer pour le moment.
Voici différentes propriétés de redimensionnement:
Pas de redimensionnement:
textarea {
resize: none;}
Redimensionnez les deux façons (verticalement et horizontalement):
textarea {
resize: both;}
Redimensionner verticalement:
textarea {
resize: vertical;}
Redimensionner horizontalement:
textarea {
resize: horizontal;}
De plus, si vous en avez widthet heightdans votre CSS ou HTML, cela empêchera le redimensionnement de votre zone de texte, avec une prise en charge plus large des navigateurs.
Pour Internet Explorer et iOS, vous ne pouvez pas désactiver le redimensionnement, mais vous pouvez limiter la textareadimension en définissant son widthet height.
/* One can also turn on/off specific axis. Defaults to both on. */
textarea { resize:vertical;}/* none|horizontal|vertical|both */
<textareaclass="resizeable"rows="5"cols="20"name="resizeable"title="This is Resizable.">
This is Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea><textareaclass="noResizeable"rows="5"title="This will not Resizable. "cols="20"name="resizeable">
This will not Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea><textareaclass="resizeable_V"title="This is Vertically Resizable."rows="5"cols="20"name="resizeable">
This is Vertically Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea><textareaclass="resizeable_H"title="This is Horizontally Resizable."rows="5"cols="20"name="resizeable">
This is Horizontally Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea>
C'est un mème - par exemple, "Vous devriez totalement laisser tomber cela et essayer jQuery." .
Peter Mortensen
0
Pour désactiver le redimensionnement pour tous les textareas:
textarea {
resize: none;}
Pour désactiver le redimensionnement pour un élément spécifique textarea, ajoutez un attribut name, ou un idet définissez-le sur quelque chose. Dans ce cas, il est nomménoresize
HTML
<textareaname='noresize'id='noresize'></textarea>
CSS
/* Using the attribute name */
textarea[name=noresize]{
resize: none;}/* Or using the id */#noresize {
resize: none;}
N'abusez pas de l' !importantattribut. Inutile de fixer la largeur et la hauteur si l'attribut CSS resize: nonepeut supprimer la fonction de redimensionnement
Raptor
1
N'est-ce pas !importantmal?
Peter Mortensen du
Dans Chrome actuel, cela arrête le redimensionnement horizontal, mais je peux toujours redimensionner la zone de texte verticalement.
Réponses:
La règle CSS suivante désactive le comportement de redimensionnement des
textarea
éléments:Pour le désactiver pour certains (mais pas tous)
textarea
, il existe quelques options .Pour désactiver un spécifique
textarea
avec l'name
attribut défini surfoo
(c'est- à -dire<textarea name="foo"></textarea>
):Ou, en utilisant un
id
attribut (c.-à-d.<textarea id="foo"></textarea>
):La page W3C répertorie les valeurs possibles pour les restrictions de redimensionnement: aucune, les deux, horizontale, verticale et hérite:
Consultez une page de compatibilité décente pour voir quels navigateurs prennent actuellement en charge cette fonctionnalité. Comme Jon Hulka l'a commenté, les dimensions peuvent être encore plus restreintes en CSS en utilisant max-width, max-height, min-width et min-height.
la source
En CSS ...
la source
J'ai trouvé deux choses:
Première
Il s'agit d'un CSS 3, qui n'est pas encore publié , compatible avec Firefox 4 (et versions ultérieures), Chrome et Safari .
Une autre fonctionnalité de formatage consiste à
overflow: auto
se débarrasser de la barre de défilement droite, en tenant compte de l' attribut dir .Code et différents navigateurs
HTML de base
Certains navigateurs
la source
CSS 3 a une nouvelle propriété pour les éléments d'interface utilisateur qui vous permettra de le faire. La propriété est la propriété de redimensionnement . Vous devez donc ajouter ce qui suit à votre feuille de style pour désactiver le redimensionnement de tous les éléments de zone de texte:
Il s'agit d'une propriété CSS 3; utilisez un tableau de compatibilité pour voir la compatibilité du navigateur.
Personnellement, je trouverais très ennuyeux d'avoir le redimensionnement désactivé sur les éléments de la zone de texte. Il s'agit de l'une de ces situations où le concepteur tente de "casser" le client de l'utilisateur. Si votre conception ne peut pas accueillir une zone de texte plus grande, vous voudrez peut-être reconsidérer le fonctionnement de votre conception. Tout utilisateur peut ajouter
textarea { resize: both !important; }
à sa feuille de style utilisateur pour remplacer votre préférence.la source
texarea
et finit par faire quelque chose qui ne fonctionne pasla source
Si vous avez besoin d'un soutien approfondi, vous pouvez utiliser une technique à l'ancienne:
la source
resize:none
cette solution pour éviter que la poignée n'apparaisse dans le coin inférieur, ce qui ne fonctionne pas de manière frustrante.Cela peut être fait facilement en HTML:
Cela fonctionne pour moi. La valeur par défaut est
true
pour l'draggable
attribut.la source
Pour désactiver la propriété de redimensionnement, utilisez la propriété CSS suivante:
Vous pouvez soit l'appliquer en tant que propriété de style en ligne comme ceci:
ou entre les
<style>...</style>
balises d'élément comme ceci:la source
Vous utilisez simplement:
resize: none;
dans votre CSS.Redimensionner également non pris en charge dans Internet Explorer pour le moment.
Voici différentes propriétés de redimensionnement:
Pas de redimensionnement:
Redimensionnez les deux façons (verticalement et horizontalement):
Redimensionner verticalement:
Redimensionner horizontalement:
De plus, si vous en avez
width
etheight
dans votre CSS ou HTML, cela empêchera le redimensionnement de votre zone de texte, avec une prise en charge plus large des navigateurs.la source
CSS 3 peut résoudre ce problème. Malheureusement, il n'est supporté que sur 60% des navigateurs utilisés de nos jours.
Pour Internet Explorer et iOS, vous ne pouvez pas désactiver le redimensionnement, mais vous pouvez limiter la
textarea
dimension en définissant sonwidth
etheight
.Voir la démo
la source
Vous pouvez simplement désactiver la propriété textarea comme ceci:
Pour désactiver le redimensionnement vertical ou horizontal , utilisez
ou
la source
J'ai créé une petite démo pour montrer comment fonctionnent les propriétés de redimensionnement. J'espère que cela vous aidera ainsi que les autres.
la source
Avec
@style
, vous pouvez lui donner une taille personnalisée et désactiver la fonction de redimensionnement(resize: none;)
.la source
Vous pouvez également essayer avec jQuery
la source
Pour désactiver le redimensionnement pour tous les
textarea
s:Pour désactiver le redimensionnement pour un élément spécifique
textarea
, ajoutez un attributname
, ou unid
et définissez-le sur quelque chose. Dans ce cas, il est nomménoresize
HTML
CSS
la source
L'ajout
!important
fait fonctionner:outline
est juste pour éviter le contour bleu sur certains navigateurs.la source
!important
attribut. Inutile de fixer la largeur et la hauteur si l'attribut CSSresize: none
peut supprimer la fonction de redimensionnement!important
mal?