Как поместить фоновый цвет только в раздел выбора? CSS
У меня есть этот образец:
ссылка
КОД HTML:
<div class="select-style">
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</div>
CODE CSS:
.select-style {
padding: 0;
margin: 0;
border: 1px solid #ccc;
width: 120px;
border-radius: 3px;
overflow: hidden;
background-color: #fff;
background: #fff url("http://www.scottgood.com/jsg/blog.nsf/images/arrowdown.gif") no-repeat 90% 50%;
}
.select-style select {
padding: 5px 8px;
width: 130%;
border: none;
box-shadow: none;
background-color: transparent;
background-image: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.select-style select:focus {
outline: none;
}
Я поставил фотографию, чтобы лучше понять, что я хочу делать.
![введите описание изображения здесь]()
Как я могу сделать это в своей структуре?
Существует ли существующая структура? Или еще одна структура создала HTML?
Спасибо заранее!
Ответы
Ответ 1
Вам нужно что-то вроде этого?
http://codepen.io/anon/pen/bVWmgP
.select-style:after {
content: '';
background-color: #000;
position: absolute;
border-left: 3px solid #F00;
z-index: 0;
top: 0;
right: 0;
bottom: 0;
left: 85px;
}
.select-style:before {
content: '';
background-color: white;
position: absolute;
z-index: -20;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
Примечание. Вы не сможете изменить выбранные цвета стрелок без добавления дополнительного изображения, которое будет представлять эту стрелку.
Ответ 2
Вы можете использовать linear-gradient
в сочетании с background-image
.
- Свойство
background-image
позволяет сочетать url()
и linear-gradient()
, чтобы вы могли попробовать разделить значения. То же самое для background-position
, поскольку мы контролируем положение изображения URL с 95px значением, в то время как линейный градиент невозможен с центром центра.
- Использование линейного градиента. Первые 70% заполняются белым цветом фона, а остальные 30% будут светло-серыми в этом примере.
- Создайте границу, используя небольшую долю от процентного значения, т.е.
70% gray
до 71% gray
в линейном градиенте.
.select-style {
background-image: url("http://www.scottgood.com/jsg/blog.nsf/images/arrowdown.gif"), linear-gradient(to right, white 70%, gray 70%, gray 71%, lightgray 71%, lightgray 100%);
background-position: 95px center, center center;
background-repeat: no-repeat;
border: 1px solid #ccc;
border-radius: 3px;
margin: 0;
overflow: hidden;
padding: 0;
width: 120px;
}
.select-style select {
padding: 5px 8px;
width: 130%;
border: none;
box-shadow: none;
background-color: transparent;
background-image: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.select-style select:focus {
outline: none;
}
<div class="select-style">
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</div>
Ответ 3
Для этого вы можете использовать псевдоэлемент.
Прикрепите a: псевдоэлемент к div
и примените ваши желаемые свойства background-color
и border-left
. Чтобы сделать его видимым, примените background-color: transparent
к .select-style
.
.select-style {
position: relative;
padding: 0;
margin: 0;
border: 1px solid #ccc;
width: 120px;
border-radius: 3px;
overflow: hidden;
background: transparent url("http://www.scottgood.com/jsg/blog.nsf/images/arrowdown.gif") no-repeat 90% 50%;
}
.select-style select {
padding: 5px 8px;
width: 130%;
border: none;
background-color: transparent;
background-image: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.select-style select:focus {
outline: none;
}
.select-style:after {
position: absolute;
content: '';
width: 36px;
height: 100%;
background-color: #ddd;
border-left: 1px solid #ccc;
top: 0;
right: -1px;
z-index: -1;
border-radius: 0 1px 1px 0;
}
<div class="select-style">
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</div>