ลบ Safari / Chrome textinput / textarea glow


337

ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะลบการเรืองแสงสีน้ำเงินและสีเหลืองเริ่มต้นเมื่อฉันคลิกที่พื้นที่ป้อนข้อความ / ข้อความโดยใช้ CSS?


6
@Steve อีกเหตุผลที่ปิดใช้งานคือหากคุณต้องการให้เอฟเฟกต์เรืองแสงทำงานในเบราว์เซอร์ทั้งหมดโดยใช้: โฟกัสแทนรูปแบบเค้าโครงที่ไม่สนับสนุน
Langdon

90
มันน่ารำคาญจริง ๆ เมื่อผู้คนเริ่มการสนทนาทางปรัชญาว่าบางสิ่งนั้นเป็น "สิ่งที่ถูกต้องหรือไม่" เมื่อคำถามนั้นเป็นคำถามทางเทคนิค
ทิม

2
ฉันกำลังสร้างสเปรดชีตออนไลน์สตีฟดังนั้นมันจึงเหมาะสำหรับการใช้งานของฉัน ขึ้นอยู่กับว่า แต่ถ้าเป็นเพียงรูปแบบที่เรียบง่ายคุณควรปล่อยให้เค้าร่างมันเป็น
william44isme

4
ฉันคิดว่ามันโอเคที่จะปิดการใช้งานและกำหนดเองได้อย่างสมบูรณ์แบบ: เอฟเฟ็กต์โฟกัสกับ css ...
ithil

นอกจากนี้การรู้วิธีปิดใช้งานบางอย่างไม่ได้หมายความว่าจะไม่สามารถย้อนกลับได้ ทุกคนที่ทำงานให้กับลูกค้าใด ๆ รู้ว่าพวกเขาอาจต้องการที่จะเห็นสิ่งที่แสดงในทางเดียวและจากนั้นเปลี่ยนกลับไปเป็นวิธีเดิม / เริ่มต้น การบรรยายเรื่องการเข้าถึงได้จะไม่เปลี่ยนความปรารถนานั้นหรือทำให้ทุกคนมีความสุข
JakeGould

คำตอบ:


623
textarea, select, input, button { outline: none; }

แม้ว่าจะเป็นที่ถกเถียงกันอยู่ว่าการรักษาแสง / โครงร่างนั้นเป็นประโยชน์สำหรับการเข้าถึงได้จริง ๆ เพราะสามารถช่วยให้ผู้ใช้เห็นว่าองค์ประกอบใดที่เน้นอยู่ในปัจจุบัน

นอกจากนี้คุณยังสามารถใช้องค์ประกอบหลอก ': โฟกัส' เพื่อกำหนดเป้าหมายอินพุตเฉพาะเมื่อผู้ใช้เลือก

ตัวอย่าง: https://jsfiddle.net/JohnnyWalkerDesign/xm3zu0cf/


2
สมบูรณ์แบบขอบคุณมาก ฉันยังสามารถลบตัวเลือกการปรับขนาด textarea ด้วย (ที่ด้านล่างขวาของ textarea) ได้หรือไม่?
Alec Smart

3
+1 สำหรับข้อควรระวัง; โปรดหลีกเลี่ยงการทำสิ่งใด ๆ ที่ทำให้ผู้ใช้คาดหวังไม่ได้ว่าแพลตฟอร์มของพวกเขาจะมีประสิทธิภาพอย่างไร คุณอาจได้รับอันตรายจากการเพิ่มผลิตผลและทำให้เว็บไซต์ของคุณใช้งานได้ยากขึ้น
Rob

6
ลบตัวเลือกการปรับขนาด chrome / ซาฟารี textarea ของฉันที่อันตรายของคุณเอง! ฉันพบว่ามันมีประโยชน์จริง ๆ ที่ขาดไม่ได้แม้ในบางไซต์
JeeBee

5
สำหรับการกำจัดที่จับปรับขนาด: ปรับขนาด: ไม่มี;
แดเนียล

22
กล่องเงา: none;
รูปแบบ

92

ผลกระทบนี้สามารถเกิดขึ้นได้กับองค์ประกอบที่ไม่ใช่อินพุตเช่นกัน ฉันพบว่างานต่อไปนี้เป็นวิธีแก้ปัญหาทั่วไปที่มากกว่า

:focus {
  outline-color: transparent;
  outline-style: none;
}

อัปเดต:คุณอาจไม่ต้องใช้:focusตัวเลือก หากคุณมีองค์ประกอบพูด<div id="mydiv">stuff</div>และคุณได้รับการเรืองแสงด้านนอกในองค์ประกอบ div นี้ให้ใช้เหมือนปกติ:

#mydiv {
  outline-color: transparent;
  outline-style: none;
}

ใช้งานได้ตัวอย่างเช่น<button>องค์ประกอบที่ไม่ได้รับประโยชน์จากการเน้นเป้าหมายเนื่องจากส่วนใหญ่คุณคลิกไปแล้ว
kasimir

1
คำตอบที่ยอมรับไม่ได้สำหรับฉันบน Chrome บน OSX วิธีนี้แก้ปัญหาได้
บาร์ต

ด้วยการใช้เทคนิคนี้คุณสามารถรักษาโฟกัสได้ แต่กำหนดค่าของโครงร่างใหม่ให้เป็นสีทึบตามที่คุณต้องการ ฯลฯ เพื่อให้เข้ากับสไตล์ของไซต์ของคุณ
Neil Monroe

1
ใช้งานไม่ได้สำหรับฉันกับ chrome รุ่นล่าสุด45.0.2454.101 m
J86

คำตอบจาก @ Carl-W ไม่ควรมองข้าม! - สิ่งนี้มีประโยชน์เมื่อใช้ jQuery เพื่อเชื่อมโยงไปยังจุดยึดที่เป็น div ฉันกำลังโหลด iframe ใน div จากนั้นไปที่สมอด้วยตนเองโดยไม่ต้องโหลดซ้ำ มันจะเลื่อนหน้าลงไปที่จุดยึด แต่ div ทั้งหมดมีแสงด้านนอกสีน้ำเงิน เพิ่ม CSS นี้ในองค์ประกอบ div และใช้งานได้! - หมายเหตุ: ฉันไม่ได้ใช้:focusสำหรับตัวเลือกฉันเพียงแค่ใส่outline-colorและoutline-stylecss ของ div
ลุย

13

ในการปรับขนาด textarea ในเบราว์เซอร์ที่ใช้ webkit:

การตั้งค่าความสูงสูงสุดและความกว้างสูงสุดบน textarea จะไม่ลบจุดจับการปรับขนาดภาพ ลอง:

resize: none;

(และใช่ฉันเห็นด้วยกับ "พยายามหลีกเลี่ยงการทำสิ่งใดที่ทำลายความคาดหวังของผู้ใช้" แต่บางครั้งมันก็สมเหตุสมผลเช่นในบริบทของเว็บแอปพลิเคชัน)

ในการปรับแต่งรูปลักษณ์ขององค์ประกอบแบบฟอร์ม webkit ตั้งแต่ต้น:

-webkit-appearance: none;

3
นอกจากนี้ยังเป็นไปได้ที่จะช่วยให้การปรับขนาดในทิศทางเดียวเท่านั้นซึ่งอาจแก้ไขปฏิสัมพันธ์กับรูปแบบบางอย่างโดยไม่ต้องปิดการใช้งานได้อย่างสมบูรณ์: ค่าที่เป็นไปได้สำหรับการปรับขนาดเป็นnone, both, horizontal, และvertical inherit
Boann

ฉันชอบโซลูชันที่นำเสนอที่นี่ด้วย '-webkit-Appearance: none;' - ลบการจัดแต่งทรงผมทั้งหมดออกจากองค์ประกอบอินพุตเพื่อให้คุณสามารถจัดแต่งทรงตามที่คุณต้องการ ขอบคุณ!
Hanazair

ฉันไม่รู้ว่าทำไมถึงมี upvotes มากมายจึงไม่ใช่คำตอบสำหรับคำถามเลย
paddotk

7

Carl W :

ผลกระทบนี้สามารถเกิดขึ้นได้กับองค์ประกอบที่ไม่ใช่อินพุตเช่นกัน ฉันพบว่างานต่อไปนี้เป็นวิธีแก้ปัญหาทั่วไปที่มากกว่า

:focus {
  outline-color: transparent;
  outline-style: none;
}

ฉันจะอธิบายสิ่งนี้:

  • :focusหมายความว่ามันเป็นลักษณะองค์ประกอบที่อยู่ในโฟกัส ดังนั้นเราจึงจัดแต่งองค์ประกอบที่อยู่ในโฟกัส
  • outline-color: transparent; หมายความว่าเรืองแสงสีน้ำเงินมีความโปร่งใส
  • outline-style: none; ทำสิ่งเดียวกัน

5

ฉันพบสิ่งนี้ในเหตุการณ์divที่มีการคลิกและหลังจากการค้นหา 20 ครั้งฉันพบข้อมูลโค้ดนี้ที่บันทึกวันของฉัน

-webkit-tap-highlight-color: rgba(0,0,0,0);

สิ่งนี้จะปิดใช้งานปุ่มเริ่มต้นที่เน้นอยู่ในเบราว์เซอร์มือถือของ webkit


4

นี่คือวิธีการแก้ปัญหาสำหรับคนที่จะดูแลเกี่ยวกับการเข้าถึง

กรุณาอย่าใช้outline:none;สำหรับปิดการใช้งานเค้าร่างโฟกัส คุณกำลังฆ่าการเข้าถึงเว็บถ้าคุณทำเช่นนี้ มีวิธีที่สามารถเข้าถึงได้ในการทำเช่นนี้

ลองอ่านบทความที่ฉันเขียนขึ้นเพื่ออธิบายวิธีลบเส้นขอบในวิธีที่เข้าถึงได้

แนวคิดสั้น ๆ คือแสดงเส้นขอบเค้าร่างเฉพาะเมื่อเราตรวจพบผู้ใช้แป้นพิมพ์ เมื่อผู้ใช้เริ่มใช้เมาส์เราจะปิดการใช้งานเค้าร่าง เป็นผลให้คุณได้รับที่ดีที่สุดของทั้งสอง


2

หากคุณต้องการลบแสงออกจากปุ่มใน Bootstrap (ซึ่งไม่จำเป็นต้องเป็น UX ที่แย่ในความคิดของฉัน) คุณจะต้องใช้รหัสต่อไปนี้:

.btn:focus, .btn:active:focus, .btn.active:focus{
  outline-color: transparent;
  outline-style: none;
}

ขอบคุณ .btn:active:focusจำเป็นต้องลบแสงออกขณะที่กดปุ่มค้างไว้
homerjam


1

บางครั้งมันเกิดขึ้นแล้วใช้ปุ่มด้านล่างเพื่อลบเส้นด้านนอก

input:hover
input:active, 
input:focus, 
textarea:active,
textarea:hover,
textarea:focus, 
button:focus,
button:active,
button:hover
{
    outline:0px !important;
}

0
<select class="custom-select">
        <option>option1</option>
        <option>option2</option>
        <option>option3</option>
        <option>option4</option>
</select>

<style>
.custom-select {
        display: inline-block;
        border: 2px solid #bbb;
        padding: 4px 3px 3px 5px;
        margin: 0;
        font: inherit;
        outline:none; /* remove focus ring from Webkit */
        line-height: 1.2;
        background: #f8f8f8;

        -webkit-appearance:none; /* remove the strong OSX influence from Webkit */

        -webkit-border-radius: 6px;
        -moz-border-radius: 6px;
        border-radius: 6px;
    }
    /* for Webkit's CSS-only solution */
    @media screen and (-webkit-min-device-pixel-ratio:0) { 
        .custom-select {
            padding-right:30px;    
        }
    }

    /* Since we removed the default focus styles, we have to add our own */
    .custom-select:focus {
        -webkit-box-shadow: 0 0 3px 1px #c00;
        -moz-box-shadow: 0 0 3px 1px #c00;
        box-shadow: 0 0 3px 1px #c00;
    }

    /* Select arrow styling */
    .custom-select:after {
        content: "▼";
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        font-size: 60%;
        line-height: 30px;
        padding: 0 7px;
        background: #bbb;
        color: white;

        pointer-events:none;

        -webkit-border-radius: 0 6px 6px 0;
        -moz-border-radius: 0 6px 6px 0;
        border-radius: 0 6px 6px 0;
    }
</style>

0

ฉันพบว่าเป็นประโยชน์ในการลบโครงร่างในปุ่มป้อนข้อมูลชนิด "ประตูเลื่อน" เนื่องจากโครงร่างไม่ครอบคลุม "ฝาปิด" ที่เหมาะสมของภาพประตูบานเลื่อน

input.slidingdoorbutton:focus { outline: none;}

0

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

input[type="text"], input[type="text"]:focus{
            outline: 0;
            border:none;
            box-shadow:none;

    }

ทดสอบใน Firefox และใน Chrome


0

แน่นอน! คุณสามารถลบเส้นขอบสีน้ำเงินได้จากองค์ประกอบ HTML ทั้งหมดโดยใช้ *

*{
    outline-color: transparent;
    outline-style: none;
  }

และ

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