枠線を角丸にしてみよう!
Googleのトップページを模写ス!(メイン編)

HTML&CSS

前回に続いてGoogleのトップページを模写していきます。
ヘッダーの次は中央部のメイン部分です。
まずは構造の把握からいきます。

スポンサーリンク
スポンサーリンク

メイン部分の構造

Googleのトップページのメイン部分は以下の3つのパーツに分かれていると考えます。
一番上は「logo」クラスでGoogleのロゴ画像を配置していきます。
真ん中は「search」クラスで、検索ワードの入力フォームを配置します。
そして一番下が「button」クラスで、検索ボタンを配置していきます。
それでは、まずは「logo」クラスから模写していきます。

ロゴ画像を配置する

とりあえずロゴマーク自体は模写できないので、トップページからダウンロードして使います。
あとは貼り付けるだからきっと簡単でしょう!
画像の貼り付けは「img src=”画像のURL”」です。
コードを書くとこんな感じです(前回のコードの</header>の下に書いていきます)。

</header>
<main>
 <div class="logo">
  <img src="logo.png">
 </div>
</main>
</body>

するとこんな感じに

うーん・・・ロゴマークがヘッダー部分に食い込んでいますね。
さてどうしたものか。

ヘッダーの高さを管理する

この現象を解決するために、今更ですがヘッダーの高さ(height)を指定してみます。
適当に50pxくらいでしょうか。

<style>
 li{list-style:none;}
 a{text-decoration:none;} 
 a:link {color: #000000}
 header{height:50px;}
 .header-left{float:left; margin-left:-40px;}
 .header-left li{float:left; margin-left:20px;}
 .header-right{float:right; margin-right:20px;}
 .header-right li{float:left; margin-left:20px;}
 .login{background-color:blue; color:white; padding:5px 10px; border-radius:3px;}
</style>

余白、幅の指定、中央揃え

とりあえずヘッダーとロゴを分離できました。あとはヘッダーとロゴの間隔をさらに開けたうえで、ロゴを小さくして中央揃えにすれば良さそうです。
間隔を開けるために、今回はheaderの下部に余白(margin-bottom属性)を追加します(mainクラスの上部に余白(margin-top属性)でもできると思います)。
要素の横幅を指定するには先ほどのheightに対してwidth属性を使用します。今回はトップページ中に画像が1つしかないので、横着してimg要素の横幅を指定します。他にも画像があったらクラス名なりid名なりを指定する必要があります。
中央揃え(text-align属性)は検索フォームや検索ボタンもすべて真ん中に持ってこれるように、mainクラス全体に対してしていします。

<style>
 li{list-style:none;}
 a{text-decoration:none;} 
 a:link {color: #000000}
 header{height:50px; margin-bottom:100px;}
 .header-left{float:left; margin-left:-40px;}
 .header-left li{float:left; margin-left:20px;}
 .header-right{float:right; margin-right:20px;}
 .header-right li{float:left; margin-left:20px;}
 .login{background-color:blue; color:white; padding:5px 10px; border-radius:3px;}
 main{height:500px; text-align:center;}
 img{width:280px;}
</style>

それっぽくなってきましたね。
次は検索フォームです。

検索フォームは最難所!?

「うーん・・・これどうやって再現すればいいんだろう?」ってな感じです。
検索フォームに関しては、正直パッと見でどうすれば分かりませんでした。
とりあえず自分なりに考え付いたのが

  • 虫眼鏡マークは「Font Awesome」から引っ張ってくる。
  • 入力フォームなので、input要素を配置して枠線を消す。
  • 虫眼鏡と入力フォームを角丸の枠線で囲む。

難しそうですが、以上の手順で作っていきます。

「Font Awesome」を利用する

前回同様に「Font Awesome」に頼ります。

「Font Awesome」内で「search」で検索すると一発で見つかりました。分かりやすいです。
「search」クラスを作成して、その中にコピーしたコードを貼り付けていきます。


<main>
 <div class="logo">
  <img src="logo.png">
 </div>
 <div class="search">
  <i class="fas fa-search"></i>
 </div>
</main>

入力フォームを配置する

次は入力フォームを配置していきます。とりあえずinputタグを置いてみます。


 <div class="search">
  <i class="fas fa-search"></i>
  <input>
 </div>

配置的にはそれっぽくなりました。
次はロゴマークに近すぎるので少し離して(margin-top:30px;)、さらに入力フォームの枠線を取ってしまいます(border:none;)。
また、入力フォームの横幅も長く(500px)し、虫眼鏡と入力フォームの間隔を20px分開けておきます。


 input{width:500px; margin-left:20px; border:none;}
 .search{margin-top:30px;}
</style>

入力フォームの枠線を消せました。虫眼鏡の位置も左にずれています。

全体を囲む枠線を付ける

次は虫眼鏡と入力フォームを含む全体に囲みを付けるために、「search」クラス自体に枠線を設定します。
枠線の横幅は入力フォームより長い600pxに、枠線は太さ1pxでライトグレーの一重線(solid)を設定していきます。


 .search{margin-top:30px; width:600px; border:1px solid lightgray;}

なぜか左に寄ってしまいました( ;∀;)
とりあえず、要素を中央に持ってきたいときは、marginの水平方向を「auto」にすればいいはずです。margin-topからmarginにして、水平方向の記述もできるように変えてみます。

 .search{margin:30px auto; width:600px; border:1px solid lightgray;}

なんとか治りました。このmargin関係も意図しない動作をすることが多い気がします(私が分かっていないだけです)。

角丸にする

枠線の角を丸くします。「border-radius」を使えばいいですね!
今回は半径20px分、角を丸くしてみます。

 .search{margin:30px auto; width:600px; border:1px solid lightgray; border-radius:20px;}

内側の余白を設定する

外側の余白はmarginですが、要素の内側の余白はpaddingを使います。
入力フォームの内側にもう少し余裕を持たせたいので、余白を広げていきます。
今回は縦方向に10px、横方向に5pxの余白を設定します。

 .search{margin:30px auto; width:600px; border:1px solid lightgray; border-radius:20px; padding:10px 5px;}

無事、本家と近い大きさの入力フォームができました。

影をつける

本家の入力フォームには周りに若干影がついているので、真似していきます。
影を付けるには、「box-shadow」属性を使います。
今回は入力フォームの周りに1pxのライトグレーの影を付けていきます。

 .search{margin:30px auto; width:600px; border:1px solid lightgray; border-radius:20px; padding:10px 5px; box-shadow:1px 1px 1px 1px lightgray;}

影を付けることができました。

検索ボタンを配置する

最後に検索ボタンを2つ配置します。これはそこまで難しくありません。
まずは、spanタグを2つ配置し、それぞれに「left-button」と「right-button」というクラス名を付けていきます。ポイントとしては以下のとおりです。

  • 内側の余白を設定する(今回は上下に6px、左右に10pxにする)
  • ボタンは両方とも角丸にする(今回は半径5px分丸くする)
  • ボタンは両方とも背景色を付ける(今回はwhitesmokeにする)
  • 左のボタンと右のボタンの余白を開ける(今回は5pxにする)
  • ボタン内のフォントサイズをやや小さくする(今回は15pxにする)

HTMLとCSSのコードはそれぞれこんな感じです。

 <div class="search">
  <i class="fas fa-search"></i>
  <input>
 </div>
 <div class="button">
  <span class="left-button">Google 検索</span>
  <span class="right-button">I'm Feeling Lucky</span>
 </div>
</main>
</body>
 .left-button{padding:6px 10px; margin-right:5px; border-radius:5px; background-color:whitesmoke;}
 .right-button{padding:6px 10px; border-radius:5px; background-color:whitesmoke;}
 .button{font-size:15px;}
</style>

実際の画面はこんな感じです。

ここまでのソースコードは以下の通りです。ちなみに今更ですが、検索ボタンにもaタグを付けておきました。

さて、次はいよいよ最後はフッター部分です。頑張っていきましょう!

<html>
<head>
<style>
 li{list-style:none;}
 a{text-decoration:none;} 
 a:link {color: #000000}
 header{height:50px; margin-bottom:100px;}
 .header-left{float:left; margin-left:-40px;}
 .header-left li{float:left; margin-left:20px;}
 .header-right{float:right; margin-right:20px;}
 .header-right li{float:left; margin-left:20px;}
 .login{background-color:blue; color:white; padding:5px 10px; border-radius:3px;}
 main{height:500px; text-align:center;}
 img{width:280px;}
 input{width:500px; margin-left:20px; border:none;}
 .search{margin:30px auto; width:600px; border:1px solid lightgray; border-radius:20px; padding:10px 5px; box-shadow:1px 1px 1px 1px lightgray;}
 .left-button{padding:6px 10px; margin-right:5px; border-radius:5px; background-color:whitesmoke;}
 .right-button{padding:6px 10px; border-radius:5px; background-color:whitesmoke;}
 .button{font-size:15px;}
</style>
 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css">
</head>
<body>
<header>
 <div class="header-left">
  <ul>
   <li><a href="#">Googleについて</a></li>
   <li><a href="#">ストア</a></li>
  </ul>
 </div>
 <div class="header-right">
  <ul>
   <li><a href="#">Gmail</a></li>
   <li><a href="#">画像</a></li>
   <li><a href="#"><i class="fas fa-th"></i></a></li>
   <li><a href="#"><span class="login">ログイン</span></a></li>
  </ul>
 </div>
</header>
<main>
 <div class="logo">
  <img src="logo.png">
 </div>
 <div class="search">
  <i class="fas fa-search"></i>
  <input>
 </div>
 <div class="button">
  <span class="left-button"><a href="#">Google 検索</a></span>
  <span class="right-button"><a href="#">I'm Feeling Lucky</a></span>
 </div>
</main>
</body>
</html>

コメント

タイトルとURLをコピーしました