Loại bỏ khoảng cách / khoảng đệm nút bổ sung trong Firefox


81

Xem ví dụ về mã này: http://jsfiddle.net/Z2BMK/

Chrome / IE8 trông như thế này

nhập mô tả hình ảnh ở đây

Firefox trông như thế này

nhập mô tả hình ảnh ở đây

CSS của tôi là

button {
    padding:0;
    background:#080;
    color:white;
    border:solid 2px;
    border-color: #0c0 #030 #030 #0c0;
    margin:0;
}

Làm cách nào để thay đổi mẫu mã để làm cho nút giống nhau trong cả hai trình duyệt? Tôi không muốn sử dụng các siêu liên kết dựa trên JavaScript vì chúng không hoạt động với phím cách trên bàn phím và nó phải có hrefURL, đây không phải là một cách rõ ràng để xử lý mọi thứ.

Giải pháp của tôi, kể từ Firefox 13

button::-moz-focus-inner { margin: -1px; padding: 0; border-width: 1px; }


Tại sao bạn lại thêm margin: -1px? Nó được kết nối bằng cách nào đó với border: 2px?
Dan

1
Xem bản chỉnh sửa của tôi. Các border-widthcủa -moz-focus-inner1pxtheo mặc định, vì vậy việc viết border-widthvào mã là không cần thiết, nhưng nó làm cho nó nhiều hơn rõ ràng những gì đang xảy ra. Có thể nó cũng có thể giúp ích cho việc kiểm tra trong tương lai. Để trả lời câu hỏi của bạn, border-widthtrong Firefox là nguyên nhân của sự khác biệt và thêm vào margin: -1pxlà giải pháp tương thích hơn giải pháp trước đây của tôi.
Bryan Field

1
Tôi nghĩ rằng câu trả lời được chấp nhận là tương đương trực quan, nhưng tốt hơn so với giải pháp của bạn. Câu trả lời được chấp nhận sẽ xóa nội dung do FF thêm vào và làm cho mọi thứ hiển thị theo cùng một cách trong tất cả các trình duyệt. Giải pháp của bạn để lại một đường viền bổ sung được FF thêm vào vị trí của nó và ẩn một pixel của đường viền hai pixel bằng cách sử dụng margin: -1px. Điều này là quá phức tạp. Nó bị hỏng nếu: 1) Lỗi trong công cụ kết xuất xuất hiện (điều đó xảy ra), 2) Các đường viền có màu khác, 3) Bạn phóng to. Để chứng minh các vấn đề tiềm ẩn với giải pháp của bạn, tôi đã chuẩn bị một fiddle: jsfiddle.net/Z2BMK / 455 . Hãy phóng to và nhận thấy một đường viền màu đỏ xuất hiện.
Dan

Ưu điểm duy nhất của câu trả lời của bạn mà tôi có thể thấy là giữ nguyên chức năng "đường viền chấm khi nút đang hoạt động" của FF
Dan

Vâng, Đó chính xác là điều làm cho giải pháp của tôi tốt hơn. Cần có một cái gì đó cho người dùng biết nơi bàn phím của họ được tập trung.
Bryan Field

Câu trả lời:


164

Thêm điều này:

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

http://jsfiddle.net/thirtydot/Z2BMK/1/

Việc bao gồm borderquy tắc trên là cần thiết để các nút trông giống nhau trong cả hai trình duyệt, nhưng nó cũng loại bỏ đường viền chấm khi nút đó activeở trong Firefox. Rất nhiều nhà phát triển loại bỏ đường viền chấm chấm này, tùy ý thay thế nó bằng một thứ gì đó thân thiện hơn với thị giác.


8
Để sử dụng ánh sáng tiêu điểm kiểu Chrome trong Firefox, hãy sử dụng button{background:/*Something here*/} button:focus{-moz-box-shadow:0 0px 3px #C80;}. Điều này bù đắp cho việc không có đường chấm chấm và mang lại sự nhất quán cho trình duyệt mà tôi đã theo đuổi.
Bryan Field

Đây là thứ tôi cần. Cảm ơn!
Abel

11
Để khắc phục nó trên các yếu tố đầu vào là tốt thêminput[type="reset"]::-moz-focus-inner, input[type="button"]::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="file"] > input[type="button"]::-moz-focus-inner
Stefan

Tuyệt vời! Cảm ơn bạn! Điều này đã giúp!
SoWeLie

1
@Stefan jsfiddle.net/LjhQ5/1 Có vẻ như được làm việc một cách chính xác (trừ filecss). Xin lỗi, chắc hẳn đã có css xung đột trên trang mà tôi đang cố gắng làm điều đó. Cảm ơn.
tùng

8

Để sửa chữa nó trên các yếu tố đầu vào cũng như thêm

input[type="reset"]::-moz-focus-inner, 
input[type="button"]::-moz-focus-inner, 
input[type="submit"]::-moz-focus-inner, 
input[type="file"] > input[type="button"]::-moz-focus-inner

là đơn giản hoàn hảo!


Bạn có bất kỳ kiến ​​thức nào về khả năng tương thích trình duyệt của giải pháp này không?
Bryan Field

3
Không input[type="file"] > input[type="button"]::-moz-focus-innerthừa vì bạn đã thêm input[type="button"]::-moz-focus-inner, hay đó không phải là kinh nghiệm của bạn? Bạn có biết?
Bryan Field

@GeorgeBailey: khả năng tương thích của trình duyệt là Firefox 3+, mã này không ảnh hưởng đến bất kỳ trình duyệt nào khác.
Dan

@GeorgeBailey Tôi nghĩ câu trả lời này nhằm phản hồi cho nhận xét này .
WynandB
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.