একটি ফর্ম ইনপুট উপাদান ভিতরে আইকন রাখুন


271

আমি কীভাবে কোনও ফর্মের ইনপুট উপাদানটির ভিতরে একটি আইকন রাখব?

তিনটি ইনপুট সহ একটি ওয়েব ফর্মের স্ক্রিনশট যার মধ্যে আইকন রয়েছে

লাইভ সংস্করণ এ: জোয়ার ফোর্স থিম


2
@ ইভানসোকালস্কি এটি ধরে নিচ্ছে যে কেউ বুটস্ট্র্যাপ ব্যবহার করছে। যারা জুড়ে আসে তারা সবাই বুটস্ট্র্যাপ ব্যবহার করবে না!
ব্যারি মাইকেল ডয়েল

উত্তর:


391

আপনার লিঙ্ক করা সাইটটি এটি বন্ধ করতে সিএসএস ট্রিকসের সংমিশ্রণ ব্যবহার করে। প্রথমত, এটি <input>উপাদানটির জন্য একটি পটভূমি-চিত্র ব্যবহার করে । তারপরে, কার্সারটিকে ধাক্কা দেওয়ার জন্য এটি ব্যবহার করে padding-left

অন্য কথায়, তাদের এই দুটি সিএসএস বিধি রয়েছে:

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

2
আপনি দয়া করে শীর্ষ এবং বাম প্যারামিটারগুলি (7px 7 px) এবং অন্যান্য বৈশিষ্ট্যগুলি সম্পর্কে আরও বর্ণনা করতে পারেন? এটি অবশ্যই সহায়ক হতে পারে।
কিউমাস্টার

262
পরামর্শ: আইই 8 ব্যবহার করা এবং সমর্থন করা বন্ধ করুন
একটি কোডার

3
আমি কীভাবে ইনপুট ফিল্ডের ডান প্রান্তে চিত্রটি সারিবদ্ধ করতে পারি?
ishanbakshi

3
ব্যাকগ্রাউন্ড চিত্রগুলির সাথে সমস্যাটি হ'ল ক্রোমের স্বতঃপূর্ণ পটভূমি চিত্রটি সরিয়ে দেয় এবং পটভূমিটিকে পুরোপুরি হলুদ করে তোলে
ক্যাটালিন রাডোই

1
সঠিক ব্যবহারের জন্য সারিবদ্ধ করতে: পটভূমি-অবস্থান: ডান;
12:38

52

অন্যদের পোস্ট করা সিএসএস সমাধানগুলি এটি সম্পাদন করার সর্বোত্তম উপায়।

যদি এটি আপনাকে কোনও সমস্যা দেয় (আই 6 পড়ুন), আপনি একটি ডিভের ভিতরে সীমান্তহীন ইনপুটও ব্যবহার করতে পারেন।

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

"পরিষ্কার" হিসাবে নয়, তবে পুরানো ব্রাউজারগুলিতে কাজ করা উচিত।


2
এই উত্তর একটি ভাল সংযোজন। কখনও কখনও অর্থাত্ সমস্যা দেয় এবং এটিগুলির মধ্যে একটি সমাধান করার জন্য এটি একটি ভাল উপায়। পরিবর্তে একটি স্প্যান দিয়ে আমার জন্য কাজ।
রস

ইনপুটগুলির ভিতরে আরও জটিল কাঠামো যুক্ত করার দুর্দান্ত উপায়!
jonhue

@ জোনহিউ, আপনি পূর্ববর্তী দশকে এখনও বেঁচে না থাকলে এবং আইই 6 সমর্থন করার প্রয়োজন না হলে আমি এটির সুপারিশ করব না। তারপরেও আমি এটিকে "পরিষ্কার" বলব না।
হার্পো

@harpo আপনি কীভাবে ইনপুটগুলির মধ্যে লিঙ্কগুলি অন্তর্ভুক্ত করবেন?
jonhue

35

ব্যাকগ্রাউন্ড-চিত্রবিহীন সমাধান:

#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>



26

আমি এটির সর্বোত্তম এবং পরিষ্কার সমাধানটি খুঁজে পাই। ব্যবহার টেক্সট ইন্ডেন্ট উপর inputউপাদান

সিএসএস:

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

এইচটিএমএল:

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

3
আমি টেক্সট-ইনডেন্ট সমর্থন করছি কারণ প্যাডিং-বামে ক্ষেত্রের প্রস্থ বৃদ্ধি পাবে এবং এটি প্যারেন্ট উপাদানগুলির বাইরে চলে যাবে।
Kostiantyn

1
আপনি # আইকন সিএসএসের পরিবর্তে স্টাইলটি ইনলাইন কেন রেখেছিলেন?
উইলিয়াম জড

@ ওয়েলিয়াম জজড এটি কেবল প্রদর্শনের উদ্দেশ্যে :)
মরচে

আপনি ক্লাসের পরিবর্তে আইডি ব্যবহার করলেন কেন?
মজিদ সাবালানপুর

9

একটি ইনপুটটির ভিতরে আইকনটি অবস্থানের একটি সহজ এবং সহজ উপায় হ'ল নীচের কোডে প্রদর্শিত পজিশনের সিএসএস সম্পত্তিটি ব্যবহার করা। দ্রষ্টব্য: আমি স্বচ্ছতার উদ্দেশ্যে কোডটি সহজীকরণ করেছি।

  1. ইনপুট এবং আইকনটির চারপাশে ধারক তৈরি করুন।
  2. আপেক্ষিক হিসাবে ধারক অবস্থান সেট করুন
  3. অবস্থান নিরঙ্কুশ হিসাবে আইকন সেট করুন। এটি আশেপাশের ধারকটির তুলনায় আইকনটি অবস্থান করবে।
  4. কনটেইনারটিতে আইকনটি অবস্থান করতে উপরে, বাম, নীচে, ডানদিকে ব্যবহার করুন।
  5. ইনপুটটির ভিতরে প্যাডিং সেট করুন যাতে পাঠ্যটি আইকনটিকে ওভারল্যাপ না করে।

#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>


1
পরিষ্কার এবং সহজ, হ্যাঁ। চিত্রটি ভিতরে রয়েছে এবং প্রকৃতপক্ষে ইনপুটটির অংশের মতো দেখতে এটির জন্য আপনার ইনপুট বর্ডারটি সরাতে হবে এবং সীমানা input { border: none; }যুক্ত #input-container { border: 1px solid #000; }করতে হবে।
মারিও ওয়ার্নার

1
@ মারিও ওয়ার্নার তিনি চিত্রটিকে ইনপুটটির ভিতরে ঠেলে দিয়েছিলেন, সীমান্ত হ্যাক করার দরকার নেই, এটাই সৌন্দর্য। আমি ধারণাটি ব্যবহার করতে যাচ্ছি।
মূর্খ

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

আপনার সিএসএস ফাইলে উপরের ট্যাগগুলি যুক্ত করুন এবং নির্দিষ্ট শ্রেণিটি ব্যবহার করুন।


6

এটি আমার পক্ষে কাজ করে:

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>


ক্রোমে স্বয়ংক্রিয়ভাবে পূর্ণ হওয়ার সময় চিত্রটি অদৃশ্য হয়ে যায়
নেপচিউন

আপনি কীভাবে চিত্রটিকে ক্লিকযোগ্য করে তুলবেন? উদাহরণস্বরূপ যদি "সংরক্ষণ করুন" আইকনটি ব্যবহার করা হয়?
user460114

এটি আমার হাইব্রিড অ্যাপ্লিকেশনটির জন্য আমার পক্ষে কাজ করেছে, আমি ইমেজ afterোকানোর পরে পুরো ইনপুট বাক্সটিকে ক্লিকযোগ্য করে তুলেছি।
শিবম শ্রীবাস্তব

5

আপনি এটি চেষ্টা করতে পারেন: বুটস্ট্র্যাপ -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>







4

আমার এমন অবস্থা ছিল situation এটি কারণ কাজ করে না 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বৈশিষ্ট্যগুলি সমাধানের জন্য গুরুত্বপূর্ণ নয়। আমি স্রেফ আমার মূল কোডটি প্রতিলিপি করেছি।


1
এটি অত্যন্ত পুরানো এবং আমি আশা করি আপনি সম্ভবত এক বছরেরও বেশি সময় আগে থেকে শিখেছেন, তবে backgroundএটি একটি শর্টহ্যান্ড সম্পত্তি নাম যা আপনি সমস্ত পটভূমি বৈশিষ্ট্য একবারে toাকতে ব্যবহার করেন: background: [color] [image url] [repeat] [position]এবং এজন্য আপনার রঙ সব কিছু ওভাররাইট করে চলেছে । আপনি এটি এটিকে রেখে দিতে এবং সম্পত্তিটির নতুন নামকরণ করতে পারেনbackground-color
বোরবুলন

@ বুলবুলন হ্যাঁ আপনি ঠিক বলেছেন। শর্টহ্যান্ড প্রপার্টি নাম ব্যবহার করা প্রায় সর্বদা সেরা, এতে সম্পূর্ণ সম্মত হন। তবে এই পোস্টের উদ্দেশ্যটি উল্লেখ করা হ'ল বৈশিষ্ট্যের ক্রমটি মাঝে মধ্যে গুরুত্বপূর্ণ হয় এবং এই 'ছোট' সিএসএস বিধিগুলি হতাশ হতে পারে বিশেষত বিকাশে আগতদের to
কল্পনা

1
সম্পূর্ণরূপে একমত, কিন্তু বিষয়টি এখনও দাঁড়িয়ে আছে: backgroundএকটি শর্টহ্যান্ড সম্পত্তির নাম। শর্টহ্যান্ড ব্যবহার না করা, তবে background-colorরঙের সম্পত্তিটির জন্য ব্যবহার করা (আপনি একটি রঙ এবং একটি চিত্র উভয়ই চান তবে ধরে নেওয়া) একটি আরও ভাল সমাধান।
বোরবুলন

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";    
}

7
দেখে মনে হচ্ছে :: এর আগে ইনপুট উপাদান প্রয়োগ করা যাবে না।
বিষ্ণজা

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>

উদাহরণস্বরূপ আপনি এটি ব্যবহার করতে পারেন: লুকানো ইনপুট সহ লেবেল (আইকন উপস্থিত রয়েছে)।


1

শুরুতে আপনার ইনপুটটির জন্য এই CSS ক্লাসটি ব্যবহার করুন, তারপরে সেই অনুযায়ী কাস্টমাইজ করুন:

    
 .inp-icon{
background: url(https://i.imgur.com/kSROoEB.png)no-repeat 100%;
background-size: 16px;
 }
<input class="inp-icon" type="text">


আপনি কি জানেন কীভাবে কেবল এই চিত্রটির জন্য ক্লিক ইভেন্ট সেট করবেন??
অর্জুন

0

এটি আমার জন্য কম বা কম স্ট্যান্ডার্ড ফর্মগুলির জন্য কাজ করে:

  <button type="submit" value="Submit" name="ButtonType" id="whateveristheId" class="button-class">Submit<img src="/img/selectedImage.png" alt=""></button>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.