Zobacz ten przykład kodu: http://jsfiddle.net/Z2BMK/
Chrome / IE8 wyglądają tak
Firefox wygląda tak
Mój CSS to
button {
padding:0;
background:#080;
color:white;
border:solid 2px;
border-color: #0c0 #030 #030 #0c0;
margin:0;
}
Jak mogę zmienić przykładowy kod, aby przycisk był taki sam w obu przeglądarkach? Nie chcę używać hiperłączy opartych na JavaScript, ponieważ nie działają one ze spacją na klawiaturze i muszą mieć href
adres URL, który nie jest przejrzystym sposobem obsługi.
Moje rozwiązanie, ponieważ Firefox 13
button::-moz-focus-inner { margin: -1px; padding: 0; border-width: 1px; }
margin: -1px
? Czy to jest w jakiś sposób połączoneborder: 2px
?border-width
of the-moz-focus-inner
było1px
domyślnie, więc zapisborder-width
do kodu jest zbędny, ale wyjaśnia, co się dzieje. Możliwe, że pomoże to również w przygotowaniu na przyszłość. Odpowiadając na twoje pytanie,border-width
przyczyną różnicy był Firefox, a dodaniemargin: -1px
jest rozwiązaniem, które jest bardziej kompatybilne niż moje poprzednie rozwiązanie.margin: -1px
. To jest zbyt skomplikowane. Zepsuje się, jeśli: 1) pojawia się błąd w silniku renderowania (tak się dzieje), 2) obramowania mają inny kolor, 3) powiększasz. Aby pokazać potencjalne problemy z twoim rozwiązaniem, przygotowałem skrzypce: jsfiddle.net/Z2BMK / 455 . Powiększ i zwróć uwagę, że pojawia się czerwona ramka.Odpowiedzi:
Dodaj:
button::-moz-focus-inner { padding: 0; border: 0 }
http://jsfiddle.net/thirtydot/Z2BMK/1/
Uwzględnienie
border
powyższej reguły jest konieczne, aby przyciski wyglądały tak samo w obu przeglądarkach, ale także usuwa przerywany kontur, gdy przycisk jestactive
w przeglądarce Firefox. Wielu programistów pozbywa się tego przerywanego konturu, opcjonalnie zastępując go czymś bardziej przyjaznym wizualnie.źródło
button{background:/*Something here*/} button:focus{-moz-box-shadow:0 0px 3px #C80;}
. To rekompensuje brak przerywanej linii i zapewnia spójność przeglądarki, o której mi chodziło.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
file
css). Przepraszamy, na stronie, na której próbowałem to zrobić, musiał istnieć konflikt CSS. Dzięki.Aby naprawić to również na elementach wejściowych, dodaj
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
jest po prostu doskonały!
źródło
input[type="file"] > input[type="button"]::-moz-focus-inner
zbędny, ponieważ już dodałeśinput[type="button"]::-moz-focus-inner
, czy nie jest to twoje doświadczenie? Czy wiesz?