Видаліть зайвий інтервал / заповнення кнопок у Firefox


81

Дивіться цей приклад коду: http://jsfiddle.net/Z2BMK/

Chrome / IE8 виглядають так

введіть тут опис зображення

Firefox виглядає так

введіть тут опис зображення

Мій CSS є

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

Як я можу змінити зразок коду, щоб кнопка стала однаковою в обох браузерах? Я не хочу використовувати гіперпосилання на основі JavaScript, оскільки вони не працюють з пробілом на клавіатурі, і він повинен мати hrefURL-адресу, яка не є чистим способом обробки речей.

Моє рішення, починаючи з Firefox 13

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


Чому ви додали margin: -1px? Це якось пов’язано з border: 2px?
Ден

1
Перегляньте мою редакцію. Значення border-widththe -moz-focus-innerбуло 1pxза замовчуванням, тому запис border-widthу код зайвий, але це робить більш зрозумілим, що відбувається. Цілком можливо, що це може допомогти також у проведенні майбутніх перевірок. Щоб відповісти на ваше запитання, border-widthпричиною різниці стала версія Firefox, і додавання margin: -1px- це рішення, яке є більш сумісним, ніж моє попереднє рішення.
Брайан Філд

1
Я думаю, що прийнята відповідь візуально еквівалентна, але краща, ніж ваше рішення. Прийнята відповідь видаляє речі, додані FF, і змушує речі відображатися однаково у всіх браузерах. Ваше рішення залишає на своєму місці додаткову рамку, додану FF, і приховує один піксель двопіксельної межі margin: -1px. Це надто складно. Він ламає , якщо :. 1) Виправлена помилка в візуалізації з'являється двигун (що буває), 2) Межі отримати інший колір, 3) Ви наближати Щоб продемонструвати потенційні проблеми з вашим рішенням, я підготував скрипку: jsfiddle.net/Z2BMK / 455 . Будь ласка, збільште масштаб і помітьте червону рамку.
Ден

Єдиною перевагою Вашої відповіді, яку я бачу, є збереження функціональності FF «пунктирний контур, коли кнопка активна»
Ден

Так, саме це робить моє рішення кращим. Має бути щось, що повідомляє користувачеві, куди орієнтована його клавіатура.
Bryan Field

Відповіді:


164

Додайте це:

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

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

Включення borderнаведеного вище правила необхідно, щоб кнопки виглядали однаково в обох браузерах, але також видаляє пунктирний контур, коли кнопка знаходиться activeу Firefox. Багато розробників позбавляються цього пунктирного контуру, за бажанням замінюючи його чимось більш візуальним.


8
Використовуйте світіння фокусу в стилі Chrome у Firefox, використовуйте button{background:/*Something here*/} button:focus{-moz-box-shadow:0 0px 3px #C80;}. Це компенсує відсутність пунктирної лінії та забезпечує узгодженість браузера, якого я шукав.
Брайан Філд,

Це ВІСТНО те, що мені потрібно було. Дякую!
Абель

11
Щоб зафіксувати це на вхідних елементах, також додайте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
Стефан

Чудово! Дякую! Це допомогло!
SoWeLie

1
@Stefan jsfiddle.net/LjhQ5/1 Здається, він працює коректно (за винятком filecss). На жаль, на сторінці, на якій я намагався це зробити, мав бути конфлікт css. Дякую.
запасні байти

8

Щоб виправити це на елементах введення, також додайте

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

просто ідеально!


Чи знаєте ви про сумісність браузера з цим рішенням?
Брайан Філд

3
Чи не є input[type="file"] > input[type="button"]::-moz-focus-innerзайвим, оскільки ви вже додали input[type="button"]::-moz-focus-inner, чи це не ваш досвід? Чи ти знаєш?
Брайан Філд,

@GeorgeBailey: сумісність браузера Firefox 3+, цей код не впливає на жоден інший браузер.
Dan

@GeorgeBailey Я думаю, що ця відповідь була задумана як відповідь на цей коментар.
WynandB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.