Ответ 1
Это работает для меня (стили первый вид не выпадающий список):
select {
-webkit-appearance: none;
-webkit-border-radius: 0px;
}
Таблица стилей пользователя-агента для Chrome дает граничный радиус 5 пикселей для всех углов элемента <select>
. Я попытался избавиться от этого, применив радиус 0px через мою внешнюю таблицу стилей, а также встроенный в сам элемент; Я пробовал как border-radius:0px
, так и -webkit-border-radius:0px;
, и я попробовал еще более конкретный border-top-left-radius:0px
(вместе с ним - эквивалент -webkit).
Не работают.
Когда я исследую элемент в инструментах разработчика webkit, Computed Style по-прежнему отображает радиус как 5px. Но если щелкнуть стрелку расширителя рядом с ней, чтобы увидеть специфику, она читает: element.style - 0px. И ниже это показывает внешнюю спецификацию css, которую я дал 0px, а также спецификацию стилей пользовательского агента 5px. И обе эти последние два вычеркнуты, как и должно быть.
Любые идеи?
Это работает для меня (стили первый вид не выпадающий список):
select {
-webkit-appearance: none;
-webkit-border-radius: 0px;
}
Просто мое решение с выпадающим изображением (inline svg)
select.form-control {
-webkit-appearance: none;
-webkit-border-radius: 0px;
background-image: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='24' height='24' viewBox='0 0 24 24'><path fill='#444' d='M7.406 7.828l4.594 4.594 4.594-4.594 1.406 1.406-6 6-6-6z'></path></svg>");
background-position: 100% 50%;
background-repeat: no-repeat;
}
Альтернатива (поскольку вышеупомянутый не работает с последним firefox)
select.form-control {
-webkit-appearance: none;
-moz-appearance: none;
-webkit-border-radius: 0px;
background-image: url("https://image.flaticon.com/icons/svg/60/60781.svg");
background-position: 99% 50%;
background-repeat: no-repeat;
background-size: 16px;
}
Я использую bootstrap, поэтому я использовал select.form-control
Вместо этого вы можете использовать select{
или select.your-custom-class{
.
Если вы хотите квадратные границы и все еще хотите стрелку маленького расширителя, я рекомендую следующее:
select.squarecorners{
border: 0;
outline: 1px solid #CCC;
background-color: white;
}
В то время как верхний ответ удаляет границу, он также удаляет стрелку, что делает ее чрезвычайно трудной, если не невозможной для пользователя, чтобы идентифицировать элемент как выбор.
Мое решение состояло в том, чтобы просто поместить белый div (с граничным радиусом: 0px) за выделение. Установите его положение на абсолютное, его высоту на высоту выделения, и вам должно быть хорошо идти!
Некоторые хорошие решения здесь, но для этого не нужен SVG, он сохраняет границу через outline
и устанавливает ее на кнопку.
select {
height: 20px;
-webkit-border-radius: 0;
border: 0;
outline: 1px solid #ccc;
outline-offset: -1px;
}
<select>
<option>Apple</option>
<option>Ball</option>
<option>Cat</option>
</select>
Вставка теневого окна делает трюк.
select{
-webkit-appearance: none;
box-shadow: inset 0px 0px 0px 4px;
border-radius: 0px;
border: none;
padding:20px 150px 20px 10px;
}
По какой-то причине на самом деле это повлияло на цвет границы??? Когда вы используете стандартный цвет, углы остаются округлыми, но если вы слегка меняете цвет, округление уходит.
select.regularcolor {
border-color: rgb(169, 169, 169);
}
select.offcolor {
border-color: rgb(170, 170, 170);
}
Ну, я получил решение. надеюсь, это может помочь вам:)
select{
border-image: url(http://www.w3schools.com/cssref/border.png) 30 stretch;
width: 120px;
height: 36px;
color: #999;
}
<select>
<option value="1">Hi</option>
<option value="2">Bye</option>
</select>
Следует избегать устранения стрелок. Решение, которое сохраняет стрелки раскрывающегося списка, - это сначала удалить стили из раскрывающегося списка:
.myDropdown {
background-color: #yourbg;
border-style: none;
}
Затем создайте div непосредственно перед выпадающим списком в вашем HTML:
<div class="myDiv"></div>
<select class="myDropdown...">...</select>
И стиль div как это:
.myDiv {
background-color: #yourbg;
border-style: none;
position: absolute;
display: inline;
border: 1px solid #acolor;
}
Дисплей inline будет держать div от перехода на новую строку, абсолютная позиция удаляет его из потока страницы. Конечный результат - это приятное чистое подчеркивание, которое вы можете стилизовать по своему желанию, а выпадающее меню по-прежнему ведет себя так, как ожидал пользователь.
firefox: 18
.squaredcorners {
-moz-appearance: none;
}
Задайте CSS как
border-radius:0px !important
-webkit-border-radius:0px !important
border-top-left-radius:0px !important
Попробуйте, если он работает.