@IvanSokalskiy Cela suppose que quelqu'un utilise Bootstrap. Tous ceux qui rencontrent cela n'utiliseront pas Bootstrap!
Barry Michael Doyle
Réponses:
394
Le site que vous avez lié utilise une combinaison d'astuces CSS pour y parvenir. Tout d'abord, il utilise une image d'arrière-plan pour l' <input>élément. Ensuite, pour pousser le curseur dessus, il utilise padding-left.
un bon ajout à cette réponse. parfois c'est-à-dire pose des problèmes et c'est un bon moyen de résoudre l'un d'entre eux. travaillé pour moi bien qu'avec une envergure à la place.
Ross
Belle façon d'ajouter des structures plus complexes à l'intérieur des entrées!
jonhue
@jonhue, je ne recommanderais pas cela à moins que vous ne viviez encore dans la décennie précédente et que vous ayez besoin de prendre en charge IE6. Même alors, je n'appellerais pas ça "propre".
harpo
@harpo Comment incluriez-vous alors les liens dans les entrées?
Je soutiens le retrait de texte car padding-left augmentera la largeur du champ et débordera de l'élément parent.
Kostiantyn
1
pourquoi avez-vous mis le style en ligne plutôt que dans le #icon css?
Wylliam Judd
@WylliamJudd C'est juste à des fins de démonstration :)
Rust
pourquoi avez-vous utilisé id au lieu de class?
majid savalanpour
9
Un moyen simple et facile de positionner une icône à l'intérieur d'une entrée consiste à utiliser la propriété CSS position comme indiqué dans le code ci-dessous. Remarque: J'ai simplifié le code à des fins de clarté.
Créez le conteneur entourant l'entrée et l'icône.
Définir la position du conteneur comme relative
Définissez l'icône comme position absolue. Cela positionnera l'icône par rapport au conteneur environnant.
Utilisez en haut, à gauche, en bas, à droite pour positionner l'icône dans le conteneur.
Définissez le remplissage à l'intérieur de l'entrée afin que le texte ne chevauche pas l'icône.
Propre et simple, oui. Vous devez également supprimer la bordure d'entrée avec input { border: none; }et ajouter la bordure pour #input-container { border: 1px solid #000; }lui donner l'impression que l'image est à l'intérieur et fait réellement partie de l'entrée.
Mario Werner
1
@MarioWerner, il a poussé l'image à l'intérieur de l'entrée, pas besoin de faire des hacks de bordure, c'est la beauté. Je vais utiliser l'idée.
input.valid {border-color:#28a745;padding-right:30px;background-image:url('https://www.stephenwadechryslerdodgejeep.com/wp-content/plugins/pm-motors-plugin/modules/vehicle_save/images/check.png');background-repeat: no-repeat;background-size:20px20px;background-position: right center;}
J'avais une situation comme ça. Cela n'a pas fonctionné à cause de background: #ebebeb;. Je voulais mettre un arrière-plan sur le champ de saisie et cette propriété apparaissait constamment en haut de l'image d'arrière-plan, et je ne pouvais pas voir l'image! J'ai donc déplacé la backgroundpropriété au-dessus de la background-imagepropriété et cela a fonctionné.
Il suffit de mentionner, border, paddinget les text-alignpropriétés ne sont pas importantes pour la solution. Je viens de répliquer mon code d'origine.
C'est super ancien et j'espère que vous avez peut-être appris depuis plus d'un an, mais backgroundc'est un nom de propriété raccourci que vous utilisez pour couvrir toutes les propriétés d'arrière-plan à la fois:, background: [color] [image url] [repeat] [position]et c'est pourquoi votre couleur écrasait tout. Vous auriez aussi pu le laisser en place et renommer la propriété enbackground-color
borbulon
@borbulon oui vous avez raison. il est presque toujours préférable d'utiliser un nom de propriété raccourci, vous êtes totalement d'accord avec cela. Mais le but de cet article est de souligner que l'ordre des propriétés est parfois important, et ces «petites» règles CSS peuvent être très frustrantes, en particulier pour les nouveaux arrivants en développement.
fantja
1
Tout à fait d'accord, mais le point demeure: backgroundc'est un nom de propriété raccourci. Une meilleure solution aurait été de ne pas utiliser le raccourci, mais d'utiliser background-colorla propriété color (en supposant que vous vouliez à la fois une couleur et une image).
Réponses:
Le site que vous avez lié utilise une combinaison d'astuces CSS pour y parvenir. Tout d'abord, il utilise une image d'arrière-plan pour l'
<input>
élément. Ensuite, pour pousser le curseur dessus, il utilisepadding-left
.En d'autres termes, ils ont ces deux règles CSS:
la source
Les solutions CSS publiées par d'autres sont le meilleur moyen d'y parvenir.
Si cela vous pose des problèmes (lire IE6), vous pouvez également utiliser une entrée sans bordure à l'intérieur d'un div.
Pas aussi "propre", mais devrait fonctionner sur les anciens navigateurs.
la source
Une solution sans images d'arrière-plan:
la source
Vous pouvez essayer ceci:
la source
Je trouve que c'est la solution la meilleure et la plus propre. Utilisation du retrait de texte sur l'
input
élémentCSS:
HTML:
la source
Un moyen simple et facile de positionner une icône à l'intérieur d'une entrée consiste à utiliser la propriété CSS position comme indiqué dans le code ci-dessous. Remarque: J'ai simplifié le code à des fins de clarté.
la source
input { border: none; }
et ajouter la bordure pour#input-container { border: 1px solid #000; }
lui donner l'impression que l'image est à l'intérieur et fait réellement partie de l'entrée.ajoutez les balises ci-dessus dans votre fichier CSS et utilisez la classe spécifiée.
la source
Cela fonctionne pour moi:
la source
Vous pouvez essayer ceci: Bootstrap-4 Beta
https://www.codeply.com/go/W25zyByhec
la source
Utilisez simplement la propriété background dans votre CSS.
la source
J'avais une situation comme ça. Cela n'a pas fonctionné à cause de
background: #ebebeb;
. Je voulais mettre un arrière-plan sur le champ de saisie et cette propriété apparaissait constamment en haut de l'image d'arrière-plan, et je ne pouvais pas voir l'image! J'ai donc déplacé labackground
propriété au-dessus de labackground-image
propriété et cela a fonctionné.La solution pour mon cas était:
Il suffit de mentionner,
border
,padding
et lestext-align
propriétés ne sont pas importantes pour la solution. Je viens de répliquer mon code d'origine.la source
background
c'est un nom de propriété raccourci que vous utilisez pour couvrir toutes les propriétés d'arrière-plan à la fois:,background: [color] [image url] [repeat] [position]
et c'est pourquoi votre couleur écrasait tout. Vous auriez aussi pu le laisser en place et renommer la propriété enbackground-color
background
c'est un nom de propriété raccourci. Une meilleure solution aurait été de ne pas utiliser le raccourci, mais d'utiliserbackground-color
la propriété color (en supposant que vous vouliez à la fois une couleur et une image).Utilisation avec font-icon
OU
la source
utilisez cette classe css pour votre entrée au début, puis personnalisez-la en conséquence:
la source
Par exemple, vous pouvez utiliser ceci: étiquette avec entrée cachée (l'icône est présente).
la source
Cela fonctionne pour moi pour des formulaires plus ou moins standard:
la source