Показать сообщение отдельно
  #2 (permalink)  
Старый 09.07.2013, 01:11
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Mike_Kharkov
В шапке есть 2 селекта и мне необходимо что бы размеры и вертикальное центрирование было одинаковым в следующих браузерах
давно использую такой способ стилизации селектов:
<!DOCTYPE html>
<html>
  <head>
<style>
    .select-wrapper {
        position: relative;
        overflow: hidden;
        border: 1px solid #e8e8e8;
        border-radius: 5px;
        background-color: #f7f7f7;
        background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(1, #eee));
        background-image: -webkit-linear-gradient(top, #fff, #eee);
        background-image:    -moz-linear-gradient(top, #fff, #eee);
        background-image:     -ms-linear-gradient(top, #fff, #eee);
        background-image:      -o-linear-gradient(top, #fff, #eee);
        background-image:         linear-gradient(to bottom, #fff, #eee);
        filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr=#ffffff, EndColorStr=#eeeeee, GradientType=0);
        box-shadow: 0 0 4px #ccc;
		height: 22px;
        width: 150px;

        margin: 10px;
    }
    .select-wrapper select {
        position: relative;
        width: 100%;
        opacity: 0;
        /** IE7 disable style **/
        filter: expression('filter: none;');
        -ms-filter: "Alpha(opacity=0)";
        z-index: 1;
        top: 0;
        left: 0;
    }
    .select-wrapper:before {
        position: absolute;
        content: attr(data-select-value);
        white-space: nowrap;
        font-family: Tahoma, Arial;
        font-size: 12px;
        color: #000;
        height: 100%;
        width: 100%;
        margin: 4px 0 0 5px;
    }
    .select-wrapper .select-arrow {
        position: absolute;
        background: inherit;
        filter: inherit;
        top: 0;
        right: 0;
        height: 100%;
        width: 20px;
    }
    .select-wrapper .select-arrow:after {
        position: absolute;
        content: " ";
        border: 0;
        border-top: 5px solid #aaa;
        border-left: 5px solid transparent;
        border-right: 5px solid transparent;
        width: 0;
        height: 0;
        top: 50%;
        right: 4px;
        margin-top: -2px;
    }
    .select-wrapper select:focus + .select-arrow:after {
        border-top: 5px solid #555;
    }
</style>
  </head>
  <body>
<div class="select-wrapper" data-select-value="- select city -">
    <select onchange="this.parentNode.setAttribute('data-select-value', this.children[this.selectedIndex].innerHTML)">
        <option>- select city -</option>
        <option value="1">Saint-Petersburg</option>
        <option value="2">Moscow</option>
        <option value="3">New York</option>
    </select>
    <div class="select-arrow"></div>
</div>
<div class="select-wrapper" data-select-value="option 1">
    <select onchange="this.parentNode.setAttribute('data-select-value', this.children[this.selectedIndex].innerHTML)">
        <option value="ololo">option 1</option>
        <option value="hehe">option 2</option>
        <option value="lalala">option 3</option>
    </select>
    <div class="select-arrow"></div>
</div>
<div class="select-wrapper" data-select-value="option 1">
    <select onchange="this.parentNode.setAttribute('data-select-value', this.children[this.selectedIndex].innerHTML)">
        <option value="ololo">option 1</option>
        <option value="hehe">option 2</option>
        <option value="lalala">option 3</option>
    </select>
    <div class="select-arrow"></div>
</div>
<div class="select-wrapper" data-select-value="option 1">
    <select onchange="this.parentNode.setAttribute('data-select-value', this.children[this.selectedIndex].innerHTML)">
        <option value="ololo">option 1</option>
        <option value="hehe">option 2</option>
        <option value="lalala">option 3</option>
    </select>
    <div class="select-arrow"></div>
</div>
  </body>
</html>
Правда в ИЕ7 они остаются стандартными, потому как там нет псевдо-элементов after/before... Хотя лично я уже давно положил болт на ИЕ7. В остальных браузерах все пучком.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием