Если вы попытаетесь удалить стрелку раскрывающегося списка <select>, используя такое CSS-свойство, как backgroundэто не приведет к желаемому результату, поскольку большинство элементов формы являются встроенной частью браузеров и поэтому поля выбора отображаются по-разному в разных браузерах, таких как Firefox, Chrome, Safari, IE и т. д.

В этом руководстве мы настроим поле <select> так, чтобы оно отображалось одинаково во всех браузерах с помощью CSS и jQuery. На самом деле, в этом примере мы будем настраивать только часть со стрелкой раскрывающегося списка в поле выбора и оставим остальную часть как есть.

Это решение легко реализовать в любом проекте, и оно хорошо совместимо с браузерами, даже работает в Internet Explorer 7. Это настраиваемое поле выбора придает вашему веб-сайту уникальный внешний вид даже в простой форме, однако вы можете расширить этот пример, чтобы создать полностью настраиваемое поле <select>.

HTML-код

Создадим обычное поле <select> с классом .custom-select. Использование класса .custom-select обязательно для отслеживания всех поля выбора в документе, который необходимо кастомизировать, а остальные оставить по умолчанию. Давайте посмотрим на следующий пример:

<form action="action.php" method="post">
    <p>Какое ваше любимое времяпровождение:</p>        
    <select name="timepass" class="custom-select">
        <option>Выбор</option>
        <option>Вождение</option>
        <option>Интернет</option>
        <option>Фильмы</option>
        <option>Музыка</option>
        <option>Спорт</option>
    </select>
</form>

CSS-код

Что мы пытаемся сделать с помощью CSS, так это скрыть поля <select> по умолчанию с помощью CSS-свойства opacity и вместо них показать тег <span>.

Теперь поместим следующие стили в заголовок вашего HTML-документа.

<style>
    .select-wrapper{
        float: left;
        display: inline-block;
        border: 1px solid #d8d8d8;            
        background: url("arrow.png") no-repeat right center;
        cursor: pointer;
    }
    .select-wrapper, .select-wrapper select{
        width: 200px;
        height: 26px;
        line-height: 26px;
    }
    .select-wrapper:hover{
        background: url("arrow-hover.png") no-repeat right;
        border-color: #239fdb;
    }
    .select-wrapper .holder{
        display: block;
        margin: 0 35px 0 5px;
        white-space: nowrap;            
        overflow: hidden;
        cursor: pointer;
        position: relative;
        z-index: -1;
    }
    .select-wrapper select{
        margin: 0;
        position: absolute;
        z-index: 2;            
        cursor: pointer;
        outline: none;
        opacity: 0;
        /* CSS-хаки для добавления непрозрачности в старых браузерах */
        _noFocusLine: expression(this.hideFocus=true); 
        -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
        filter: alpha(opacity=0);
        -khtml-opacity: 0;
        -moz-opacity: 0;
    }
</style>

jQuery-код

Этот код jQuery будет отслеживать все поля <select> в документе, имеющие класс .custom-select, и добавлять дополнительные элементы HTML вокруг полей выбора, чтобы заменить стрелку раскрывающегося списка нашим настраиваемым раскрывающимся изображением.

Не забудьте включить jQuery в свой документ перед этим скриптом для корректной работы.

<script>
    $(document).ready(function(){
        $(".custom-select").each(function(){
            $(this).wrap( "<span class='select-wrapper'></span>" );
            $(this).after("<span class='holder'></span>");
        });
        $(".custom-select").change(function(){
            var selectedOption = $(this).find(":selected").text();
            $(this).next(".holder").text(selectedOption);
        }).trigger('change');
    })
</script>

Если в браузере отключен JavaScript, вместо настраиваемого поля выбора появится обычное поле выбора. Так что это никоим образом не нарушит ваш код.

Читайте также

Похожие посты

Как обновить страницу с помощью jQuery

Вы можете просто использовать JavaScript-метод location.reload() для обновления или перезагрузки страницы. Этот метод дополнительно принимает логический параметр true или false. Если указан параметр true, это вызывает постоянную перезагрузку страницы с сервера. Но, если установлен false (по умолчанию) или не указан, браузер может перезагрузить страницу из своего кеша. Давайте посмотрим на пример, чтобы понять, как работает…

Как изменить CSS-свойство display на none или block с помощью jQuery

Вы можете использовать jQuery-метод css(), чтобы изменить значение свойства CSS display на none, block или любое другое значение. Метод css() применяет правила стиля непосредственно к элементам, то есть к встроенным. Следующий пример изменит отображение элемента DIV при нажатии кнопки: В качестве альтернативы, если вы беспокоитесь о начальном значении свойства display элемента, но хотите переключаться между…

Как отображать и скрывать элементы div на основе раскрывающегося списка <select> в jQuery

В следующем примере показано, как отображать и скрывать элементы <div> на основе раскрывающегося списка или выбранного параметра в поле <select> с помощью jQuery-метода change() в сочетании с методами show() и hide(). Блоки <div> в этом примере по умолчанию скрыты с помощью CSS-свойства display, для которого установлено значение none.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.