তীর শৈলীর পরিবর্তন নির্বাচন করুন


125

আমি নিজের ছবির সাথে একটি নির্বাচনের তীরটি প্রতিস্থাপন করার চেষ্টা করছি। আমি একই আকারের সাথে একটি ডিভের মধ্যে নির্বাচনটি অন্তর্ভুক্ত করছি, আমি নির্বাচনের ব্যাকগ্রাউন্ডটি স্বচ্ছ হিসাবে সেট করেছি এবং আমি ব্যাকগ্রাউন্ড হিসাবে ডিভের ডান উপরের কোণায় একটি ছবি (তীরের মতো একই আকারের) সহ অন্তর্ভুক্ত করছি।

এটি কেবল ক্রোমে কাজ করে।

এখানে চিত্র বর্ণনা লিখুন

আমি এটি ফায়ারফক্স এবং আই 9 তে কীভাবে এটি তৈরি করতে পারি:

এখানে চিত্র বর্ণনা লিখুন

.styled-select {
  width: 100px;
  height: 17px;
  overflow: hidden;
  overflow: -moz-hidden-unscrollable;
  background: url(images/downarrow_blue.png) no-repeat right white;
  border: 2px double red;
  display: inline-block;
  position: relative;
}

.styled-select select {
  background: transparent;
  -webkit-appearance: none;
  width: 100px;
  font-size: 11px;
  border: 0;
  height: 17px;
  position: absolute;
  left: 0;
  top: 0;
}

body {
  background-color: #333333;
  color: #FFFFFF;
}

.block label {
  color: white;
}
<HTML>

<HEAD>
</HEAD>

<BODY>
  <p/>
  <form action="/prepareUpdateCategoryList.do?forwardto=search">

    <fieldset class="block" id="searchBlock">
      <p>
        <label style="width:80px">Class</label>
        <div class="styled-select">
          <select property="voucherCategoryClass">
    		<option value="0">Select </option>
    		<option value="7382">steam </option>
    	</select>
        </div>

      </p>
    </fieldset>
  </form>
</BODY>

</HTML>

উত্তর:


123

আপনি কি এরকম কিছু চেষ্টা করেছেন:

.styled-select select {
    -moz-appearance:none; /* Firefox */
    -webkit-appearance:none; /* Safari and Chrome */
    appearance:none;
}

পরীক্ষিত হয়নি, তবে কাজ করা উচিত।

সম্পাদনা : দেখে মনে হচ্ছে ফায়ারফক্স 35 সংস্করণ না হওয়া পর্যন্ত এই বৈশিষ্ট্যটিকে সমর্থন করে না ( এখানে আরও পড়ুন )

এখানে একটি workaround আছে , jsfiddleসেই পোস্টে একবার দেখুন।


1
ইন্টারনেট এক্সপ্লোরার সম্পর্কে কী?
ফ্রান্সিসকো মোরেলস


আমি একটি সদৃশ প্রশ্ন থেকে এই উত্তরটি পেয়েছি যা খাঁটি সিএসএস (কোনও পিএনজি, জেপিগ, ইত্যাদি) ব্যবহার করে কীভাবে প্রকৃতপক্ষে একটি "বোতাম" যুক্ত করবেন তা দেখায় stackoverflow.com/a/28274325/2098017
অ্যান্টনি এফ

'Workaround' প্রশ্ন থেকে jsfiddle আর কাজ করে না longer
ড্রাগগোস রাইসেস্কু

শো বাল্বগুলির জন্য, এটি ব্যবহার করুন:appearance: menulist !important;-moz-appearance: menulist !important;-webkit-appearance: menulist !important;-o-appearance: menulist !important;
mghhgm

60

selectজুলিওর জবাবের মতো কাস্টম তীর সহ আমি একটি সেট আপ করেছি , তবে এটির কোনও প্রস্থ নেই এবং এটি svgব্যাকগ্রাউন্ড চিত্র হিসাবে ব্যবহার করে । ( arrow_drop_downউপাদান-ইউআই আইকন থেকে)

select {
  -webkit-appearance: none;
  -moz-appearance: none;
  background: transparent;
  background-image: url("data:image/svg+xml;utf8,<svg fill='black' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>");
  background-repeat: no-repeat;
  background-position-x: 100%;
  background-position-y: 5px;
  border: 1px solid #dfdfdf;
  border-radius: 2px;
  margin-right: 2rem;
  padding: 1rem;
  padding-right: 2rem;
}

এখানে চিত্র বর্ণনা লিখুন

আপনার যদি প্রয়োজন হয় তবে IE এ কাজ করতে এসভিজি তীরটি বেস 64 এ আপডেট করুন এবং নিম্নলিখিতগুলি যুক্ত করুন:

select::-ms-expand { display: none; }

background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSdibGFjaycgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDI0IDI0JyB3aWR0aD0nMjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTcgMTBsNSA1IDUtNXonLz48cGF0aCBkPSdNMCAwaDI0djI0SDB6JyBmaWxsPSdub25lJy8+PC9zdmc+);

এটির তীরকে আকার এবং স্থানটি সহজ করার জন্য, এই এসভিজিটি ব্যবহার করুন:

url("data:image/svg+xml,<svg width='24' height='24' xmlns='http://www.w3.org/2000/svg'><path d='m0,6l12,12l12,-12l-24,0z'/><path fill='none' d='m0,0l24,0l0,24l-24,0l0,-24z'/></svg>");

এটিতে তীরের পাশে কোনও ফাঁকা জায়গা নেই।


1
আপনি তীরটি আরও স্পষ্টভাবে ব্যবহার করে অবস্থান করতে পারেনbackground-position: top 5px right 4px;
কোয়েেন

জিপড:background: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M7 10l5 5 5-5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>') 100% 50% no-repeat transparent;
কে-গান

আমি জানতে পারি আপনি কেন background-position-y: 5px;% (উদাঃ background-position-y: 50%;) এর পরিবর্তে ব্যবহার করেন ?
স্যাম

45

মাত্র একটি শ্রেণীর সাথে কাজ করা:

select {
    width: 268px;
    padding: 5px;
    font-size: 16px;
    line-height: 1;
    border: 0;
    border-radius: 5px;
    height: 34px;
    background: url(http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png) no-repeat right #ddd;
    -webkit-appearance: none;
    background-position-x: 244px;
}

http://jsfiddle.net/qhCsJ/4120/


1
আপনার উত্তরটি সবচেয়ে সোজা এগিয়ে বলে মনে হচ্ছে এবং কেবল সিএসএস ব্যবহার করে।
অস্টিন লাভল

1
এটির জন্য মূল্য আপনার ক্ষেত্রটির প্রস্থ নির্ধারণ করতে হবে না এবং পটভূমি অবস্থানের জন্যও% ব্যবহার করতে পারেন :)
শনিওবাইক

2
ফায়ারফক্স ব্যাকগ্রাউন্ড-পজিশন-এক্স সমর্থন করে না, তবে এটি ব্যাকগ্রাউন্ড-পজিশন সমর্থন করে
kriskodzi

2
লজ্জাজনক এই উত্তরটির এত টুইট করা দরকার: - / তবে এটি একটি ভাল শুরু করার লাইন।
ওয়ালথার

1
আপনি যদি নিয়ন্ত্রণের জন্য প্রস্থ নির্ধারণের উপর নির্ভর করতে না চান তবে চিত্রটি ডান হাত থেকে ফিরে প্যাড করতে চান তবে আপনি background-position-x: calc( 100% - 5px );
ক্যালকটি

29

এখানে একটি মার্জিত ফিক্স যা মানটি দেখানোর জন্য একটি স্প্যান ব্যবহার করে।

লেআউটটি এর মতো:

<div class="selectDiv">
   <span class="selectDefault"></span>
   <select name="txtCountry" class="selectBox">
      <option class="defualt-text">-- Select Country --</option>
      <option value="1">Abkhazia</option>
      <option value="2">Afghanistan</option>
   </select>
</div>

JsFiddle


5
এই সমাধানের জন্য +1, আইই 9 এবং পুরানো ব্রাউজারগুলিতে তীরগুলি সঠিকভাবে স্টাইল করার একমাত্র উপায়। এমন অনেকগুলি সাইট রয়েছে যা কেবলমাত্র বলে যে আপনি IE9 এবং পূর্ববর্তী নির্বাচনের বাক্সগুলিকে স্টাইল করতে পারবেন না এবং পরিবর্তে ফ্যালব্যাক কৌশলগুলি সরবরাহ করতে পারেন তবে এই সমাধানটি অন্যথায় প্রমাণিত হয়।
জন

ধন্যবাদ এটি এত দরকারী।
গুরুতর নির্যাতন

3
এটি উল্লেখ করার মতো: এই সমাধানটির জন্য জাভাস্ক্রিপ্ট দরকার , যা এই উত্তরটির জন্য ট্যাগ করা হয়নি
এলোমেলো_ ব্যবহারকারীর_নামা

20

এটি বিশেষত বুটস্ট্র্যাপ ব্যবহারকারীদের জন্য, সর্বশেষতম ব্রাউজার সংস্করণে পরীক্ষিতদের জন্য ভালভাবে কাজ করবে:

select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  /* Some browsers will not display the caret when using calc, so we put the fallback first */ 
  background: url("http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png") white no-repeat 98.5% !important; /* !important used for overriding all other customisations */
  background: url("http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png") white no-repeat calc(100% - 10px) !important; /* Better placement regardless of input width */
}
/*For IE*/
select::-ms-expand { display: none; }
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet"/>

<div class="container">
  <div class="row">
    <div class="col-xs-6">
      <select class="form-control">
       <option>Option 1</option>
       <option>Option 2</option>
       <option>Option 3</option>
      </select>
    </div>
  </div>
</div>


9

এটি হ্যাকি, এটি সাধারণ হিসাবে এটি পরীক্ষা করুন:

  • শৈলীগুলি সরানোর -prefix-appearanceজন্য সেট করুনnone
  • text-indentকিছুটা ডানদিকে "ধাক্কা" দিতে ব্যবহার করুন
  • অবশেষে, text-overflowএকটি খালি স্ট্রিং সেট করুন । এর প্রস্থের বাইরে প্রসারিত সমস্ত কিছুই হয়ে যাবে ... কিছুই হবে না! এবং এর মধ্যে রয়েছে তীর।

এখন আপনি এটি আপনার পছন্দ মতো স্টাইল করতে পারেন :)

.selectParent {
  width: 80px;
  overflow: hidden;
}

.selectParent select {
  text-indent: 1px;
  text-overflow: '';
  width: 100px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  padding: 2px 2px 2px 2px;
  border: none;
  background: transparent url("http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png") no-repeat 60px center;
}
<div class="selectParent">
  <select>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
  </select>
</div>

জেএসফিডেলে দেখুন


6

এটি সমস্ত ব্রাউজারে কাজ করছে:

select {
    width: 268px;
    padding: 5px;
    font-size: 16px;
    line-height: 1;
    border: 0;
    border-radius: 5px;
    height: 34px;
    background: url(http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png) no-repeat right #ddd;
    appearance:none;
    -moz-appearance:none; /* Firefox */
    -webkit-appearance:none; /* Safari and Chrome */
    background-position-x: 244px;

}

9
আপনি IE কে ব্রাউজার হিসাবে বিবেচনা করবেন না। আমি আপনাকে এর জন্য ভোট দিতে চাই না।
ব্যবহারকারী 1566694

5

সিএসএস সহ লেবেলটি স্টাইল করুন এবং পয়েন্টার ইভেন্টগুলি ব্যবহার করুন:

<label>
<select>
   <option value="0">Zero</option>
   <option value="1">One</option>
</select>
</label>

এবং সম্পর্কিত সিএসএস হয়

label:after {
    content:'\25BC';
    display:inline-block;
    color:#000;
    background-color:#fff;
    margin-left:-17px;   /* remove the damn :after space */
    pointer-events:none; /* let the click pass trough */
}

আমি এখানে একটি ডাউন তীর ব্যবহার করেছি, তবে আপনি একটি পটভূমি চিত্র সহ একটি ব্লক সেট করতে পারেন। এখানে একটি কুরুচিপূর্ণ ফিডল নমুনা: https://jsfiddle.net/1rofzz89/


1

আমি এই পোস্টটি উল্লেখ করেছি , এটি আকর্ষণীয় মত কাজ করেছে , এটি বাদ দিয়ে এটি ব্রাউজারে তীরটি লুকায় না।

তবে নিম্নলিখিত যুক্ত করে আইইতে তীরটি লুকিয়ে রাখে:

&::-ms-expand {
      display: none;
    }

সম্পূর্ণ সমাধান (sass)

$select-border-color: #ccc;
$select-focus-color: green;

select {

    cursor: pointer;
    /* styling */
    background-color: white;
    border: 1px solid $select-border-color;
    border-radius: 4px;
    display: inline-block;
    font: inherit;
    line-height: 1.5em;
    padding: 0.5em 3.5em 0.5em 1em;

    /* reset */
    margin: 0;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    -webkit-appearance: none;
    -moz-appearance: none;

    background-image: linear-gradient(45deg, transparent 50%, $select-border-color 50%),
    linear-gradient(135deg, $select-border-color 50%, transparent 50%),
    linear-gradient(to right, $select-border-color, $select-border-color);
    background-position: calc(100% - 20px) calc(1em + 2px),
    calc(100% - 15px) calc(1em + 2px), calc(100% - 2.5em) 0.5em;
    background-size: 5px 5px, 5px 5px, 1px 1.5em;
    background-repeat: no-repeat;

    /* Very imp: hide arrow in IE */
    &::-ms-expand {
      display: none;
    }

    &:-moz-focusring {
      color: transparent;
      text-shadow: none;
    }

    &:focus {
      background-image: linear-gradient(45deg, $select-focus-color 50%, transparent 50%),
      linear-gradient(135deg, transparent 50%, $select-focus-color 50%), linear-gradient(to right, $select-focus-color, $select-focus-color);
      background-position: calc(100% - 15px) 1em, calc(100% - 20px) 1em, calc(100% - 2.5em) 0.5em;
      background-size: 5px 5px, 5px 5px, 1px 1.5em;
      background-repeat: no-repeat;
      border-color: $select-focus-color;
      outline: 0;
    }
  }


-1

ধরে নিন, সিলেক্টড্রপটি আপনার এইচটিএমএল ট্যাগে উপস্থিত ক্লাস। সুতরাং, এই কোডের অনেক কিছুই ডিফল্ট তীর আইকনটি পরিবর্তন করার জন্য যথেষ্ট:

.selectDrop{
      background: url(../images/icn-down-arrow-light.png) no-repeat right #ddd; /*To change default icon with provided image*/
      -webkit-appearance:none; /*For hiding default pointer of drop-down on Chrome*/
      -moz-appearance:none; /*For hiding default pointer of drop-down on Mozilla*/
      background-position-x: 90%; /*Adjust according to width of dropdown*/
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.