Làm cách nào để xóa phác thảo rải rác của Firefox trên BUTTONS cũng như các liên kết?


507

Tôi có thể làm cho Firefox không hiển thị các đường viền tiêu điểm xấu xí trên các liên kết với điều này:

a:focus { 
    outline: none; 
}

Nhưng làm thế nào tôi có thể làm điều này cho <button>các thẻ là tốt? Khi tôi làm điều này:

button:focus { 
    outline: none; 
}

các nút vẫn có đường viền tiêu điểm chấm khi tôi nhấp vào chúng.

(và vâng, tôi biết đây là một vấn đề về khả năng sử dụng, nhưng tôi muốn cung cấp gợi ý tập trung của riêng tôi phù hợp với thiết kế thay vì các chấm xám xấu xí)


2
Có vẻ như trong Firefox 4, các yếu tố không còn được phác thảo theo mặc định khi được nhấp, mà chỉ khi nhận tiêu điểm bàn phím.
Geert

1
Những gì bạn gọi là "xấu xí" nhằm hỗ trợ khả năng truy cập của một trang web. Chỉ người dùng bàn phím không còn có thể xác định phần nào của trang web được tập trung khi xóa phác thảo này. Trang web của bạn sẽ hoàn toàn không thể truy cập và điều này sẽ không bao giờ xảy ra. Không bao giờ loại bỏ các phác thảo. Phong cách tốt hơn nó theo cách của bạn.
Markus Graf

Câu trả lời:


787
button::-moz-focus-inner {
  border: 0;
}

15
Vâng, nó làm việc cho tôi quá! Bây giờ làm thế nào nó có thể được thực hiện cho lựa chọn?
7wp

16
Lưu ý rằng điều này cũng hoạt động cho đầu vào (ví dụ: đầu vào :: - moz-Focus-Inside {Border: 0;})
El Yobo

15
Mục đích của dấu hai chấm: (ký hiệu CSS3) evotech.net/blog/2007/05/ trên
sholsinger

21
Cái này không hoạt động với tôi, vì bootstrap.css đang tạo ra các nút chấm xấu xí này. Thay vào đó tôi đã đặt:focus {outline:none !important;}
machineaddict

5
: tập trung {phác thảo: none;} :: - moz-tập trung-bên trong {đường viền: 0;} sẽ ít cụ thể hơn
Ben

311

Không cần xác định một bộ chọn.

:focus {outline:none;}
::-moz-focus-inner {border:0;}

Tuy nhiên, điều này vi phạm các thực tiễn tốt nhất về khả năng truy cập từ W3C. Các phác thảo là có để giúp những người điều hướng với bàn phím.

https://www.w3.org/TR/WCAG20-TECHS/F78.html#F78-examples


8
Cảm ơn, điều này làm việc cho tôi khi câu trả lời đúng không. Tôi phải đã sử dụng bộ chọn sai.
irl_irl

Cảm ơn vì điều này, điều này sẽ loại bỏ nó trên các liên kết và các nút quá?
Nathan

3
Điều này là tốt nhất! Câu trả lời được chấp nhận chỉ dành cho <button>, không <a>phải<input>
Ron van der Heijden

2
Hoàn hảo trong Mozilla Firefox 30 trong Ubuntu (GNU / Linux).
điện tử

4
Tôi sẽ lưu ý thứ hai về khả năng tiếp cận phá vỡ này. Điều quan trọng cần nhớ là không phải ai cũng có thể sử dụng chuột, nhìn thấy hoặc nhìn rõ. Điều đó nói rằng, trên mỗi liên kết (và ý nghĩa thông thường) ẩn đường viền chỉ phá vỡ a11y khi nó được thực hiện without ... an author-supplied visual focus indicator- nói cách khác, thay thế kiểu tác nhân người dùng bằng phong cách của bạn, như OP đã đề cập. Lý tưởng nhất là độ tương phản cao.
johncip

48

Nếu bạn thích sử dụng CSS để thoát khỏi phác thảo chấm:

/*for FireFox*/
    input[type="submit"]::-moz-focus-inner, input[type="button"]::-moz-focus-inner
    {   
        border : 0;
    } 
/*for IE8 and below */
    input[type="submit"]:focus, input[type="button"]:focus
    {     
        outline : none; 
    }

Bạn không cần một đơn vị trên các số bằng không. 0pxcó thể được thay thế bằng chỉ0
tiếng lóng

44

Dưới đây làm việc cho tôi trong trường hợp LIÊN KẾT, nghĩ đến việc chia sẻ - trong trường hợp ai đó quan tâm.

a, a:visited, a:focus, a:active, a:hover{
    outline:0 none !important;
}

Chúc mừng!


12
Đơn giản chỉ a { outline: none; }cần là đủ cho các liên kết.
cấp

3
Đây là mánh khóe quan trọng, các giải pháp khác không có điều đó và không hiệu quả. cho tôi.
Phông chữ Cristiano

Nhưng thường thì bạn nên sử dụng a { outline: none; }với !important->a { outline: none !important; }
joryl

24
:focus, :active {
    outline: 0;
    border: 0;
}

Làm việc như một lá bùa cho hộp tùy chọn tôi đang sử dụng
Muhammad Ahsan

1
Điều này không đủ cụ thể và tôi không muốn sử dụng acác yếu tố quan trọng hoặc chỉ nhắm mục tiêu , vì vậy tôi đã tìm thấy một lựa chọn tốt để trở thành body :focus, body :active { outline: 0; border: 0; } ::-moz-focus-inner { border: 0; }
Ivan Durst

10

[Cập nhật] Giải pháp này không hoạt động nữa. Giải pháp hiệu quả với tôi là giải pháp này https://stackoverflow.com/a/3844452/925560

Câu trả lời được đánh dấu là không hoạt động với Firefox 24.0.

Để xóa phác thảo rải rác của Firefox trên các nút và thẻ neo, tôi đã thêm mã dưới đây:

a:focus, a:active, 
button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
select::-moz-focus-inner,
input[type="file"] > input[type="button"]::-moz-focus-inner {
    border: 0;
    outline : 0;
}

Tôi tìm thấy giải pháp ở đây: http://aghoshb.com/articles/css-how-to-remove-firefoxs-diated-outline-on-buttons-and-anchor-tags.html


2
Nó không hoạt động nữa: / Giải pháp hiệu quả là một stackoverflow.com/a/3844452/925560
Renato Carvalho

8

Đã thử hầu hết các câu trả lời ở đây, nhưng không ai trong số họ làm việc cho tôi. Khi tôi nhận ra rằng tôi cũng phải loại bỏ các phác thảo màu xanh trên các nút trên Chrome, tôi đã tìm thấy một giải pháp khác. Xóa đường viền màu xanh khỏi nút theo kiểu tùy chỉnh css trong Chrome

Mã này hoạt động với tôi trên Firefox phiên bản 30 trên Windows 7. Có lẽ nó có thể giúp người khác ngoài đó :)

button:focus {outline:0 !important;}

Điều tương tự ở đây, đây là giải pháp duy nhất hoạt động trên FF 38.0.5
OlivierH

6

Không có cách nào để loại bỏ các tiêu điểm rải rác này trong Firefox bằng CSS.

Nếu bạn có quyền truy cập vào các máy tính nơi ứng dụng web của bạn hoạt động, hãy truy cập about: config trong Firefox và đặt browser.display.focus_ring_width thành 0. Sau đó, Firefox sẽ không hiển thị bất kỳ đường viền chấm nào cả.

Lỗi sau đây giải thích chủ đề: https://ormszilla.mozilla.org/show_orms.cgi?id=74225


Cảm ơn nó hoạt động tốt, nhưng tôi đã tạo ra rất nhiều liên kết trước đây tôi không bao giờ gặp phải vấn đề này cho đến bây giờ. nhưng bây giờ tôi đang bối rối vậy lý do trước đây để trình bày là gì?
Durga Rao

Đây là câu trả lời bây giờ là hoàn toàn sai. Đặt ::-moz-focus-inner {border:0;}như đã đề cập trong một số câu trả lời khác hoạt động hoàn hảo.
Andy Mercer

@AndyM Câu trả lời này không hoạt động. Giải pháp trình bày trong các câu trả lời khác là dành cho CSS và chỉ hoạt động cho các trang web riêng lẻ.
Rahil Wazir

7
Câu hỏi hỏi làm thế nào nó có thể được thực hiện với CSS và câu trả lời cho biết không thể. Điều đó là sai. Nó có thể.
Andy Mercer

6

Có rất nhiều giải pháp được tìm thấy trên web cho việc này, nhiều giải pháp trong số đó hoạt động, nhưng để buộc nó, để hoàn toàn không có gì có thể làm nổi bật / tập trung một khi sử dụng như sau:

::-moz-focus-inner, :active, :focus {
    outline:none;
    border:0;
    -moz-outline-style: none;
}

Điều này chỉ cần thêm một chút bảo mật và niêm phong thỏa thuận!



5

Đã thử nghiệm trên Firefox 46 và Chrome 49 bằng mã này.

input:focus, textarea:focus, button:focus {
    outline: none !important;
}

Trước (có thể nhìn thấy các chấm trắng)

đầu vào với các chấm trắng

After (Dấu chấm trắng là vô hình) nhập mô tả hình ảnh ở đây

Nếu bạn muốn chỉ áp dụng trên một vài trường nhập, nút, v.v ... Sử dụng mã cụ thể hơn.

input[type=text] {
  outline: none !important;
}

Chúc mừng mã hóa !!


Điều !importantcần thiết đối với tôi là ghi đè lên biểu định kiểu của Firefox. Chúc mừng!
SamHH

5

Đơn giản chỉ cần thêm css này cho hộp chọn

select:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 #000;
}

Điều này đang làm việc tốt cho tôi.


4

Tôi nghĩ bạn nên thực sự biết những gì bạn đang làm bằng cách xóa phác thảo tiêu điểm, bởi vì nó có thể gây rối cho điều hướng bàn phím và khả năng truy cập.

Nếu bạn cần lấy nó ra vì vấn đề thiết kế, hãy thêm :focus trạng thái vào nút thay thế nút này bằng một số dấu hiệu trực quan khác, như thay đổi đường viền thành màu sáng hơn hoặc đại loại như thế.

Đôi khi tôi cảm thấy cần phải đưa ra phác thảo khó chịu đó, nhưng tôi luôn chuẩn bị một gợi ý hình ảnh tập trung xen kẽ.

không bao giờ sử dụng blur()chức năng js. Sử dụng ::-moz-focus-innerlớp giả.


4

Trong hầu hết các trường hợp mà không thêm !importantmã CSS, nó sẽ không hoạt động.

Vì vậy, đừng quên thêm !important

a, a:active, a:focus{
    outline: none !important; /* Works in Firefox, Chrome, IE8 and above */
}


Hoặc bất kỳ mã nào khác:

button::-moz-focus-inner {
  border: 0 !important;
}

3
button::-moz-focus-inner { border: 0; }

Ở đâu button có thể là bất cứ bộ chọn CSS nào mà bạn muốn tắt hành vi.


3

Bạn có thể muốn tăng cường tập trung hơn là thoát khỏi nó.

button::-moz-focus-inner {border: 2px solid transparent;}

button:focus::-moz-focus-inner {border-color: blue} 

2
@Nathan hơi muộn nhưng, không có bất kỳ phong cách nào trong trạng thái lấy nét sẽ gây rối với trải nghiệm bàn phím. bạn sẽ không thể biết những gì tập trung khi bạn nhấn phím tab .
Hkan

@Hkan Vâng, tôi đồng ý. Nhưng phác thảo của Firefox là xấu, đặc biệt là khi nó ở xung quanh một đường viền tiêu điểm tùy chỉnh.
Nathan

@Nathan Tôi hoàn toàn đồng ý với điều đó. Những gì chúng ta nên làm là cung cấp kiểu dáng riêng cho trạng thái tập trung thay vì làm cho các yếu tố giống nhau ở trạng thái nói trên.
Hkan

3

Xóa phác thảo chấm từ các liên kết, nút và yếu tố đầu vào.

a:focus, a:active,
button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner {
    border: 0;
    outline : 0;
}

3

Nếu bạn có một đường viền trên một nút và muốn ẩn đường viền chấm trong Firefox mà không xóa đường viền (và do đó, nó có chiều rộng thêm trên nút), bạn có thể sử dụng:

.button::-moz-focus-inner {
    border-color: transparent;
}

3

Mã CSS dưới đây hoạt động để loại bỏ điều này:

a:focus, a:active, 
button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
select::-moz-focus-inner,
input[type="file"] > input[type="button"]::-moz-focus-inner {
    border: 0;
    outline : 0;
}

2

Có vẻ như cách duy nhất để đạt được điều này là bằng cách thiết lập

browser.display.focus_ring_width = 0

trong about: config trên cơ sở mỗi trình duyệt.


1

Điều này hoạt động trên firefox v-27.0

 .buttonClassName:focus {
  outline:none;
}

1

Sau khi thử nhiều lựa chọn từ trên, chỉ có những điều sau đây làm việc cho tôi.

*:focus, *:visited, *:active, *:hover  { outline:0 !important;}
*::-moz-focus-inner {border:0;}

Trên thực tế (ít nhất là trong Firefox 77), bạn chỉ cần: button:focus { outline: none !important } Hoặc nếu bạn thích tôi không thích! Quan trọng, điều này cũng hoạt động để ghi đè lên kiểu dáng của Firefox: :root button:focus { outline: none }
Jonas Sandstedt

1

Cùng với Bootstrap 3 tôi đã sử dụng mã này. Bộ quy tắc thứ hai chỉ hoàn tác những gì bootstrap làm cho các nút tập trung / hoạt động:

button::-moz-focus-inner {
  border: 0;    /*removes dotted lines around buttons*/
}

.btn.active.focus, .btn.active:focus, .btn.focus, .btn.focus:active, .btn:active:focus, .btn:focus{
  outline:0;
}

LƯU Ý rằng tệp css tùy chỉnh của bạn phải xuất hiện sau tệp css Bootstrap trong mã html của bạn để ghi đè lên.


1

Bạn đừng bỏ lỡ !

button::-moz-focus-inner {
 border: 0 !important;
}

! quan trọng không phải là một phần của câu trả lời ở đây, và nếu ứng dụng của bạn cần nó thì bạn có vấn đề lớn hơn để giải quyết hơn những điểm nổi bật xung quanh các nút của bạn. Luôn luôn phấn đấu để tránh!
đơn sắc

0

Bạn có thể thử button::-moz-focus-inner {border: 0px solid transparent;}trong CSS của bạn.

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.