ลบรัศมีขอบออกจาก Select tag ใน bootstrap 3


133

ดูเหมือนจะเป็นปัญหาเล็กน้อย แต่ฉันคิดไม่ออก

ในเว็บไซต์ของ Bootstraps พวกเขามีตัวอย่างเลือก

bootstrap เลือก



เมื่อดูโค้ดดูเหมือนว่าจะมีรัศมีขอบเป็น 4 ในองค์ประกอบที่เลือกนั้น ป้อนคำอธิบายภาพที่นี่



ความหวังของฉันคือการเปลี่ยนรัศมีขอบเป็น 0 จะลบรัศมีขอบออกจากองค์ประกอบที่เลือกอย่างไรก็ตามนั่นไม่ใช่กรณี - ดังที่เห็นในภาพด้านล่าง

ป้อนคำอธิบายภาพที่นี่



ฉันได้สำรวจ CSS ทั้งหมดที่เปลี่ยนแปลงองค์ประกอบที่เลือกนั้น แต่ดูเหมือนว่าจะไม่มีการลบรัศมีขอบ


1
การเปลี่ยนรัศมีขอบของ.form-controlชั้นเรียนใช้ได้ผลดีสำหรับฉัน bootply.com/Q7goAsFc0B
j08691

1
แม้ในตัวอย่างของคุณจะมีมุมโค้งมนในองค์ประกอบที่เลือกนั้น ... ?
Tyler McGinnis

2
ปรากฎว่าเป็นปัญหากับ Chrome การเปิด bootply ของคุณใน firefox มันไม่ได้ถูกปัดเศษ แปลก.
Tyler McGinnis

ใช้ได้กับฉันทั้งใน Chrome และ FF
j08691

1
สำหรับฉันมันไม่ทำงานใน chrome แต่ใช้งานได้ดีใน 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>

ตามคำแนะนำของ Arno Tenkinkในความคิดเห็นนี่คือตัวอย่างการใช้ไฟล์ แทนที่จะเป็น สำหรับไอคอนลูกศร

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
นี่น่าจะเป็นคำตอบที่แท้จริง
avoliva

1
นี่คือคำตอบที่ดีกว่าคำตอบที่เลือก
Chris James Champeau

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 และใช้เป็นพื้นหลัง
Arno Tenkink

1
นี่คือคำตอบ
Conrad Warhol

2
นี่คือคำตอบที่ดีที่สุดแน่นอน ฉันเคยหาวิธีทำหลายครั้งแล้ว น่าจะช่วยได้มากขอบคุณ! :)
jaredwilli

215

นอกจากนี้ในการเพิ่มborder-radius: 0-webkit-appearance: none;


2
วิธีแก้ปัญหาถูกต้อง - แต่ไม่สามารถมองเห็นได้ว่าเหตุใดสิ่งนี้จึงเกิดขึ้นในเครื่องมือ dev นั้นผิดตรง ขอบคุณสำหรับการไขปริศนา!
mmln

101
ใช้งานได้ แต่ไม่สมบูรณ์แบบ-webkit-appearance: none;จะทำให้ตัวบ่งชี้ลูกศรขาดเลือกทางด้านขวา
nightire

41
@nightire มันใช้ได้ผลสำหรับฉันถ้าคุณใช้border: 0และเพิ่มโครงร่างเช่น: outline: 1px inset black; outline-offset:-1px. จะเก็บลูกศรไว้และคุณสามารถปลอมเส้นขอบด้วยโครงร่าง
Filipe Pereira

2
ใช่นี่ไม่ใช่วิธีแก้ปัญหาเพราะอย่างที่ทุกคนพูดลูกศรตัวเลือกจะหายไป
Chad Johnson

2
อย่าลืม IE! :) เลือก :: - ms-expand {display: none; }
Kyle Hawk

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 จับดี! วิธีหนึ่งในการแก้ไขปัญหานี้คือตั้งค่าสีพื้นหลังของ Wrapper เป็นค่าเดียวกับองค์ประกอบที่เลือก นี่คือเวอร์ชันแก้ไขบน jsfiddle เพื่อสาธิต: https://jsfiddle.net/Lrqh0drd/75/
Logan Besecker

นี่คือทางออกที่สะอาดที่สุด
Nikolay Tsenkov

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; }

อย่าลืมใส่การแทนที่หลังจากรวม bootstraps css แล้ว

ถ้าคุณต้องการลบรัศมีในการเลือกใช้ตัวควบคุมฟอร์มเท่านั้น

select.form-control { ... }

แทน

แก้ไข: ใช้งานได้กับ Chrome, Firefox, Opera และ Safari, IE9 + (ทั้งหมดทำงานบน linux / safari และ IE บน playonlinux)


ฉันแสดงให้เห็นโดยเฉพาะในคำถามว่าฉันเปลี่ยนรัศมีขอบในการควบคุมแบบฟอร์มได้อย่างไรและไม่ได้ผล ... ซึ่งเป็นสิ่งที่กระตุ้นให้ฉันถามคำถาม
Tyler McGinnis

1
jsfiddle.net/Ut4y9/3นี่คือซอที่ใช้งานได้ หากยังใช้งานไม่ได้ในเครื่องของคุณโปรดระบุเบราว์เซอร์ที่คุณใช้งานได้ไหม ฉันไม่สามารถจำลองปัญหาของคุณได้ ขออภัย
jBear Graphics

แปลก. ฉันใช้ Chrome เวอร์ชันล่าสุด เห็นได้ชัดว่ามันเป็นเครื่องเฉพาะเนื่องจากคุณทั้งคู่เห็นว่ามันเปลี่ยนไป แก้ไขคำตอบของคุณเพื่อที่ฉันจะได้เปลี่ยนการโหวตลงคะแนน :)
Tyler McGinnis

ฉันมีปัญหาเดียวกัน แม้ว่าฉันจะเอาชนะรัศมีขอบ แต่ก็ยังคงแสดงให้เห็น ทำให้ฉันบ้า
user1732055

นี่ยังคงเป็นเช่นนั้นกับ Bootstrap 3 ล่าสุด
genkilabs
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.