ダウンロード サンプルファイル (6.5 KB)
立体感のある検索ボックス
次のサンプルでは、図4のような立体感のある検索ボックスをスタイリングしてみましょう。
入力欄のフォーカス時には背景がハイライト表示され、ボタンにカーソルが乗ると凹んだようなデザインになります。
HTML5でマークアップ
先ほどと同じくHTML5で書いたシンプルなコードですが、2つ目のinput要素のtype属性の値はsubmitとなっています。
<form> <input type="search" class="text"> <input type="submit" value="検索"> </form>
positionプロパティで配置する
先のサンプルと同じように絶対配置しますが、その前に、幅、パディング、ボーダーを指定して、左からの距離を計算しておきましょう。今回も入力欄の右とボタンの左をぴったり合わせるので、入力欄の右ボーダーはなくしておきます。ボタンの左からの距離は、入力欄の幅200px+左パディング10px+右パディング10px+左ボーダー1px=221pxです。
form {
position: relative;
}
input[type="search"] {
width: 200px;
padding: 10px;
font-size: 14px;
border: 1px solid #cc9900;
border-right: 0; /* 右ボーダーなし */
box-sizing: content-box;
position: absolute;
top: 0;
left: 0;
}
input[type="submit"] {
font-size: 14px;
padding: 10px 20px;
border: 1px solid #cc9900;
position: absolute;
top: 0;
left: 221px;
}
これで入力欄の右側とボタンの左側をぴったり合わせることができるはずですが、Firefoxで表示すると図6のようにボタンの高さがずれてしまいます。Firefoxには::-moz-focus-innerという独自の擬似要素があり、四方に1pxの点線と左右に2pxのパディングが設定されているためです。
次のように指定すると、Firefoxでも高さを揃えることができます。
input::-moz-focus-inner { /* Firefoxのボーダーとパディングをリセット */
border: 0;
padding: 0;
}
検索テキスト入力欄とボタンのスタイリング
配置ができたので、入力欄を装飾していきましょう。border-radiusで左上と左下に角丸を指定、box-shadowでくすんだオレンジ色(#cc9966)のシャドウを内側に指定します。
input[type="search"] {
~中略~
border-radius: 5px 0 0 5px; /* 左上と左下に半径5pxの角丸 */
box-shadow: 0 0 5px #cc9966 inset; /* ボックスの内側にシャドウ */
}
ボタンのスタイリング
続いてボタンの装飾です。背景は、linear-gradientプロパティで、上から下方向に濃いオレンジ(#ffcc99)から薄いオレンジ(#ff9900)のグラデーションを指定します。
ボタンの中のテキストはやや文字間隔が詰まっているように感じるので、letter-spacingプロパティで文字間隔を調整します。ここでは10pxを指定しましたが、テキストの右側にも10pxの余白ができてしまうので、右パディングで調整します。
box-shadowで内側にハイライトとシャドウを付け、さらにtext-shadowでテキストに影を付けてあげると、よりリッチな表現になります。
input[type="submit"] {
~中略~
font-weight: bold;
letter-spacing: 10px; /* 文字間隔(10px追加) */
padding: 10px 10px 10px 20px; /* 右パディングをletter-spacing分差し引く */
background: linear-gradient(#ffcc99, #ff9900); /* グラデーション */
color: #ffffff;
border-radius: 0 5px 5px 0; /* 右上と右下に半径5pxの角丸 */
box-shadow: 1px 1px 1px 0 #ffffcc inset, -1px -1px 3px 0 #ff9900 inset; /* ボックスの内側にハイライトとシャドウ */
cursor: pointer; /* リンクカーソル */
text-shadow: 0 -1px 0 #cc9900; /* テキストの上方向に1pxの影を付ける */
}
フォーカス時とホバー時のスタイルを指定
最後に、入力欄のフォーカス時とボタンのホバー時のスタイルを指定して完成です。ボタンのグラデーションやシャドウ、ハイライトはデフォルト時と逆の向きになるよう指定すると凹んだ表現になります。なお、図8のブルーのアウトラインのように一部のブラウザではフォーカス時やアクティブ時にアウトラインが表示されます。outline:none;でアウトラインをリセットできます。
input[type="search"]:focus {
background-color: #ffffe0;
}
input[type="submit"]:hover {
background: linear-gradient(#ff9900, #ffcc99); /* グラデーション */
box-shadow: -1px -1px 1px 0 #ffffcc inset, 1px 1px 3px 0 #ff9900 inset; /* ボックスの内側にハイライトとシャドウ */
}
input {
outline: none; /* アウトラインをリセット */
}
この記事は参考になりましたか?
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 宮本麻矢(ミヤモト マヤ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
