এখানে তিনটি সমাধান রয়েছে:
সমাধান # 1 - উপস্থিতি: কোনওটিই নয় - ইন্টারনেট এক্সপ্লোরার 10 - 11 ওয়ার্কআউন্ড ( ডেমো ) সহ
-
appearance: none
নির্বাচিত উপাদানটিতে ডিফল্ট তীর সেটটি গোপন করতে , তার সাথে নিজের কাস্টম তীরটি যুক্ত করুনbackground-image
select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none; /* Remove default arrow */
background-image: url(...); /* Add custom arrow */
}
ব্রাউজার সমর্থন:
appearance: none
ইন্টারনেট এক্সপ্লোরার 11 (এবং পরবর্তী) এবং ফায়ারফক্স 34 (এবং পরবর্তী) বাদে খুব ভাল ব্রাউজার সমর্থন ( ক্যানিউজ ) রয়েছে।
আমরা এই কৌশলটি উন্নত করতে এবং যোগ করে ইন্টারনেট এক্সপ্লোরার 10 এবং ইন্টারনেট এক্সপ্লোরার 11 এর জন্য সমর্থন যুক্ত করতে পারি
select::-ms-expand {
display: none; /* Hide the default arrow in Internet Explorer 10 and Internet Explorer 11 */
}
ইন্টারনেট এক্সপ্লোরার 9 যদি উদ্বেগের বিষয় হয় তবে আমাদের কাছে ডিফল্ট তীরটি সরানোর কোনও উপায় নেই (যার অর্থ এখন আমাদের দুটি তীর থাকবে), তবে আমরা একটি ফানকি ইন্টারনেট এক্সপ্লোরার 9 নির্বাচক ব্যবহার করতে পারি।
কমপক্ষে আমাদের কাস্টম তীরটিকে পূর্বাবস্থায় ফেরাতে - ডিফল্ট নির্বাচন করুন তীর অক্ষত রেখে।
/* Target Internet Explorer 9 to undo the custom arrow */
@media screen and (min-width:0\0) {
select {
background-image:none\9;
padding: 5px\9;
}
}
সব একসাথে:
select {
margin: 50px;
width: 150px;
padding: 5px 35px 5px 5px;
font-size: 16px;
border: 1px solid #CCC;
height: 34px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: url(http://www.stackoverflow.com/favicon.ico) 96% / 15% no-repeat #EEE;
}
/* CAUTION: Internet Explorer hackery ahead */
select::-ms-expand {
display: none; /* Remove default arrow in Internet Explorer 10 and 11 */
}
/* Target Internet Explorer 9 to undo the custom arrow */
@media screen and (min-width:0\0) {
select {
background: none\9;
padding: 5px\9;
}
}
<select>
<option>Apples</option>
<option selected>Pineapples</option>
<option>Chocklate</option>
<option>Pancakes</option>
</select>
এই সমাধানটি সহজ এবং এতে ভাল ব্রাউজার সমর্থন রয়েছে - এটি সাধারণত যথেষ্ট।
যদি ইন্টারনেট এক্সপ্লোরার 9 (এবং পরবর্তী) এবং ফায়ারফক্স 34 (এবং তারপরে) এর জন্য ব্রাউজার সমর্থন প্রয়োজন হয় তবে পড়তে থাকুন ...
সমাধান # 2 ডিফল্ট তীরটি ( ডেমো ) আড়াল করতে নির্বাচনের উপাদানটি কেটে দিন
-
(এখানে আরও পড়ুন)
select
একটি নির্দিষ্ট প্রস্থ এবং একটি ডিভ মধ্যে উপাদান মোড়ানো overflow:hidden
।
তারপরে select
উপাদানটি ডিভের চেয়ে প্রায় 20 পিক্সেলের বেশি প্রস্থ দিন ।
ফলাফলটি হ'ল select
উপাদানটির ডিফল্ট ড্রপ-ডাউন তীরটি লুকানো থাকবে (ধারকটিতে থাকা কারণে overflow:hidden
) এবং আপনি যে কোনও পটভূমি চিত্রটি ডিভের ডানদিকে রেখে দিতে পারেন।
সুবিধা এই পদ্ধতির এটি ক্রস ব্রাউজার (ইন্টারনেট এক্সপ্লোরার 8 এবং পরে, হয় ওয়েবকিট এবং গেকো )। যাইহোক, এই পদ্ধতির অসুবিধাটি হ'ল বিকল্পগুলি ড্রপ-ডাউনটি ডান হাতের দিক থেকে বেরিয়ে আসে (20 পিক্সেল যা আমরা লুকিয়ে রেখেছি ... কারণ বিকল্প উপাদানগুলি নির্বাচনের উপাদানটির প্রস্থ নেয়)।
[তবে এটি লক্ষ করা উচিত যে যদি কাস্টম সিলেক্ট উপাদানটি কেবল মোবাইল ডিভাইসের জন্য প্রয়োজনীয় হয় - তবে উপরের সমস্যাটি প্রযোজ্য না - কারণ প্রতিটি ফোন দেশীয়ভাবে নির্বাচিত উপাদানটি খুলবে। মোবাইলের জন্য, এটি সেরা সমাধান হতে পারে]]
.styled select {
background: transparent;
width: 150px;
font-size: 16px;
border: 1px solid #CCC;
height: 34px;
}
.styled {
margin: 50px;
width: 120px;
height: 34px;
border: 1px solid #111;
border-radius: 3px;
overflow: hidden;
background: url(http://www.stackoverflow.com/favicon.ico) 96% / 20% no-repeat #EEE;
}
<div class="styled">
<select>
<option>Pineapples</option>
<option selected>Apples</option>
<option>Chocklate</option>
<option>Pancakes</option>
</select>
</div>
ফায়ারফক্সে কাস্টম তীরটি যদি প্রয়োজনীয় হয় - সংস্করণ 35 এর পূর্বে - তবে আপনার ইন্টারনেট এক্সপ্লোরারের পুরানো সংস্করণগুলি সমর্থন করার প্রয়োজন নেই - তবে পড়া চালিয়ে যান ...
সমাধান # 3 - pointer-events
সম্পত্তি ( ডেমো ) ব্যবহার করুন
-
(এখানে আরও পড়ুন)
এখানে ধারণাটি হ'ল নেটিভ ড্রপ ডাউন তীর (আমাদের কাস্টমটি তৈরি করতে) এর উপরে কোনও উপাদানকে ওভারলে করা এবং তারপরে পয়েন্টার ইভেন্টগুলিকে বারণ করা।
সুবিধা: এটি ওয়েবকিট এবং গেকোতে ভাল কাজ করে। এটি দেখতেও খুব ভাল লাগে ( option
উপাদানগুলি বের করে দেয় না)।
অসুবিধা: ইন্টারনেট এক্সপ্লোরার (ইন্টারনেট এক্সপ্লোরার 10 এবং নীচে) সমর্থন করে না pointer-events
, যার অর্থ আপনি কাস্টম তীরটি ক্লিক করতে পারবেন না। এছাড়াও, এই পদ্ধতির সাথে আরেকটি (স্পষ্ট) অসুবিধা হ'ল আপনি আপনার নতুন তীর চিত্রটিকে হোভার ইফেক্ট বা হ্যান্ড কার্সার দিয়ে লক্ষ্য করতে পারবেন না, কারণ আমরা তাদের উপরে পয়েন্টার ইভেন্টগুলি কেবল অক্ষম করেছি!
তবে এই পদ্ধতির সাহায্যে আপনি আধুনিকায়িত বা শর্তসাপেক্ষ মন্তব্যগুলি ইন্টারনেট এক্সপ্লোরারকে তীরের মধ্যে নির্মিত মানটিতে ফিরিয়ে আনতে পারেন।
এনবি: ইন্টারনেট এক্সপ্লোরার 10 হওয়ায় conditional comments
আর সমর্থন করে না: আপনি যদি এই পদ্ধতির ব্যবহার করতে চান তবে আপনার সম্ভবত মডার্নজার ব্যবহার করা উচিত । তবে, এখানে বর্ণিত সিএসএস হ্যাকের সাহায্যে ইন্টারনেট এক্সপ্লোরার 10 থেকে পয়েন্টার-ইভেন্টস সিএসএস বাদ দেওয়া সম্ভব ।
.notIE {
position: relative;
display: inline-block;
}
select {
display: inline-block;
height: 30px;
width: 150px;
outline: none;
color: #74646E;
border: 1px solid #C8BFC4;
border-radius: 4px;
box-shadow: inset 1px 1px 2px #DDD8DC;
background: #FFF;
}
/* Select arrow styling */
.notIE .fancyArrow {
width: 23px;
height: 28px;
position: absolute;
display: inline-block;
top: 1px;
right: 3px;
background: url(http://www.stackoverflow.com/favicon.ico) right / 90% no-repeat #FFF;
pointer-events: none;
}
/*target Internet Explorer 9 and Internet Explorer 10:*/
@media screen and (min-width: 0\0) {
.notIE .fancyArrow {
display: none;
}
}
<!--[if !IE]> -->
<div class="notIE">
<!-- <![endif]-->
<span class="fancyArrow"></span>
<select>
<option>Apples</option>
<option selected>Pineapples</option>
<option>Chocklate</option>
<option>Pancakes</option>
</select>
<!--[if !IE]> -->
</div>
<!-- <![endif]-->