《 15:27 公開/更新》
ChromeやOperaなど一部のブラウザでは、フォーカスのあるテキスト入力欄(=カーソルの入った状態の編集領域)に独自の枠線を加えて描画します。テキストエリアの枠線を独自にデザインしているページでは、この仕様はちょっと邪魔です。なぜなら、独自デザインの枠線の外側に、ブラウザ側がさらに枠線を加えてしまって、枠が二重に見えてしまうからです。特にテキスト入力欄を角丸にしていると、見た目がおかしくなります。そんなときには、ブラウザ側が独自の枠線を付加しないようCSSで指定しておけば解決します。
ChromeやOperaなど一部のブラウザでは、フォーカスのあるテキスト入力欄(=カーソルの入った状態の編集領域)に独自の枠線を加えて描画します。通常はそれでも良いのですが、テキストエリアの枠線を独自にデザインしているページでは、この仕様はちょっと邪魔です。なぜなら、独自デザインの枠線の外側に、ブラウザ側がさらに枠線を加えてしまって、枠が二重に見えてしまうからです。特にテキスト入力欄を角丸にしていると、見た目がおかしくなります。
そんなときには、ブラウザ側が独自の枠線を付加しないようCSSで指定しておけば解決します。
Chromeなどのブラウザが、テキスト入力欄へのフォーカス時に自動で付加する枠線を消すには、outlineプロパティに値none
を指定するだけです。とても簡単です。
以下に、具体的なCSSソースの書き方などを紹介しておきます。
textarea要素で作るテキストエリアや、input要素で作る1行テキスト入力欄の枠線を自分で装飾するには、主にborderプロパティが使われます。入力フォームに限らず、あらゆる要素の枠線を装飾したい場合にはborderプロパティを使いますよね。角丸にしたい場合は、border-radiusプロパティを使います。
しかし、実は枠線を付加するプロパティは、borderプロパティだけではありません。
outlineプロパティもあります。
ChromeやOperaなどの一部のブラウザが(入力フォームにフォーカスが当たった際に)自動で付加する枠線は、borderプロパティではなくoutlineプロパティに値を加える方法で実現されています。
なので、CSSを使って、フォーカス時にoutlineプロパティの値を消す装飾を加えておけば、ブラウザによる枠線の自動付加を阻止できます。
なお、outlineプロパティで引く枠線の特長や方法については、別途「borderと違ってレイアウトに影響しない枠線が引けるoutlineプロパティ」で紹介していますので、ご参考にどうぞ。
ブラウザがテキスト入力欄に枠線を加えないようにするには、CSSで outline: none;
を指定すればOKです。
具体的には、以下のようにCSSソースを書くと良いでしょう。
対象条件別に紹介しておきます。
最も簡単なのは、あらゆるフォーカス時に一切枠線を付加しないようにする書き方です。たいていは、このように書いておけば特に問題はないでしょう。
CSSソース
:focus { outline: none; }
上記は、何らかの要素がフォーカスを得た際に装飾する :focus疑似クラスを使っています。要素名を特に指定していないので、あらゆる要素が対象になります。
ここで、outlineプロパティの値をnone
にしているため、フォーカス時にも(outlineによる)枠線は付加されなくなります。
※borderプロパティを使った枠線は、何の影響もなく表示されます。
textarea要素で作るテキストエリアにカーソルが入った場合だけを対象にして、ブラウザが勝手に枠線を描画しないようにするには、以下のように書けば良いでしょう。
CSSソース
textarea:focus { outline: none; }
textarea要素に対して :focus疑似クラスを使っています。
簡単ですね。
input要素で作るテキスト入力欄にカーソルが入った場合だけを対象にして、ブラウザが勝手に枠線を描画しないようにするには、以下のように書けば良いでしょう。
CSSソース
input[type=text]:focus { outline: none; }
属性セレクタを使って、input要素のうち、type属性の値が「text」である場合に対して :focus疑似クラスを使っています。
簡単ですね。
表示例は以下の通りです。
outline: none;
を指定してあるため、テキスト入力欄内にカーソルを入れても、余計な枠線は付加されません。
■何も装飾していないテキストエリアと、borderプロパティで枠線を加えたテキストエリア:
■上記に対して、ChromeやOperaなどの一部のブラウザがフォーカス時に枠線を付加しないようにしたテキストエリア:
なお、フォーカスが当たっている場合にだけ特別な装飾を施すことは、今どこが入力可能状態なのか?を示す目的には役立ちます。
したがって、上記のようにブラウザが標準で動的に加える枠線を消すのであれば、その代わりに「今ここが入力可能状態ですよ」と示すような別の装飾を加える方が望ましいでしょう。
カーソルや文字が入っている間だけ一時的に入力欄を大きく表示するテキストエリアの作り方については、別の記事で紹介しますのでそちらもご参照下さい。
()
▼当サイト内外で関連しそうな記事などが自動表示されています。(たぶん)