Коя е правилната стойност -moz-appearance за скриване на падаща стрелка на елемент ‹select›

Опитвам се да стилизирам падащата стрелка на елемент <select> само с CSS, работи перфектно в Chrome/Safari:

select {
  -webkit-appearance: button;
  -webkit-border-radius: 2px;
  -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
  -webkit-padding-end: 20px;
  -webkit-padding-start: 2px;
  -webkit-user-select: none;

  background-image: url('./select-arrow1.png') ;
  background-position: center right;
  background-repeat: no-repeat;
  border: 1px solid #AAA;
  margin: 0;
  padding-top: 2px;
  padding-bottom: 2px;
  width: 200px;
}

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

По тази логика, единственото нещо, което трябваше да направя, за да работи във Firefox, беше да добавя всички -webkit-* неща като -moz-*:

-moz-appearance: button;
-moz-border-radius: 2px;
-moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
-moz-padding-end: 20px;
-moz-padding-start: 2px;
-moz-user-select: none;

Работи на 99%, единственият проблем е, че падащата стрелка по подразбиране не изчезва и остава върху фоновото изображение както се вижда тук

Изглежда, че -moz-appearance: button; не работи за елемент <select>. Също така -moz-appearance: none; няма ефект за премахване на стрелката за падащо меню по подразбиране.

И така, каква е правилната стойност за -moz-appearance за премахване на падащата стрелка по подразбиране?

Актуализации:

11 декември 2014 г.: Спрете да измисляте нови хакове. След 4 години и половина -moz-appearance:none започва да работи след Firefox 35. Въпреки че moz-appearance:button все още е повреден, не е необходимо да го използвате така или иначе. Ето един много елементарен работещ пример.

28 април 2014 г.: Споменатата css hack работи няколко месеца, но от началото на април 2014 г. тази грешка се промъква обратно във Firefox 31.0.a1 Nightly на всички платформи.


person Tony    schedule 22.07.2011    source източник
comment
Само за да ви уведомя, че грешката е коригирана във Firefox 35 \o/   -  person MatTheCat    schedule 09.12.2014
comment
@MatTheCat уау след 4,5 години! Междувременно смених 2 приятелки, 3 кучета и 2 апартамента. Но предполагам, че трябва да сме благодарни, че най-накрая все пак го поправиха наполовина.   -  person Tony    schedule 11.12.2014
comment
Това означава, че ‹ FF35 трябва да СКРИЕМ или персонализираната стрелка, или стрелката по подразбиране. В противен случай ще видите и двете стрелки.   -  person Ben Racicot    schedule 15.01.2015


Отговори (8)


Това е момчета! ПОПРАВЕНО!


Изчакайте и вижте: https://bugzilla.mozilla.org/show_bug.cgi?id=649849

или заобиколно решение


За тези, които се чудят:

https://bugzilla.mozilla.org/show_bug.cgi?id=649849#c59

Първо, тъй като бъгът съдържа много враждебен спам, той създава враждебно работно място за всеки, който бъде назначен за това.

Второ, лицето, което има способността да направи това (което включва пренаписване), е разпределено към друг проект (b2g) за момента и няма да има време, докато този проект не се доближи до завършването.

Трето, дори когато този човек отново има време, няма гаранция, че това ще бъде приоритет, защото въпреки че webkit има това, той нарушава спецификацията за това как трябва да работи (Това ми казаха, аз лично не познавам спецификацията)

Сега вижте https://wiki.mozilla.org/B2G/Schedule_Roadmap ;)


Страницата вече не съществува и грешката не е отстранена, но приемливо решение дойде от João Cunha, можете да му благодарите за сега!

person MatTheCat    schedule 22.07.2011
comment
Благодаря! Дано скоро се оправи. Като заобиколно решение ще използвам оригиналния код в другият въпрос, на който отговори - person Tony; 22.07.2011
comment
Боже, една година по-късно и изглежда, че все още можем да чакаме. - person MatTheCat; 02.08.2012
comment
да, много е тъжно, че след година и половина статусът на този доклад за грешка остава НОВ - person Tony; 29.09.2012
comment
О, страшната грешка в позицията на стила на списъка. Използвах да го заобиколя, като присвоих display: inline на елемента на заглавката. Междувременно изцяло преминах към Chromium и се опитвам да избягвам Firefox, доколкото мога. - person Tony; 29.09.2012
comment
вече две години... затова имаме Chrome! - person Mbrevda; 12.06.2013
comment
Отговорът на Mozilla, споменат от MatTheCat, е наистина ужасяващ. Това, което те основно казват, е: Ние сме страхотни. Примири се или млъкни. - person Tony; 09.07.2013
comment
Грешката все още не е отстранена, но открих заобиколно решение, проверете отговора ми тук. И билетът за грешка също: bugzilla.mozilla.org/show_bug.cgi?id= 649849#c84 - person João Cunha; 20.08.2013
comment
Добавих връзка към отговора ви, заслужавате видимост за вашия трик! - person MatTheCat; 26.08.2013
comment
Благодаря пич! Радвам се да бъда полезен :) - person João Cunha; 26.08.2013
comment
ха! Намирам за доста смешно (и тъжно), че хората сега прилагат този вид хакове, за да поправят основни CSS грешки в това, което се нарича браузър с отворен код! Само защото властимащите отказват да коригират тази грешка. Напомня ми за всички онези хакове за IE6, които хората измислиха... - person Tony; 02.09.2013

Актуализация: това беше поправено във Firefox v35. Вижте пълната същност за подробности.


== как да скриете стрелката за избор във Firefox ==

Току-що разбрах как да го направя. Номерът е да използвате комбинация от -prefix-appearance, text-indent и text-overflow. Това е чист CSS и не изисква допълнително маркиране.

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

Накратко, като го натиснете малко надясно, преливникът се отървава от стрелката. Доста спретнато, а?

Повече подробности за тази същност, която току-що написах. Тестван на Ubuntu, Mac и Windows, всички с последните версии на Firefox.

person João Cunha    schedule 20.08.2013
comment
Това е добра работа, но изглежда не отблъсква стрелката достатъчно, когато потребителят промени прозореца за изглед на нещо по-малко от 100% - person Mathias Rechtzigel; 19.02.2014
comment
Да, така е, @MathiasaurusRex. Коя версия на ОС и браузър го тествате? Точно в този момент работя върху адаптивен формуляр и току-що потвърдих. - person João Cunha; 19.02.2014
comment
@JoãoCunha Съжалявам, изразих се погрешно. Имах предвид намаляване на увеличението на прозореца за изглед до всичко под 100%. Използвам FireFox 26.0 и работя на OSX 10.9.1, Ето един JSFiddle - jsfiddle.net/2Vtf9/1 Натискането на командата минус (-), което намалява мащаба до 90%, ще доведе до показване на падащата стрелка. - person Mathias Rechtzigel; 19.02.2014
comment
Не е твърде голям проблем, защото корекцията така или иначе е нещо като хак и mozilla просто трябва да поправи грешката. Вашата корекция и начинът, по който реагира на мащабиране, ми се струват логични! - person Mathias Rechtzigel; 19.02.2014
comment
Хей, добра находка! Ще актуализирам същността си съответно :) gist.github.com/joaocunha/6273016 - person João Cunha; 20.02.2014
comment
Бих искал само да отбележа, че това решение вече не работи от Firefox 31 (нощна компилация, май 2014 г.). Доколкото знам, в момента няма решение. - person Bendik; 14.05.2014

За да се отървете от падащата стрелка по подразбиране, използвайте:

-moz-appearance: window; 
person RD.    schedule 26.09.2012
comment
Това дори не е валидна стойност, според стойностите, посочени в developer. mozilla.org/en-US/docs/CSS/-moz-appearance и няма нужда да казвам, че не работи: i.imgur.com/w4hwD.jpg - person Tony; 29.09.2012
comment
Работи на MacOS/Firefox v 19.0.2 - person Adrian Florescu; 17.03.2013
comment
Това със сигурност работи за мен. MacOS 10.9/Firefox33.0 - person Sean Larkin; 16.10.2014
comment
Работи само на Mac OSX по някаква странна причина, определено не работи на Windows - person Erin Drummond; 05.12.2014

Опитайте да поставите opacity:0; вашият избран елемент ще бъде невидим, но опциите ще бъдат видими, когато щракнете върху него.

person Josh Byvelds    schedule 09.11.2012
comment
Ако избраният елемент е невидим, как трябва да щракнем върху опциите? Като поставите широко фоново изображение на избрания? И как да разберете коя опция току-що сте избрали? Като поставите събитие onchange и актуализирате някакъв текст на страницата? Съжалявам, но това изобщо не е отговор. Това е космат гигантски хак. - person Tony; 23.11.2012

В Mac OS -moz-appearance: window; ще премахне стрелката в съответствие с документите на MDN тук: https://developer.mozilla.org/en-US/docs/CSS/-moz-appearance. Тествано на Firefox 13 на Mac OS X 10.8.2. Вижте също: https://bugzilla.mozilla.org/show_bug.cgi?id=649849#c21.

person Joshua Davis    schedule 19.12.2012
comment
Работи на Mac, но не и на Windows. Все пак добро усилие. - person SpaceBeers; 20.06.2014

Струва си да опитате тези 2 опции по-долу, докато все още чакаме корекцията в FF35:

select {
    -moz-appearance: scrollbartrack-vertical;
}

or

select {
    -moz-appearance: treeview;
}

Те просто ще скрият всяко фоново изображение със стрелка, което сте поставили, за да персонализирате стила на вашия избран елемент. Така че получавате ужасна стандартна стрелка на браузъра вместо ужасна комбинация от стрелка на браузъра и ваша персонализирана стрелка.

person El Guapo    schedule 09.12.2014

Въпреки че все още не можете да накарате Firefox да премахне падащата стрелка (вижте публикацията на MatTheCat), можете да скриете вашето „стилизирано“ фоново изображение от показване във Firefox.

-moz-background-position: -9999px -9999px!important;

Това ще го позиционира извън рамката, оставяйки ви със стрелката на полето за избор по подразбиране – като същевременно запазвате стилизираната версия в Webkit.

person mattisahuman    schedule 12.02.2013
comment
Защо бих искал да го направя? - person Tony; 09.07.2013
comment
няма такова нещо като -moz-background-position - person billynoah; 11.10.2014
comment
можете обаче да направите @-moz-document url-prefix() { select { background-position: -9999px!important; }} - person billynoah; 11.10.2014

работи при добавяне на:

изберете {ширина:115%}

person sam    schedule 19.03.2013
comment
Това трябва да е коментар. - person Ariel Magbanua; 19.03.2013