Подтвердить что ты не робот

Как скрыть стрелку <select> в Firefox 30+?

Этот хак, используемый для работы в <= Firefox 29 для удаления стрелки <select>:

text-overflow: '';
text-indent: 0.01px;
-moz-appearance: none;

Он больше не работает в Firefox 30. Arrow возвращается.

Кто-нибудь знает способ достижения такого же эффекта?

Примечание1: меня не интересуют решения, которые накладывают стрелку на другой элемент или решения, которые вставляют элемент select и выполняют переполнение: hidden.

Примечание2: Я пробовал все возможности -moz-appearance. Они либо добавляют стиль по умолчанию, который я не могу переопределить, не позволяйте настраивать стиль (например, границы и фон), или стрелка все еще видна.

Обновить: он работает снова в Firefox 35 (в настоящее время в бета-версии) с помощью -moz-appearance: none, что делает этот взгляд согласованным во всех последних браузерах (протестировано в IE11, Firefox 35b, Chrome 39, Safari 8): http://jsfiddle.net/phd5pu9x/

4b9b3361

Ответ 1

Я исправил эту проблему, предоставив некоторый стиль div и выбрав индивидуально.

Любой может изменить свою ширину и другие свойства стиля a/c.:)

Вот сценарий js для него. JSFIDDLE

<div  class="common-dropdown-small-div" style="width: 220px">
<select id="select" class="common-dropdown-project-select">
    <option>
        apple
    </option>
    <option>
        blackberry
    </option>
    <option>
       pumpkin
    </option>
</select>

.common-dropdown-small-div{
border: 1px solid rgb(208, 208, 208);
overflow: hidden; 
width: 220px;  }

.common-dropdown-project-select{
  width: 100% !important;
background-image: url("http://upload.wikimedia.org/wikipedia/en/f/f1/Down_Arrow_Icon.png");
background-position: 97% 60%, 0 0 ! important;    
 background-repeat: no-repeat;
background-size: 25px 16px;
border: none  ! important;    
outline : medium none !important;
display: inline-flex !important;
height: 33px !important;
vertical-align: top;
-webkit-appearance: none; }

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

Ответ 2

Поместите выбор в другой контейнер с переполнением: hiden;, сделайте выбор более широким, чем контейнер. Если вы хотите, чтобы граница добавила его в контейнер.

Примером является селектор внизу этой страницы: https://mozillians.org/en-US/

Ответ 3

Вы можете использовать это решение для firefox, используя псевдо-класс поставщика: -moz-any() и события указателя только для mozilla и не влияют на другие браузеры, потому что оба действуют с версии 3.6.

Вот пример jsbin http://jsbin.com/pozomu/4/edit

Ответ 4

/* Для mozilla Firefox 30.0+ я использовал следующее, чтобы скрыть вновь появляющуюся стрелку: */

@- moz-document url-prefix() {

.yourClass:after {
    position: absolute;
    margin-left: -25px;
    border-radius: 4px;
    content: url('../images/pathToYourDownArrowImage.svg');
    pointer-events: none;
    overflow: hidden;
}

/* Я все еще использую это, чтобы переместить текст поверх */

.yourClass select {
    text-overflow: '';
    text-indent: -1px;
    -moz-appearance: none;
    background: none;
}

}

Ответ 5

Firefox > 29 -moz-appearance: none; но у меня проблема с шириной, мы расширяем ширину выделения от 100 до 110%, чтобы скрыть, но она влияет на дизайн форм, поэтому я просто спрячу его с div и выше,

Проверьте версию кодекса

http://codepen.io/ssbalakumar/pen/jgLEq

Ответ 6

Как @mircea c ссылается на...

Если ваш HTML выглядит так:

<div class="styled-select">
   <select>
     <option>Here is the first option</option>
     <option>The second option</option>
     <option>The thrid option</option>
   </select>
</div>

Затем вы можете удалить стрелку раскрывающегося списка в Firefox 30 +

.styled-select { 
  overflow: hidden; 
  width: 200px;
}

@-moz-document url-prefix(){
  .styled-select select { width: 110%; }
}

Рабочая демонстрация: codepen

FYI: Тот же метод работает в IE 8 и 9, просто используйте условный комментарий вместо @-moz-document url-prefix()