向壁虚造

WEBサイト作成のためのプログラミング備忘録

CSSだけで作れる閉じるボタン&サンプルコード紹介

CSSだけ!閉じるボタン(×・バツ)の作り方&サンプルコード

モーダルウィンドウやハンバーガーメニューなどの開閉式のコンテンツには「閉じるボタン」が欠かせません。

単純に「閉じる」という文言をそのままボタンとして使うこともできます。

しかし「×(バツ)」印の閉じるボタンを設置してあげたほうが、ユーザーにとっては直感的に使いやすいかと思います。

「×(バツ)」ボタンがあると便利

そこで今回は、HTML&CSSだけで「×(バツ)」印の閉じるボタンを作る方法を解説します。

基本的にコピペだけで、多様なバリエーションの閉じるボタンを搭載できるので、初心者の方もぜひ活用してみてください。

(上図のような「開閉式のコンテンツ」とセットで作りたい場合はこちらをご覧ください。)

【基本】閉じるボタンの「×(バツ)」を描画する方法

まず、閉じるボタンの「×(バツ)」印をCSSでどのように描画するのか、基本的な部分を解説したいと思います。

そもそも、お手元のキーボードで「ばつ」と入力し変換すれば、記号としての「×」を表示することができます。

しかし、線の太さや大きさ・角の丸みを調整したり、枠線・アニメーションなど装飾を加えるにはCSSで作ったほうが扱いやすいです。

CSSで「×」を描画するなら、疑似要素で組み立てる方法がおすすめです。

まず、HTMLで以下のような空の要素を用意してください。

要素本体のpositionrelativeに変更し、具体的な「×」のスタイルは、疑似要素に丸投げします。

要素がインラインである場合には、displayblockあるいはinline-blockにしておくと、後々デザインの調整しやすいです。

疑似要素は::before::afterの両方を使い、それぞれ「×」の片棒を担います。

共通指定(8-16行)では、positionabsoluteに変更し、棒の幅(太さ)と高さ(13-14行)を調整してください。

top・leftプロパティ(11-12行)では、「×」を要素本体の真ん中に配置するよう指定しています。

そして、疑似要素の個別指定(18・22行)で逆方向に回転、棒同士をクロスさせてましょう。

CSSならバツ印を自在に調整できる

また、共通設定にborder-radiusプロパティを追加すれば、棒の四隅に丸みを付けることができます。

棒の幅(太さ)の半分の値を指定すると、ちょうど良いかと思います。

また以下のように、両方のrotate()の値を近づけることで、細身の「×」を作ることも可能です。

このように、記号としての「×」だったら難しい調整が、CSSなら簡単に出来ます。

【コピペOK】閉じる(バツ)ボタンのサンプルコード

CSSで「×」を描画する方法を踏まえたうえで、閉じるボタンのデザインを考えてみましょう。

今回は、すぐに使えるサンプルデザインを3点ご紹介します。

基本的にコピペのみで実装できますが、前章を読んでもらえれば理解が深まり、自分でカスタマイズしやすくなるんじゃないかと思います。

1.四角い閉じる(バツ)ボタン

四角い枠の閉じるボタン

前章で解説したコードにborderプロパティを追加するだけで、シンプルな閉じるボタンを実装できます。

背景やバツ印の色などは、サイトのレイアウトに合わせて調整してみてください。

左右に他の要素(テキストなど)を置きたい場合は、要素本体のdisplayinline-blockに変えましょう。

borderプロパティの値は、左から順に「太さ(2px)」「枠線の種類(solid)」「枠線の色(#333)」です。

背景色のみで四角い閉じるボタンを作る

あるいはborderプロパティを除去し、上図のように背景色のみで四角いボタンを表現することもできます。

変更点は以下の通りです。

要素本体のスタイルからborderが取り除かれているのを確認してください。

また、少しだけバツ印の棒の高さ(15行)を短くしてみました。

要素本体の背景色(6行)を暗い色に、バツ印の色(16行)を明るい色に指定することで、白抜きの閉じるボタンを作ることができます。

2.丸い閉じる(バツ)ボタン

丸い枠の閉じるボタン

上図のように丸い枠線でバツ印を囲むには、borderプロパティと一緒にborder-radiusプロパティを追加します。

border-radiusの値を50%に指定することで、正方形の要素が正円に整形されます。

正円ではなく角丸の四角形にしたい場合は、より小さい値を指定してみてください。

バツ印を白抜きした丸い閉じるボタン

上図のようにバツ印を白抜きする場合は、要素本体のスタイルからborderプロパティを除去し、backgroundを暗めの色に調整します。

3.マウスオーバーで回転する閉じる(バツ)ボタン

マウスオーバーで閉じるボタンを回転

視覚的な遊びが欲しい場合は、上図のようにアニメーションを加えるのも一つの手です。

今回は、前節で紹介した「丸い閉じる」ボタンをマウスオーバー時に回転させてみましょう。

と言っても、前節のスタイルに数行のコードを付け加えるだけです。

まず疑似クラス:hoverを追加し、要素本体のマウスオーバー時のスタイル(30行-)を指定します。

transformrotate()関数で回転させ、まるまる要素が一周するよう指定します。

このままではアニメーションにならないため、要素本体のスタイルにtransitionプロパティを書き加えましょう。

値の意味は「プロパティ名(all)」「秒数(1s)」です。

秒数は好みで調節してみてください。

【応用】表示/閉じるボタンでコンテンツを開閉させるテクニック

ここまで閉じるボタンをCSSで描画する方法を紹介してきました。

しかし、WEBデザインでは閉じるボタン単体だけ使用することはありません。

表示/非表示(開閉)の切り替えがあるコンテンツと一緒に使うのが一般的かと思います。

そこで、この章では開閉式のコンテンツに閉じるボタンを実装するテクニックをレクチャーします。

下図のようなクリックで表示/非表示を切り替わるコンテンツを作ってみましょう。

開閉式のコンテンツに閉じるボタンを実装してみた

「メニュー」や「目次」など長めのリストを収納する際に便利です。

クリックと同時に簡単なアニメーションも加えてみました。

今回はJavaScriptは使わず、HTML・CSSだけで実装してみたいと思います。

1.HTMLを準備

手始めにHTMLを用意しましょう。

コードは以下の通りです。

まず冒頭のinputタグを確認してください。

本来、チェックボックスを作るためのコードですが、ここではクリックによる表示/非表示を切り替えるために使用します。

後ほどCSSで「チェックが入った⇒コンテンツを表示」「チェックが外れた⇒コンテンツを非表示」といった感じに設定します。

ちなみに、チェックボックス自体はCSSで除去するので、レイアウトが崩れる心配はありません。

直後にlabelタグがありますが、inputid属性の値(switch)をfor属性にも指定しておいてください。

こうすることで、label内の要素(4-6行)をクリックするだけでチェックボックスにチェックが入いるようになります。

label内にはボタンを設置していきます。

それぞれ.iconが「ー」「×」印のアイコン、.openが表示ボタン、.closeは閉じるボタンです。

テキストはお好みで書き換えてもらってOKです。

また、コンテンツは.contents内に収納します。

高さの上限は設けないので、段落を複数追加してもらっても問題ありませんし、リストや他のブロック要素に変えてもらっても大丈夫です。

2.:checkedでコンテンツを開閉

次はCSSです。

まずはコードからご覧ください。

長めのスタイルになので、要点を絞って解説します。

はじめに、チェックボックス本体は常時、非表示(7行)に指定しましょう。

表示上は見えませんが、チェックの判定は機能するので安心してください。

次に、デフォルト(チェック前)のアイコンは「-」印を描画(35行)しておきます。

また、「表示ボタン」だけ表示(44行)させ、「閉じるボタン」とコンテンツは非表示(48・52行)です。

クリック後のスタイルは、疑似クラス:checkedを使います。

:checkedはチェックボックスにチェックが入っている時にのみスタイルを適用できます。

HTMLにinputタグを配置しているのは、このためです。

クリック後(チェック済み)は、「表示ボタン」を非表示(67行)に、「閉じるボタン」とコンテンツを表示(71・75行)に切り替えます。

また、疑似要素のrotate()を調整(59・63行)し「-」印を「×」印へ。

ちなみに、transitionプロパティを指定(36行)しておくと「-」~「×」の切り替わりをアニメーション化できます。

3.ハンバーガーメニューに応用するには?

このような閉じるボタンと:checkedを使ったクリックイベントの組み合わせは、ハンバーガーメニューにも応用できます。

以下のページにて、詳しく解説しているので、実装したい方は参考にしてみてください。

CSSだけ!メガメニューを作る簡単テクニック(レスポンシブ対応)

CSSだけ!こんなアイコン&ボタンもおすすめ

今回は、CSSで「×(バツ)」印の閉じるボタンを作る方法を解説しましたが、向壁虚造では他のアイコン・ボタンを作るテクニックも紹介しています。

【矢印】CSSだけで矢印アイコン&ボタンを作る方法!サンプル6選紹介

【ひし形】CSSで「ひし形」を作る3つの方法!正方形じゃないダイヤモンド型を描くには?

すべてHTML&CSSのみで描画する方法を解説しています。

コピペOKのサンプルコードも用意しているので、初心者の方もどうぞ。

まとめ

今回は「×(バツ」印をCSSで描画する基本的な方法から、「閉じるボタン」として実用化するまでのテクニックをレクチャーしました。

「×(バツ)」印を表現するだけでも、疑似要素を使わなければならず、やや手間がかかるのは否めないところですね。

ただ、キーボードで記号としての「×」を入力するよりも、多様な装飾・アニメーションを加えることができるので、WEBデザイン的にはCSSで描写するほうを推奨します。

ぜひ、記事の後半で紹介した「開閉式のコンテンツ」とセットで使ってもらえたらと思います。