Видаліть радіус межі з тегу Select у завантажувальному 3


133

Це здається тривіальною проблемою, але я не можу цього зрозуміти.

На власному веб-сайті Bootstraps вони мають приклад Select.

виберіть завантажувальний інструмент



Якщо подивитися на код, схоже, на цьому елементі вибору є радіус межі 4. введіть тут опис зображення



Я сподіваюся, що зміна цього радіуса кордону на 0 потім видалить радіус межі з елемента вибору, однак, це не так - як видно на малюнку нижче.

введіть тут опис зображення



Я дослідив усі CSS, які змінюють цей елемент вибору, але нібито він не видаляє радіус межі.


1
Зміна радіуса кордону на .form-controlуроці добре працює для мене. bootply.com/Q7goAsFc0B
j08691

1
Навіть у вашому прикладі є закруглені кути на цьому елементі вибору ...?
Тайлер МакГінніс

2
Виявляється, це проблема із Chrome. Відкриваючи завантажувач у Firefox, він не округлий. Дивно.
Тайлер МакГінніс

Для мене працює як у Chrome, так і у FF.
j08691

1
для мене це не працює в хромі, але чудово працює у firefox
Maverick

Відповіді:


256

Ось версія, яка працює у всіх сучасних браузерах. Використовується ключ, appearance:noneякий видаляє форматування за замовчуванням. Оскільки все форматування відсутнє, вам потрібно додати назад у стрілку, яка візуально відрізняє виділене від введення. Примітка: appearanceне підтримується в IE .

Приклад роботи: https://jsfiddle.net/gs2q1c7p/

select:not([multiple]) {
    -webkit-appearance: none;
    -moz-appearance: none;
    background-position: right 50%;
    background-repeat: no-repeat;
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);
    padding: .5em;
    padding-right: 1.5em
}

#mySelect {
    border-radius: 0
}
<select id="mySelect">
    <option>Option 1</option>
    <option>Option 2</option>
</select>

На основі пропозиції Арно Тенкінка в коментарях, ось приклад з використанням замість а для піктограми стрілки.

select:not([multiple]) {
    -webkit-appearance: none;
    -moz-appearance: none;
    background-position: right 50%;
    background-repeat: no-repeat;
    background-image: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="12" version="1"><path d="M4 8L0 4h8z"/></svg>');
    padding: .5em;
    padding-right: 1.5em
}

#mySelect {
    border-radius: 0
}
<select id="mySelect">
    <option>Option 1</option>
    <option>Option 2</option>
</select>


26
Це має бути справжньою відповіддю.
аволіва

1
Це краща відповідь, ніж обрана
Кріс Джеймс Шампо

7
Для цього також можна використовувати SVG. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="14px" height="12px" viewBox="0 0 14 12" enable-background="new 0 0 14 12" xml:space="preserve"> <polygon points="3.862,7.931 0,4.069 7.725,4.069 "/></svg>це економить той самий файл-простір Це також кешируемо і простіше в обслуговуванні. Скопіюйте це у файл та збережіть як .svg та використовуйте його як фон.
Арно Тенкінк

1
це відповідь.
Конрад Уорхол

2
Це, безумовно, найкраща відповідь. Я кілька разів шукав спосіб це зробити. Це має дуже допомогти, дякую! :)
jaredwilli

215

Крім того border-radius: 0, додати -webkit-appearance: none;.


2
рішення правильне - але не в змозі зрозуміти, чому це відбувається в інструментах розробників, просто неправильно. дякую за вирішення загадки чоловікові!
mmln

101
Це працює, але не ідеально, -webkit-appearance: none;спричинить відсутність індикатора стрілки в правій частині.
нігті

41
@nightire Він працював для мене , якщо ви використовуєте border: 0і додати схему , як: outline: 1px inset black; outline-offset:-1px. Триматимете стрілки, і ви можете підробити кордон контуром.
Філіпе Перейра

2
Так, це насправді не рішення, тому що, як усі сказали, стрілка селектора зникає.
Чад Джонсон

2
Не забудьте IE! :) виберіть :: - ms-expand {display: none; }
Кайл Хоук

13

У мене була така ж проблема, і коли відповідь user1732055 фіксує межу, вона видаляє стрілки, що випадають. Я вирішив це, видаливши рамку з selectелемента і створивши обгортку, spanяка має рамку.

html:

<span class="select-wrapper">
    <select class="form-control no-radius">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>
</span>

css:

select.no-radius{
    border:none;
}    
.select-wrapper{
    border: 1px solid black;
    border-radius: 0px;
}

https://jsfiddle.net/Lrqh0drd/6/


Це працює лише в тому випадку, якщо у вибору є біле тло. Інакше буде радіус, якщо використовується інший колір.
MichalCh

Привіт @MichalCh, хороший улов! Одним із способів подолати це було б встановити колір фону обгортки на те саме значення, що і елемент вибору. Ось модифікована версія на jsfiddle для демонстрації: https://jsfiddle.net/Lrqh0drd/75/
Logan Besecker

Це найчистіше рішення.
Микола Ценков

2

Можна використовувати -webkit-border-radius: 0;. Подобається це:-

-webkit-border-radius: 0;
border: 0;
outline: 1px solid grey;
outline-offset: -1px;

Це дасть квадратні кути, а також стрілки, що спадають. Використовувати -webkit-appearance: none;не рекомендується, оскільки це вимкне всі стилі, виконані Chrome.


але і з цим є проблема; не фокусується радіус обрису контуру при фокусуванні.
elquimista

@elquimista ви можете просто використовувати outline: none;для цього.
gns

0

Використовуючи SVG від @ArnoTenkink як URL-адресу даних у поєднанні з прийнятою відповіддю, це дає нам ідеальне рішення для відображення сітківки.

select.form-control:not([multiple]) {
    border-radius: 0;
    appearance: none;
    background-position: right 50%;
    background-repeat: no-repeat;
    background-image: url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%20%3C%21DOCTYPE%20svg%20PUBLIC%20%22-//W3C//DTD%20SVG%201.1//EN%22%20%22http%3A//www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd%22%3E%20%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2214px%22%20height%3D%2212px%22%20viewBox%3D%220%200%2014%2012%22%20enable-background%3D%22new%200%200%2014%2012%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpolygon%20points%3D%223.862%2C7.931%200%2C4.069%207.725%2C4.069%20%22/%3E%3C/svg%3E);
    padding: .5em;
    padding-right: 1.5em
}

-5

клас називається:

.form-control { border-radius: 0; }

не забудьте вставити заміщення після включення css для завантаження.

Якщо ви ТИЛЬНО хочете прибрати радіус при вибраному використанні елементів управління

select.form-control { ... }

замість цього

EDIT: працює для мене на chrome, firefox, opera та safari, IE9 + (усі працюють на linux / safari & IE на playonlinux)


Я спеціально показав у питанні, як я змінив радіус кордону на контролі форми, і він не спрацював ..., що саме змусило мене задати питання.
Тайлер МакГінніс

1
jsfiddle.net/Ut4y9/3 ось робоча загадка . якщо він все ще не працює на вашій машині, ви можете вказати браузер, який ви використовуєте? Я не можу відтворити вашу проблему. вибачте
jBear Graphics

Дивно. Я використовую останню версію Chrome. Очевидно, це щось конкретне, оскільки ви обидва бачите, що це змінилося. Відредагуйте свою відповідь, щоб я міг змінити свою оцінку :)
Тайлер МакГінніс

У мене те саме питання. Незважаючи на те, що я переоцінив радіус кордону, він все ще показує. Загнав мене горіхом.
користувач1732055

Це все ще стосується останнього Bootstrap 3
genkilabs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.