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ベースのハイパーリンクはキーボードのスペースバーhrefでは機能せず、URLが必要であるため、JavaScriptベースのハイパーリンクを使用したくありません。

Firefox13以降の私の解決策

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


なぜ追加したのmargin: -1pxですか?どういうわけか接続されていborder: 2pxますか?
ダン

1
私の編集を参照してください。border-widthのは-moz-focus-innerだった1px書き込みので、デフォルトではborder-widthコードには冗長であるが、それはそれは、より何が起こっているかをクリアすることができます。将来の保証にも役立つ可能性があります。あなたの質問に答えるためにborder-width、Firefoxのが違いの原因であり、追加することmargin: -1pxは私の以前のソリューションよりも互換性のあるソリューションです。
ブライアンフィールド

1
受け入れられた答えは視覚的に同等だと思いますが、あなたの解決策よりも優れています。受け入れられた回答は、FFによって追加されたものを削除し、すべてのブラウザーで同じようにレンダリングするようにします。ソリューションは、FFによって追加された余分な境界線をその場所に残し、を使用して2ピクセルの境界線の1ピクセルを非表示にしmargin: -1pxます。これは非常に複雑です。1)レンダリングエンジンのバグが発生する(発生する)、2)境界線の色が異なる、3)ズームインする。ソリューションの潜在的な問題を示すために、フィドルを用意しました:jsfiddle.net/Z2BMK / 455。ズームインして、赤い境界線が表示されていることを確認してください。
ダン

私が見ることができるあなたの答えの唯一の利点は、FFの「ボタンがアクティブなときの点線のアウトライン」機能を維持することです
ダン

はい、それこそが私のソリューションをより良くするものです。キーボードがどこに焦点を合わせているをユーザーに伝える何かがあるはずです。
ブライアンフィールド

回答:


164

これを追加:

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

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

border上記のルールを含めることは、ボタンが両方のブラウザで同じように見えるために必要ですが、ボタンがactiveFirefoxにあるときに点線のアウトラインを削除します。多くの開発者は、この点線の輪郭を取り除き、オプションで、より視覚的にわかりやすいものに置き換えます。


8
FirefoxでChromeスタイルのフォーカスグローを使用するには、を使用します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
Stefan

驚くばかり!ありがとうございました!これは役に立ちました!
SoWeLie 2012年

1
@ Stefan jsfiddle.net/LjhQ5/1正しく動作しているようです(filecssを除く)。申し訳ありませんが、私がやろうとしていたページに競合するCSSがあったに違いありません。ありがとう。
スペアバイト2012年

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以降であり、このコードは他のブラウザには影響しません。
ダン

@GeorgeBaileyこの回答は、このコメントへの回答として意図されたものだと思います。
WynandB 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.