2009-05-27 12 views

Antwort

274

Die Website Sie eine Kombination von CSS Tricks verknüpft nutzt diese aus zu ziehen. Zunächst wird ein Hintergrundbild für das Element <input> verwendet. Um den Cursor dann zu bewegen, verwendet er padding-left.

Mit anderen Worten, sie haben diese beiden CSS-Regeln:

background: url(images/comment-author.gif) no-repeat scroll 7px 7px; 
padding-left:30px; 
+1

Könnten Sie bitte mehr über obere und linke Parameter (7px 7 px) und andere Attribute beschreiben? Das muss hilfreich sein. – QMaster

+0

Das 'padding-left' wird von Internet Explorer 8 ignoriert.Nun, nicht wirklich ignoriert, aber sobald ich eine lange Eingabe tippe, beginnt die Eingabe vor dem Symbol zu erscheinen. –

+118

Hinweis: Hören Sie auf, IE 8 zu verwenden und zu unterstützen. –

3

einfach die Hintergrundeigenschaft in Ihrem CSS verwenden.

<input id="foo" type="text" /> 

#foo 
{ 
    background: url(/img/foo.png); 
} 
22

Sie können dies versuchen:

input[type='text'] { 
    background-image: url(images/comment-author.gif); 
    background-position: 7px 7px; 
    background-repeat: no-repeat; 
}
36

Die CSS-Lösungen von anderen geschrieben sind der beste Weg, dies zu erreichen.

Wenn das irgendwelche Probleme geben sollte (lesen IE6), können Sie auch eine randlose Eingabe innerhalb eines div verwenden.

<div style="border: 1px solid #DDD;"> 
    <img src="icon.png"/> 
    <input style="border: none;"/> 
</div> 

Nicht so "sauber", sollte aber auf älteren Browsern funktionieren.

+2

eine gute Ergänzung zu dieser Antwort. Manchmal gibt es Probleme und das ist ein guter Weg, um einen von ihnen zu lösen. arbeitete für mich, wenn auch mit einer Spanne. – Ross

+0

Schöne Möglichkeit, komplexere Strukturen innerhalb der Eingänge hinzuzufügen! – jonhue

+0

@jonhue, ich würde dies nicht empfehlen, es sei denn, Sie leben noch in der vorherigen Dekade und müssen IE6 unterstützen. Selbst dann würde ich es nicht "sauber" nennen. – harpo

7
.icon{ 
background: url(1.jpg) no-repeat; 
padding-left:25px; 
} 

Fügen Sie die obigen Tags in Ihre CSS-Datei ein und verwenden Sie die angegebene Klasse.

18

Ich finde dies die beste und sauberste Lösung. Mit text-indent auf dem input Element

CSS:

#icon{ 
background-image:url(../images/icons/dollar.png); 
background-repeat: no-repeat; 
background-position: 2px 3px; 
} 

HTML:

<input id="icon" style="text-indent:17px;" type="text" placeholder="Username" /> 
+1

Ich unterstütze Text-Einrückung, da Paddding-left die Feldbreite erhöht und aus dem übergeordneten Element überläuft. – stakantin

+0

Warum hast du den Stil inline anstatt in das #icon CSS gesetzt? –

+0

@WylliamJudd Das ist nur zu Demonstrationszwecken :) – user3284463

1
<label for="fileEdit"> 
    <i class="fa fa-cloud-upload"> 
    </i> 
    <input id="fileEdit" class="hidden" type="file" name="addImg" ng-file-change="onImageChange($files)" ng-multiple="false" accept="{{ contentType }}"/> 
    </label> 

Zum Beispiel können Sie diese verwenden: label mit verstecktem Eingang (Symbol vorhanden ist,).

13

Eine Lösung ohne Hintergrund-Bilder:

#input_container { 
 
    position:relative; 
 
    padding:0 0 0 20px; 
 
    margin:0 20px; 
 
    background:#ddd; 
 
    direction: rtl; 
 
    width: 200px; 
 
} 
 
#input { 
 
    height:20px; 
 
    margin:0; 
 
    padding-right: 30px; 
 
    width: 100%; 
 
} 
 
#input_img { 
 
    position:absolute; 
 
    bottom:2px; 
 
    right:5px; 
 
    width:24px; 
 
    height:24px; 
 
}
<div id="input_container"> 
 
    <input type="text" id="input" value> 
 
    <img src="https://cdn4.iconfinder.com/data/icons/36-slim-icons/87/calender.png" id="input_img"> 
 
</div>

3

Verwendung mit font-Symbol

<input name="foo" type="text" placeholder="&#61447;"> 

ODER

<input id="foo" type="text" /> 

#foo::before 
{ 
    font-family: 'FontAwesome'; 
    color:red; 
    position: relative; 
    left: -5px; 
    content: "\f007";  
} 
+0

Scheint, dass :: vor Eingabeelement nicht angewendet werden kann. – Vishnja

Verwandte Themen