Я знаю, что здесь уже есть целая куча ответов. Но ни один из обходных путей действительно не отвечал моим требованиям, когда я столкнулся с той же проблемой: мне нужно поместить select внутри div с фиксированной шириной. За пределами ширины он будет скрыт, и я не хочу это видеть - это просто безобразно. Когда я впервые увидел эту ссылку, я, наконец, нашел то, что хочу. Но после игры с демо я был разочарован. Уловки CSS работают немного, но они изменят ширину в целом, а не только выпадающий список. Что мне нужно, так это действительно красивый выбор, который должен выглядеть в других браузерах, кроме IE.
Я, наконец, решил это сам, используя javascript и css плюс некоторую проверку на конкретную версию. Это краткое изложение того, что я сделал:
- Используйте прозрачный div того же размера, что и выбор, чтобы покрыть выбор. Теперь мы все еще можем видеть элемент под div, но не можем щелкнуть по нему.
- Прозрачный div теперь перехватывает щелчок мышью и заполняет неупорядоченный список элементами из выбора. Затем мы показываем список прямо под оригинальным выбором. Это выглядит точно так же, как нажатие выбора в других браузерах.
- Когда элемент выбран в неупорядоченном списке, список будет скрыт, и будет выбран соответствующий элемент в исходном списке.
Этот подход требует больше кода, но он действительно моделирует "правильное" поведение выбора. Неупорядоченный список стилизован с помощью CSS, что упрощает изменение внешнего вида. Протестировано под ie7-8.
Ниже приведен скриншот рабочего проекта, который просматривается в 8: