Xóa Safari / Chrome textinput / textarea glow


337

Tôi tự hỏi liệu có thể loại bỏ ánh sáng màu xanh và màu vàng mặc định khi tôi nhấp vào khu vực nhập văn bản / văn bản bằng CSS không?


6
@Steve, một lý do khác để vô hiệu hóa nó là nếu bạn muốn hiệu ứng phát sáng hoạt động trong tất cả các trình duyệt bằng cách sử dụng: tập trung thay vì kiểu phác thảo không được hỗ trợ.
Langdon

90
Thật khó chịu khi mọi người bắt đầu một cuộc trò chuyện triết học về việc liệu điều gì đó là "điều đúng đắn" khi câu hỏi là một vấn đề kỹ thuật.
tim

2
Tôi đang tạo một bảng tính trực tuyến, Steve, vì vậy nó sẽ phù hợp với cách sử dụng của tôi. Nó phụ thuộc, nhưng nếu nó chỉ là một hình thức đơn giản thì bạn nên để lại phác thảo.
william44isme

4
Tôi nghĩ đó là hoàn toàn ok để vô hiệu hóa nó và thực hiện một tùy chỉnh: tác dụng tập trung với css ...
ithil

Ngoài ra, biết cách vô hiệu hóa một cái gì đó không có nghĩa là nó không thể đảo ngược. Bất cứ ai làm việc cho bất kỳ khách hàng nào cũng biết rằng họ có thể muốn thấy một cái gì đó được hiển thị theo một cách và sau đó chuyển nó trở lại theo cách ban đầu / mặc định. Giảng dạy cho họ về khả năng tiếp cận sẽ không thay đổi mong muốn đó hoặc làm cho bất cứ ai hạnh phúc.
JakeGould

Câu trả lời:


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

Mặc dù, người ta đã lập luận rằng việc giữ ánh sáng / phác thảo thực sự có lợi cho khả năng truy cập vì nó có thể giúp người dùng thấy Element nào hiện đang được tập trung.

Bạn cũng có thể sử dụng phần tử giả ': tập trung' để chỉ nhắm mục tiêu các đầu vào khi người dùng đã chọn chúng.

Bản trình diễn: https://jsfiddle.net/JohnnyWalkerDesign/xm3zu0cf/


2
Tuyệt, cảm ơn bạn nhiều. Cũng tự hỏi, tôi có thể loại bỏ tùy chọn thay đổi kích thước textarea cũng (ở dưới cùng bên phải của textarea)?
Alec Smart

3
+1 cho sự thận trọng; vui lòng cố gắng tránh làm bất cứ điều gì phá vỡ kỳ vọng của người dùng về cách thức hoạt động của nền tảng của họ; bạn thực sự có thể làm hại năng suất của họ và làm cho trang web của bạn khó sử dụng hơn.
Cướp

6
Hủy bỏ tùy chọn thay đổi kích thước chrome / safari textarea của tôi trong tình trạng nguy hiểm của riêng bạn! Tôi thấy nó thực sự hữu ích, không thể thiếu ngay cả trên một số trang web.
JeeBee

5
để thoát khỏi tay cầm thay đổi kích thước: thay đổi kích thước: không có;
Daniel

22
hộp bóng: không có;
styks

92

Hiệu ứng này cũng có thể xảy ra đối với các yếu tố không phải đầu vào. Tôi đã tìm thấy các công việc sau đây như là một giải pháp tổng quát hơn

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

Cập nhật: Bạn có thể không phải sử dụng :focusbộ chọn. Nếu bạn có một phần tử, giả sử <div id="mydiv">stuff</div>, và bạn đã nhận được ánh sáng bên ngoài trên phần tử div này, chỉ cần áp dụng như bình thường:

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

Điều này hoạt động, ví dụ như đối với <button>các yếu tố, không đặc biệt được hưởng lợi từ việc lấy nét sáng vì hầu như bạn đang nhấp vào nó.
kas Elli

1
Câu trả lời được chấp nhận không hoạt động với tôi trên Chrome trên OSX. Giải pháp này đã làm công việc.
Bart

Cũng sử dụng kỹ thuật này, bạn có thể duy trì tiêu điểm, nhưng xác định lại giá trị của phác thảo là màu sắc vững chắc cho sự lựa chọn của bạn, v.v. để phù hợp với phong cách trang web của bạn nếu loại bỏ hoàn toàn không thỏa đáng.
Neil Monroe

1
Không hoạt động với tôi trên phiên bản chrome mới nhất45.0.2454.101 m
J86

Câu trả lời này từ @ Carl-W không nên bỏ qua! - Điều này rất hữu ích khi sử dụng jQuery để liên kết đến một neo là div. Tôi đã tải lại iframe trong div, sau đó tự chuyển đến neo mà không cần tải lại. Nó sẽ cuộn trang xuống mỏ neo, nhưng toàn bộ div có ánh sáng bên ngoài màu xanh. Đã thêm CSS này vào phần tử div và nó đã hoạt động! - LƯU Ý: Tôi không sử dụng :focuscho bộ chọn, tôi chỉ đặt outline-coloroutline-styletrên css div của tôi.
lội nước

13

Thay đổi kích thước textarea trong trình duyệt dựa trên webkit:

Đặt chiều cao tối đa và chiều rộng tối đa trên vùng văn bản sẽ không loại bỏ tay cầm thay đổi kích thước hình ảnh. Thử:

resize: none;

(và vâng, tôi đồng ý với "cố gắng tránh làm bất cứ điều gì phá vỡ sự mong đợi của người dùng", nhưng đôi khi nó có ý nghĩa, tức là trong bối cảnh của một ứng dụng web)

Để tùy chỉnh giao diện của các yếu tố hình thức webkit từ đầu:

-webkit-appearance: none;

3
Cũng có thể cho phép thay đổi kích thước chỉ theo một hướng, mà có thể khắc phục tương tác của nó với một số bố trí mà không cần tắt nó hoàn toàn: các giá trị có thể thay đổi kích thước cho là none, both, horizontal, vertical, và inherit.
Boann

Tôi thích giải pháp được cung cấp ở đây với '-webkit-ngoại hình: none;' - loại bỏ TẤT CẢ kiểu dáng khỏi các thành phần đầu vào, vì vậy bạn có thể tạo kiểu cho chúng khi bạn cần. Cảm ơn!
hanazair

Tôi không biết tại sao điều này có quá nhiều sự ủng hộ, nó không phải là một câu trả lời cho câu hỏi nào cả.
paddotk

7

Carl W :

Hiệu ứng này cũng có thể xảy ra đối với các yếu tố không phải đầu vào. Tôi đã tìm thấy các công việc sau đây như là một giải pháp tổng quát hơn

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

Tôi sẽ giải thích điều này:

  • :focuscó nghĩa là nó phong cách các yếu tố được tập trung. Vì vậy, chúng tôi đang tạo kiểu cho các yếu tố tập trung.
  • outline-color: transparent; có nghĩa là ánh sáng màu xanh là trong suốt.
  • outline-style: none; làm điều tương tự

5

Tôi đã trải nghiệm điều này trên một divsự kiện có nhấp chuột và sau 20 lần tìm kiếm tôi đã tìm thấy đoạn trích này đã cứu ngày của tôi.

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

Điều này vô hiệu hóa đánh dấu nút mặc định trong trình duyệt di động webkit


4

Đây là giải pháp cho những người quan tâm đến khả năng tiếp cận .

Xin vui lòng, không sử dụng outline:none;để vô hiệu hóa phác thảo tập trung. Bạn đang giết chết khả năng truy cập của web nếu bạn làm điều này. Có một cách dễ dàng để làm điều này.

Kiểm tra bài viết này mà tôi đã viết để giải thích cách xóa đường viền theo cách có thể truy cập.

Ý tưởng ngắn gọn là chỉ hiển thị đường viền phác thảo khi chúng tôi phát hiện người dùng bàn phím. Khi người dùng bắt đầu sử dụng chuột, chúng tôi sẽ vô hiệu hóa phác thảo. Kết quả là bạn có được điều tốt nhất trong hai.


2

Nếu bạn muốn loại bỏ ánh sáng khỏi các nút trong Bootstrap (theo ý kiến ​​của tôi không hẳn là UX xấu), bạn sẽ cần mã sau đây:

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

Cảm ơn. .btn:active:focuslà cần thiết để loại bỏ ánh sáng trong khi thực sự giữ nút.
homerjam

2

Giải pháp này đã làm việc cho tôi.

input:focus {
    outline: none !important;
    box-shadow: none !important;
}

1

đôi khi nó cũng xảy ra các nút sau đó sử dụng bên dưới để xóa đường viền ngoài

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

Tôi thấy hữu ích khi xóa đường viền trên loại nút nhập "cửa trượt", vì đường viền không che đúng "nắp" của hình ảnh cửa trượt làm cho trạng thái lấy nét trông hơi khó nhìn.

input.slidingdoorbutton:focus { outline: none;}

0

Tôi chỉ cần loại bỏ hiệu ứng này khỏi các trường nhập văn bản của mình và tôi không thể làm cho các kỹ thuật khác hoạt động hoàn toàn đúng, nhưng đây là những gì hiệu quả với tôi;

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

    }

Đã thử nghiệm trên Firefox và trong Chrome.


0

Chắc chắn rồi! Bạn cũng có thể xóa viền xanh khỏi tất cả các thành phần HTML bằng cách sử dụng *

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

 *{
     outline: none;   
   }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.