Я пытаюсь стилизовать select
элемент с помощью CSS3. Я получаю желаемые результаты в WebKit (Chrome / Safari), но Firefox играет не очень хорошо (я даже не беспокоюсь о IE). Я использую appearance
свойство CSS3 , но по какой-то причине я не могу выкинуть выпадающий значок из Firefox.
Вот пример того, что я делаю: http://jsbin.com/aniyu4/2/edit
#dropdown {
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
background: transparent url('example.png') no-repeat right center;
padding: 2px 30px 2px 2px;
border: none;
}
Как видите, я не пытаюсь сделать что-то необычное. Я просто хочу удалить стили по умолчанию и добавить собственную стрелку раскрывающегося списка. Как я уже сказал, отлично подходит для WebKit, не очень хорошо для Firefox. По-видимому, -moz-appearance: none
не избавиться от выпадающего элемента.
Любые идеи? Нет, JavaScript не вариант
-moz-appearance
свойство CSS3, которое я использую,-moz-appearance: none;
и похоже, что оно работает в версии 35.0.1.@-moz-document url-prefix() { select { width: 105%; overflow: hidden; } }
Ответы:
Хорошо, я знаю, что этот вопрос старый, но 2 года спустя и Mozilla ничего не сделали.
Я придумал простой обходной путь.
По сути, это удаляет все форматирование поля выбора в Firefox и оборачивает элемент span вокруг поля выбора с вашим собственным стилем, но должно применяться только к Firefox.
Скажите, что это ваше меню выбора:
И давайте предположим, что класс css 'css-select' имеет вид:
В Firefox это будет отображаться вместе с меню выбора, за которым следует уродливая стрелка выбора Firefox, за которой следует ваша симпатичная стрелка. Не идеально.
Теперь, чтобы запустить это в Firefox, добавьте элемент span с классом 'css-select-moz':
Затем исправьте CSS, чтобы скрыть грязную стрелку mozilla с помощью -moz-creation: window, и добавьте пользовательскую стрелку в класс диапазона «css-select-moz», но только для отображения на mozilla, например:
Довольно круто, что я наткнулся только на эту ошибку 3 часа назад (я новичок в веб-дизайне и полностью самоучка). Однако, это сообщество косвенно оказало мне такую большую помощь, я думал, что пришло время вернуть что-то.
Я только протестировал его в Firefox (Mac) версии 18, а затем 22 (после того, как я обновил).
Все отзывы приветствуются.
источник
Обновление: это было исправлено в Firefox v35. Смотрите полную суть для деталей.
Просто разобрался, как убрать стрелку выбора из Firefox . Хитрость заключается в том, чтобы использовать смесь
-prefix-appearance
,text-indent
иtext-overflow
. Это чистый CSS и не требует дополнительной разметки.Протестировано на Windows 8, Ubuntu и Mac, последних версиях Firefox.
Живой пример: http://jsfiddle.net/joaocunha/RUEbp/1/
Больше по теме: https://gist.github.com/joaocunha/6273016
источник
padding-right:10px;
к<select>
завещанию «толкнуть» теперь невидимую стрелку слева. Итог: Firefox прячет стрелу, Chrome удаляет ее. Буду обновлять мои записи соответственно, спасибо за это.-moz-appearence: window
не работает с прозрачным фоном (нарисуйте некрасивую страницу, по крайней мере, на Firefox Linux)Уловка, которая работает для меня, состоит в том, чтобы сделать ширину выделения более 100% и применить переполнение: скрытый
Это единственный способ скрыть стрелку раскрывающегося списка в FF.
КСТАТИ. если вы хотите красивые выпадающие списки, используйте http://harvesthq.github.com/chosen/
источник
Важное обновление:
Начиная с Firefox V35 свойство внешнего вида теперь работает !!
Из официальных заметок о выпуске Firefox на V35 :
Так что теперь, чтобы скрыть стрелку по умолчанию - это так же просто, как добавить следующие правила для нашего элемента select:
DEMO
источник
Мы нашли простой и достойный способ сделать это. Это кросс-браузер, разлагаемый и не нарушает форму сообщения. Сначала установите флажок выбора
opacity
в0
.это так, что вы все еще можете нажать на него
Затем сделайте div с теми же размерами, что и поле выбора. Div должен лежать под окном выбора в качестве фона. Используйте
{ position: absolute }
иz-index
для этого.Обновите div div innerHTML с помощью JavaScript. Easypeasy с помощью jQuery:
Это оно! Просто стиль вашего div вместо поля выбора. Я не тестировал приведенный выше код, поэтому вам, возможно, понадобится настроить его. Но, надеюсь, вы понимаете суть.
Я думаю, что это решение бьет
{-webkit-appearance: none;}
. То, что браузеры должны делать в лучшем случае, это диктовать взаимодействие с элементами формы, но определенно не то, как они изначально отображаются на странице, поскольку это нарушает дизайн сайта.источник
Попробуйте так:
Затем вы можете использовать другое изображение в качестве фона и разместить его:
Есть еще один способ для браузеров Moz:
Если у вас есть определенная ширина, которую вы выбираете, это свойство будет нажимать кнопку раскрывающегося списка по умолчанию под областью выбора.
Меня устраивает! ;)
источник
Хотя это и не полное решение, я обнаружил, что ...
... работает в некоторой степени. Вы не можете изменить фон (-color или -image), но элемент можно сделать невидимым с помощью color: transparent. Не идеально, но это начало, и вам не нужно заменять элемент системного уровня на элемент js.
источник
window
имело эффект, к сожалению, мне нужно было установить фоновое изображение. К сожалению, это не очень хорошо в Firefox.media="print"
блок cssselect {-moz-appearance: window;}
и удалите стрелки и фоны всех выделений в FF (для других браузеров попробуйте внешний вид или -webkit-появление), чтобы они выглядели как обычный текст или заголовкиЯ думаю, что нашел решение, совместимое с FF31 !!!
Вот два варианта, которые хорошо объяснены по этой ссылке:
http://www.currelis.com/hiding-select-arrow-firefox-30.html
Я использовал вариант 1: Родриго-Луджеро опубликовал это исправление на Github, включая онлайн демо. Я протестировал эту демонстрацию на Firefox 31.0, и она, кажется, работает правильно. Проверено на Chrome и IE. Вот HTML-код:
и CSS:
http://jsbin.com/pozomu/4/edit
Это очень хорошо работает для меня!
источник
К сожалению для вас это является «что - то фантазии». Обычно это не место для авторов веб-сайтов, чтобы перепроектировать элементы формы. Многие браузеры нарочно не позволяют вам стилизовать их, чтобы пользователь мог видеть элементы управления ОС, к которым он привык.
Единственный способ сделать это последовательно через браузеры и операционные системы, это использовать JavaScript и заменить
select
элементы на «DHTML».В следующей статье показаны три плагина на основе jQuery, которые позволяют вам это делать (он немного староват, но сейчас я не могу найти ничего актуального)
http://www.queness.com/post/204/25-jquery-plugins-that-enhance-and-beautify-html-form-elements#1
источник
appearance
свойства в том, чтобы дать разработчикам контроль над внешним видом элементов формы, потому что использование JavaScript для этого является ужасным решением. Браузеры не должны принимать решение о том, как что-то выглядит на странице - это решение UX, а не решение поставщика браузера. К сожалению, пока что это не очень хорошо поддерживается. Может быть, в другой год.источник
Мне нравится этот стиль
Это работает для меня в FF, Safari и Chrome во всех версиях, которые я тестировал.
В IE я положил:
Также вы можете: .yourclass :: - ms-expand {display: none; } .yourid :: - ms-exapan {display: none; }
источник
Я знаю, что этот вопрос немного старый, но так как он появляется в Google, и это «новое» решение:
appearance: normal
Кажется, работает нормально в Firefox для меня (версия 5 сейчас). но не в опере и IE8 / 9В качестве обходного пути для Opera и IE9 я использовал
:before
псевдоселектор для создания нового белого поля и поместил его поверх стрелки.К сожалению, в IE8 это не работает. Поле отображается правильно, но стрелка все равно торчит ...: - /
Использование
select:before
прекрасно работает в Opera, но не в IE. Если я смотрю на инструменты разработчика, я вижу, что они правильно читают правила, а затем просто игнорируют их (они вычеркнуты). Поэтому я использую<span class="selectwrap">
вокруг фактического<select>
.Возможно, вам придется немного подправить это, но это работает для меня!
Отказ от ответственности: я использую это, чтобы получить красивую печатную копию веб-страницы с формами, поэтому мне не нужно создавать вторую страницу. Я не 1337 haxx0r, который хочет красные полосы прокрутки,
<marquee>
теги и еще много чего :-). Пожалуйста , не применяйте чрезмерную стилизацию к формам, если у вас нет веских причин.источник
-moz-appearance: normal
не кажется допустимым в Fx 9, и-moz-appearance: none
(который действителен) не удаляет стрелку вниз.<select> hi
.Используйте
pointer-events
собственность.Идея состоит в том, чтобы наложить элемент на собственную стрелку раскрывающегося списка (чтобы создать нашу собственную), а затем запретить указатель на него. [см. этот пост ]
Вот рабочая скрипка использующая этот метод.
Кроме того, в этом SO ответе я обсудил этот и другой метод более подробно.
источник
Это работает (проверено на Firefox 23.0.1):
источник
radio-container
значение для выбранного объекта. Просмотрите ссылку mozilla -moz-Appearance, чтобы получить соответствующее значение (я использовал,menulist-text
который скрывает стрелку выбора в FF 31)опираясь на ответ @ JoãoCunha, один стиль CSS, который полезен для более чем одного браузера
источник
В дополнение к ответу Joao Cunha , эта проблема в настоящее время включена в список дел Mozilla и предназначена для версии 35.
Для тех, кто желает, вот обходной путь Тодда Паркера, на который ссылается блог Куньи, который работает сегодня:
http://jsfiddle.net/xvushd7x/
HTML:
CSS:
источник
С Firefox 35 "
-moz-appearance:none
», который вы уже написали в своем коде, наконец удалите кнопку со стрелкой, как вам нужно.Это была ошибка, решенная с этой версии.
источник
Много дискуссий происходит здесь и там, но я не вижу правильного решения этой проблемы. Наконец закончилась написанием небольшого кода Jquery + CSS для выполнения этого HACK на IE и Firefox.
Рассчитать ширину элемента (SELECT Element) с помощью Jquery. Добавьте обертку вокруг элемента Select и держите переполнение скрытым для этого элемента. Убедитесь, что ширина этой обертки - appox. На 25 пикселей меньше, чем у элемента SELECT. Это можно легко сделать с помощью Jquery. Так что теперь наша икона ушла ..! и пришло время добавить наш значок изображения на элемент SELECT ... !!! Просто добавьте несколько простых строк для добавления фона, и все готово! Убедитесь, что вы используете переполнение, скрытое для внешней оболочки,
Вот пример кода, который был сделан для Drupal. Однако может быть использован для других, также удалив несколько строк кода, специфичных для Drupal.
Решение работает на всех браузерах IE, Chrome и Firefox. Не нужно добавлять хаки фиксированной ширины с помощью CSS. Все это обрабатывается динамически с использованием JQuery.
Более подробно описано по адресу: - http://northwebstudio.com/blogs/1/jquery/remove-drop-down-arrow-html-select-element-using-jquery-and-css
источник
попробуйте это CSS
Это работает
источник
appearance
Свойство из CSS3 не допускаетnone
значения. Взгляните на ссылку W3C . Итак, то, что вы пытаетесь сделать, недопустимо (действительно, Chrome тоже не должен это принимать).К сожалению, у нас действительно нет кросс-браузерного решения, чтобы скрыть эту стрелку, используя чистый CSS. Как указано, вам понадобится JavaScript.
Я предлагаю вам рассмотреть возможность использования плагина selectBox jQuery . Это очень легко и красиво сделано.
источник
none
это значение, которое Firefox утверждает, что поддерживает: developer.mozilla.org/en/CSS/-moz-appearance Хотя в прошлом стилизация элементов формы в прошлом была возможна только через JavaScript, весь смысл этогоappearance
свойства - отойти От этого. Поставщики браузеров не должны принимать решения UX для разработчиков. К сожалению, кажется, что это все еще слишком ново для эффективного использования.-moz
принимаетnone
(даже если это сработало), было бы неправильно использовать его. Еще больше о браузере, таком как Firefox, который всегда хвастался, точно следуя стандартам.Вы можете увеличить ширину поля и переместить стрелку ближе к левой части стрелки. это тогда позволяет вам покрыть стрелку пустым белым делителем.
Посмотрите: http://jsbin.com/aniyu4/86/edit
источник
Примете ли вы незначительные изменения в HTML?
Что-то вроде размещения тега div, содержащего тег select.
Взглянуть.
источник
Или вы можете закрепить выбор. Что-то вроде:
Это должно обрезать 30px правой стороны поля выбора, убрав стрелку. Теперь добавьте фоновое изображение 170px и вуаля в стиле select
источник
Это огромный взлом, но
-moz-appearance: menulist-text
может сработать.источник
У меня была такая же проблема. Легко заставить его работать на FF и Chrome, но на IE (8+, который мы должны поддерживать) все усложняется. Самое простое решение, которое я мог найти для пользовательских элементов select, которые работают «везде, где я пробовал», включая IE8, - это использование .customSelect ()
источник
Полезным для меня хаком является установка (выбор) дисплея в
inline-flex
. Вырезает стрелку прямо из моей кнопки выбора. Без всего добавленного кода.-webkit appearance
все еще нужен для Chrome и т.д ...источник
Ответ Джордана Янга самый лучший. Но если вы не можете или не хотите менять свой HTML, вы можете просто удалить пользовательскую стрелку вниз, используемую в Chrome, Safari и т. Д., И оставить стрелку по умолчанию в Firefox, но без двойных стрелок. Не идеально, но хорошее быстрое исправление, которое не добавляет HTML и не ставит под угрозу ваш внешний вид в других браузерах.
CSS:
источник
hackity hack ... решение, которое работает во всех протестированных мной браузерах (Safari, Firefox, Chrome). У вас не должно быть никаких IE, поэтому было бы неплохо, если бы вы могли протестировать и прокомментировать:
CSS, с изображением в кодировке URL:
http://codepen.io/anon/pen/myPEBy
Я использую: after-element, чтобы скрыть уродливую стрелку. Так как select не поддерживает: после, мне нужна оболочка для работы. Теперь, если вы нажмете на стрелку, выпадающий список не зарегистрирует его ... если ваш браузер не поддерживает
pointer-events: none
, что делают все, кроме IE10: http://caniuse.com/#feat=pointer-eventsТак что для меня это идеально - хорошее, чистое решение с низким уровнем головной боли, по крайней мере, по сравнению со всеми другими опциями, которые включают в себя javascript.
ТЛ; др:
Если пользователи IE10 (или ниже) нажмут на стрелку, это не сработает. Работает достаточно хорошо для меня ...
источник
Если вы не возражаете возиться с JS, я написал небольшой плагин jQuery, который поможет вам это сделать. С ним вам не нужно беспокоиться о префиксах вендоров.
Скрипка здесь: JS Fiddle
Условие состоит в том, что вы должны стилизовать выделение с нуля (это означает задание фона и границы), но вы все равно, вероятно, захотите это сделать.
Кроме того, поскольку функция заменяет исходное выделение на div, вы потеряете все стили, сделанные непосредственно в селекторе выбора в вашем CSS. Так что дайте элементу выбора класс и стилизуйте его.
Поддерживает большинство современных браузеров, если вы хотите использовать более старые браузеры, вы можете попробовать более старую версию jQuery, но, возможно, придется заменить on () на bind () в функции (не проверено)
источник
Другие ответы, казалось, не работали для меня, но я нашел этот взлом. Это сработало для меня (июль 2014)
В моем случае у меня также было поле ввода woocommerce, поэтому я использовал это
Обновил мой ответ, чтобы показать выбор, а не ввод
источник