2009-05-27 17 views
175

मैं किसी फ़ॉर्म के इनपुट तत्व के अंदर आइकन कैसे डालूं?एक फॉर्म में इनपुट तत्व के अंदर आइकन रखें

Screenshot of a web form with three inputs which have icons in them

लाइव संस्करण में: Tidal Force theme

+0

@IvanSokalskiy गु यह मानते हुए कि कोई बूटस्ट्रैप का उपयोग कर रहा है। इस पर आने वाले हर कोई बूटस्ट्रैप का उपयोग नहीं करेगा! –

उत्तर

274

साइट आप लिंक किए गए इस बंद को खींचने के लिए सीएसएस चाल का एक संयोजन का उपयोग करता है। सबसे पहले, यह <input> तत्व के लिए पृष्ठभूमि-छवि का उपयोग करता है। फिर, कर्सर को ऊपर धक्का देने के लिए, यह padding-left का उपयोग करता है।

दूसरे शब्दों में, वे इन दो सीएसएस नियम है:

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

क्या आप शीर्ष और बाएं पैरामीटर (7 पीएक्स 7 पीएक्स) और अन्य विशेषताओं के बारे में अधिक वर्णन कर सकते हैं? यह सहायक होना चाहिए। – QMaster

+0

इंटरनेट एक्सप्लोरर 8 द्वारा 'पैडिंग-बाएं' को अनदेखा किया जा रहा है।वास्तव में वास्तव में अनदेखा नहीं किया गया है, लेकिन जैसे ही मैं एक लंबा इनपुट टाइप करता हूं, इनपुट आइकन के सामने प्रकट होता है। –

+118

सलाह: IE का उपयोग करना और समर्थन करना बंद करें 8. –

3

बस अपने सीएसएस में पृष्ठभूमि संपत्ति का उपयोग करें।

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

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

आप इस कोशिश कर सकते हैं:

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

सीएसएस समाधान दूसरों के द्वारा पोस्ट सबसे अच्छा तरीका यह है, कर रहे हैं।

यदि आपको कोई समस्या (आईई 6 पढ़ना) देना चाहिए, तो आप एक div के अंदर एक सीमा रहित इनपुट का भी उपयोग कर सकते हैं।

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

"साफ" नहीं है, लेकिन पुराने ब्राउज़र पर काम करना चाहिए।

+2

इस उत्तर के लिए एक अच्छा जोड़ा है। कभी-कभी यानी समस्याएं होती हैं और उनमें से एक को हल करने का यह एक अच्छा तरीका है। इसके बजाय एक अवधि के साथ मेरे लिए काम किया। – Ross

+0

इनपुट के अंदर और जटिल संरचनाओं को जोड़ने का अच्छा तरीका! – jonhue

+0

@ जोनह्यू, मैं तब तक इसकी अनुशंसा नहीं करता जब तक कि आप पिछले दशक में अभी भी नहीं रह रहे हैं और आईई 6 का समर्थन करने की आवश्यकता है। फिर भी, मैं इसे "साफ" नहीं कहूंगा। – harpo

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

टैग्स को ऊपर अपनी सीएसएस फ़ाइल में जोड़ें और निर्दिष्ट कक्षा का उपयोग करें।

18

मुझे यह सबसे अच्छा और साफ समाधान मिल गया है। का उपयोग करते हुए पाठ इंडेंट input तत्व पर

सीएसएस:

#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

मैं टेक्स्ट इंडेंट का समर्थन कर रहा हूं क्योंकि पैडिंग-बाएं क्षेत्र की चौड़ाई बढ़ाएगा और यह मूल तत्व से बह जाएगा। – stakantin

+0

आपने #icon css के बजाय शैली की इनलाइन क्यों डाली? –

+0

@WylliamJudd यह सिर्फ प्रदर्शन उद्देश्य के लिए है :) – 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> 

उदाहरण के लिए यदि आप इस का उपयोग कर सकते)।

13

बिना पृष्ठभूमि छवियों एक समाधान:

#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

फ़ॉन्ट आइकन के साथ उपयोग करना

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

या

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

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

लगता है कि :: इनपुट तत्व के पहले लागू नहीं किया जा सकता है। – Vishnja

संबंधित मुद्दे