मैं किसी प्रपत्र के इनपुट तत्व के अंदर एक आइकन कैसे डालूं?
पर लाइव संस्करण: ज्वारीय बल थीम
मैं किसी प्रपत्र के इनपुट तत्व के अंदर एक आइकन कैसे डालूं?
पर लाइव संस्करण: ज्वारीय बल थीम
जवाबों:
आपके द्वारा लिंक की गई साइट इसे खींचने के लिए CSS ट्रिक के संयोजन का उपयोग करती है। सबसे पहले, यह <input>
तत्व के लिए एक पृष्ठभूमि-छवि का उपयोग करता है । फिर, कर्सर को ऊपर धकेलने के लिए, यह उपयोग करता हैpadding-left
।
दूसरे शब्दों में, उनके पास ये दो सीएसएस नियम हैं:
background: url(images/comment-author.gif) no-repeat scroll 7px 7px;
padding-left:30px;
दूसरों के द्वारा पोस्ट किए गए CSS समाधान इसे पूरा करने का सबसे अच्छा तरीका है।
अगर इससे आपको कोई समस्या आती है (IE6 पढ़ें), तो आप एक div के अंदर एक बॉर्डरलेस इनपुट का भी उपयोग कर सकते हैं।
<div style="border: 1px solid #DDD;">
<img src="icon.png"/>
<input style="border: none;"/>
</div>
"स्वच्छ" के रूप में नहीं, बल्कि पुराने ब्राउज़रों पर काम करना चाहिए।
पृष्ठभूमि-छवियों के बिना एक समाधान:
#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>
आप यह कोशिश कर सकते हैं:
input[type='text'] {
background-image: url(images/comment-author.gif);
background-position: 7px 7px;
background-repeat: no-repeat;
}
मुझे इसका सबसे अच्छा और साफ समाधान मिल गया है। तत्व पर पाठ-इंडेंट का उपयोग करना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" />
एक इनपुट के अंदर एक आइकन स्थिति के लिए एक सरल और आसान तरीका स्थिति सीएसएस संपत्ति का उपयोग करना है जैसा कि नीचे दिए गए कोड में दिखाया गया है। नोट: मैंने स्पष्टता के उद्देश्य से कोड को सरल बनाया है।
#input-container {
position: relative;
}
#input-container > img {
position: absolute;
top: 12px;
left: 15px;
}
#input-container > input {
padding-left: 40px;
}
<div id="input-container">
<img/>
<input/>
</div>
input { border: none; }
और बॉर्डर को जोड़ने के #input-container { border: 1px solid #000; }
लिए यह सुनिश्चित करना चाहिए कि छवि अंदर है और वास्तव में इनपुट का हिस्सा है।
.icon{
background: url(1.jpg) no-repeat;
padding-left:25px;
}
अपनी सीएसएस फ़ाइल में उपरोक्त टैग जोड़ें और निर्दिष्ट वर्ग का उपयोग करें।
यह मेरे लिए काम करता है:
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: 20px 20px;
background-position: right center;
}
<form>
<label for="name">Name</label>
<input class="valid" type="text" name="name" />
</form>
आप यह कोशिश कर सकते हैं: बूटस्ट्रैप -4 बीटा
https://www.codeply.com/go/W25zyByhec
<div class="container">
<form>
<div class="row">
<div class="input-group mb-3 col-sm-6">
<input type="text" class="form-control border-right-0" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
<div class="input-group-prepend bg-white">
<span class="input-group-text border-left-0 rounded-right bg-white" id="basic-addon1"><i class="fas fa-search"></i></span>
</div>
</div>
</div>
</form>
</div>
मेरे पास इस तरह की स्थिति थी। की वजह से इसे काम नहीं किया background: #ebebeb;
। मैं इनपुट क्षेत्र पर पृष्ठभूमि रखना चाहता था और वह संपत्ति लगातार पृष्ठभूमि छवि के शीर्ष पर दिखाई दे रही थी, और मैं छवि नहीं देख सकता था! इसलिए, मैंने background
संपत्ति को संपत्ति से ऊपर होने के लिए स्थानांतरित कर दिया background-image
और यह काम किया।
input[type='text'] {
border: 0;
background-image: url('../img/search.png');
background-position: 9px 20px;
background-repeat: no-repeat;
text-align: center;
padding: 14px;
background: #ebebeb;
}
मेरे मामले का हल था:
input[type='text'] {
border: 0;
background: #ebebeb;
background-image: url('../img/search.png');
background-position: 9px 20px;
background-repeat: no-repeat;
text-align: center;
padding: 14px;
}
बस उल्लेख करने के लिए border
, padding
और text-align
गुण समाधान के लिए महत्वपूर्ण नहीं हैं। मैंने सिर्फ अपना मूल कोड दोहराया है।
background
एक आशुलिपि संपत्ति का नाम है जिसका उपयोग आप एक बार में सभी पृष्ठभूमि गुणों को कवर करने के लिए करते हैं: background: [color] [image url] [repeat] [position]
और इसीलिए आपका रंग सब कुछ ओवरराइट कर रहा था। आप इसे जगह पर छोड़ भी सकते थे और संपत्ति का नाम बदलकरbackground-color
background
एक आशुलिपि संपत्ति का नाम है। एक बेहतर समाधान शॉर्टहैंड का उपयोग नहीं करना होता, लेकिन background-color
रंग संपत्ति के लिए उपयोग करें (यह मानते हुए कि आप एक रंग और एक छवि दोनों चाहते हैं)।
फ़ॉन्ट-आइकन के साथ उपयोग करना
<input name="foo" type="text" placeholder="">
या
<input id="foo" type="text" />
#foo::before
{
font-family: 'FontAwesome';
color:red;
position: relative;
left: -5px;
content: "\f007";
}
<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>
उदाहरण के लिए आप इसका उपयोग कर सकते हैं: छिपे हुए इनपुट के साथ लेबल (आइकन मौजूद है)।
प्रारंभ में अपने इनपुट के लिए इस सीएसएस वर्ग का उपयोग करें, फिर तदनुसार अनुकूलित करें:
.inp-icon{
background: url(https://i.imgur.com/kSROoEB.png)no-repeat 100%;
background-size: 16px;
}
<input class="inp-icon" type="text">