Як видалити значок стрілки за замовчуванням зі спадного списку (виберіть елемент)?


297

Я хочу видалити стрілку спадного меню з <select>елемента HTML . Наприклад:

<select style="width:30px;-webkit-appearance: none;">
    <option>2000</option>
    <option>2001</option>
    <option>2002</option>
    ...
</select>

Як це зробити в Opera, Firefox та Internet Explorer?

введіть тут опис зображення


Деякі відповіді / хакі для приховування його в Firefox - stackoverflow.com/questions/5912791 / ...
andyb

2
зовнішній вигляд #slectType { -webkit-appearance: none; appearance: none /*menulist*/ ! важливі; max-width: 300px; line-height: 0px;} input[type='text'], select {max-height: 30px;max-width: 300px; text-align-last: center; /*text-indent: 5px;*/} button:hover {color: #FFF;background-color: #566977;box-shadow:none;border-color: #759AB5;} #errorMSG{z-index: 2147483647;} перегляди [CH: -webkit, FF: -moz, IE: -ms, Oprea: -o];
Яш

1
Можливий дублікат стрілки Remove Select на IE
Muath

Відповіді:


382

Немає потреби в хаках чи переповненнях. Існує псевдоелемент для стрілки, що випадає на IE:

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

22
адже питання полягало в тому, як видалити стрілку, що випадає в IE. IE9 не має цієї функціональності, але це працює в IE10. тому, якщо ви не використовуєте Windows XP, ви все одно повинні використовувати IE10. IE11 майже вийшов. інший варіант - некрасивий хакер CSS, щоб приховати фактичну кнопку спаду та зробити власну.
nrutas

2
посилання ось некрасивий хак для приховування переливу
nrutas

1
Працює в IE11. Грацій!
ConorLuddy

У Firefox це не спрацювало. Використовуйте рішення Varun Rathore нижче для Firefox.
Майже пітт

1
це лише для IE звичайно, це не працюватиме у Firefox.
nrutas

289

Згадані раніше рішення добре працюють з хромом, але не на Firefox.

Я знайшов рішення, яке добре працює як у Chrome, так і в Firefox (не в IE). Додайте наступні атрибути до CSS для свого SELECTelement та відрегулюйте верхню маржу відповідно до ваших потреб.

select {
    -webkit-appearance: none;
    -moz-appearance: none;
    text-indent: 1px;
    text-overflow: '';
}

Сподіваюся, це допомагає :)


9
Цей трюк перестав працювати над Firefox станом на версію 31 (у Nightly build станом на травень 2014 року). Подивимося, що можна зробити тим часом. Цей текст, про який я писав, має повне зменшення
Жоао Кунья,

Метод Жоао Куньї перевірено та використано успішно. Коли ви це перевірите, не забудьте відкрити посилання у firefox!
NoobishPro

Це працювало для мене. Я хотів використовувати його для wkhtmltopdf для створення pdf з html. Спасибі
Faisal

187

Простий спосіб видалити стрілку вниз з вибору

select {
  /* for Firefox */
  -moz-appearance: none;
  /* for Chrome */
  -webkit-appearance: none;
}

/* For IE10 */
select::-ms-expand {
  display: none;
}
<select>
  <option>2000</option>
  <option>2001</option>
  <option>2002</option>
</select>


4
Я щойно використовував appearance: noneдля Chrome і Firefox Quantum (v59 і вище). Тобто не немає необхідності префіксів більше .
CPHPython

2
@CPHPython Більшість браузерів цього коментаря все ще мають тег "часткова підтримка з префіксом" ...
Dan

2
@CPHPython вам потрібно мати Autoprefixer , встановлені на ваш проект для префікса appearance: noneдо роботи. Більшість браузерів все ще потребують префіксів.
Даніель Тонон

@DanielTonon о, можливо, я використовував такий пакет postcss, як це. Я точно не пам’ятаю, але, думаю, я перевірив інспектора браузера, перш ніж коментувати.
CPHPython

58

Спробуйте це :

select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding: 2px 30px 2px 2px;
    border: none;
}

JS Bin: http://jsbin.com/aniyu4/2/edit

Якщо ви використовуєте Internet Explorer:

select {
    overflow:hidden;
    width: 120%;
}

Або ви можете використовувати Choosen: http://harvesthq.github.io/chosen/


1
Ви протестували свій JSBin на IE та firefox? Я все ще бачу вбудовану стрілку спадного меню в обох.
Мартін Сміт

Зверніться до Choosen, я думаю, що це найкращий вибір.
EpokK

"Якщо ви використовуєте Internet Explorer"? Вам потрібно врахувати значну частину населення, які НЕ користуються IE та обслуговують їх незалежно
Danny Mahoney

Статистика користувачів наших сайтів така: 5,21% IE або 2,37% Edge
nu everest

"Якщо ви використовуєте IE" було б правильно, краще підходити, щоб сказати "Якщо вам потрібно підтримувати IE", але в цей день і вік ваша технологія повинна бути належним чином орієнтована на вашу аудиторію, якщо ви працюєте в Інтернеті. веб-сайт, орієнтований на розробників, тоді я сумніваюся, що вам потрібно буде підтримувати будь-які версії IE.
Брандіто

17

Спробуйте це:

HTML:

<div class="customselect">
    <select>
    <option>2000</option>
    <option>2001</option>
    <option>2002</option>
    </select>
</div>

CSS:

.customselect {
    width: 70px;
    overflow: hidden;
}

.customselect select {
   width: 100px;
   -moz-appearance: none;
   -webkit-appearance: none;
   appearance: none;
}

15

Спробуйте це працює для мене,

<style>
    select{
        border: 0 !important;  /*Removes border*/
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        text-overflow:'';
        text-indent: 0.01px; /* Removes default arrow from firefox*/
        text-overflow: "";  /*Removes default arrow from firefox*/
    }
    select::-ms-expand {
        display: none;
    }
    .select-wrapper
    {
        padding-left:0px;
        overflow:hidden;
    }
</style>
    
<div class="select-wrapper">
     <select> ... </select>
</div>

Ви не можете приховати, але використовуючи прихований перелив, ви можете фактично змусити його зникнути.


6

Просто хотілося завершити нитку. Щоб бути дуже зрозумілим, це не працює в IE9, проте ми можемо це зробити за допомогою невеликого css трюку.

<div class="customselect">
    <select>
    <option>2000</option>
    <option>2001</option>
    <option>2002</option>
    </select>
</div>

.customselect {
    width: 80px;
    overflow: hidden;
   border:1px solid;
}

.customselect select {
   width: 100px;
   border:none;
  -moz-appearance: none;
   -webkit-appearance: none;
   appearance: none;
}

5

Як я відповів у стрілці Видалити вибір на IE

У випадку, якщо ви хочете використовувати клас та псевдоклас:

.simple-control ваш клас css

:disabled є псевдоклас

select.simple-control:disabled{
         /*For FireFox*/
        -webkit-appearance: none;
        /*For Chrome*/
        -moz-appearance: none;
}

/*For IE10+*/
select:disabled.simple-control::-ms-expand {
        display: none;
}

4
select{
padding: 11px 50px 11px 10px;
background: rgba(255,255,255,1);
border-radius: 7px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
border: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
color: #8ba2d4;

}


2

Це неможливо зробити з повністю функціональною підтримкою крос-браузера.

Спробуйте взяти роздільник на 50 пікселів, припустимо, і натисніть на потрібний значок, що випадає, праворуч від цього

Тепер у цей розділ можна додати тег вибору шириною 55 пікселів (щось більше, ніж ширина контейнера)

Я думаю, ти отримаєш те, що хочеш.

Якщо ви не хочете жодної піктограми краплі праворуч, просто виконайте всі кроки, за винятком плаваючого зображення справа. Встановіть контур: 0 на фокус для тегу вибору. Це воно


1
Я не можу отримати допомогу в цих підказках. Чи може хтось тут дати адекватний код? Дякую.
user2301515

2

є бібліотека під назвою DropKick.js, яка замінює звичайні спадні місця вибору HTML / CSS, щоб ви могли повністю стилізувати та керувати ними за допомогою JavaScript. http://dropkickjs.com/


2

Працює для всіх браузерів та всіх версій:

JS

jQuery(document).ready(function () {    
    var widthOfSelect = $("#first").width();
    widthOfSelect = widthOfSelect - 13;
    //alert(widthOfSelect);
    jQuery('#first').wrap("<div id='sss' style='width: "+widthOfSelect+"px; overflow: hidden; border-right: #000 1px solid;' width=20></div>");
});

HTML

<select class="first" id="first">
  <option>option1</option>
  <option>option2</option>
  <option>option3</option>
</select>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.