ひと通りHTMLとCSSを学習したらどうするの?
模写と呼ばれるWebサイトを真似るという勉強法が良いのかな
今まで学習したコードが実際にどう使われているかわかるしね
でもどうやってやるの?
では今回は模写を実際にやってみましょう!
それほど難しくないのですが、とても長いので頑張りましょう(笑)
最後に今回はレスポンシブやリンクボタンは設定しておりませんのでご了承ください
1.今回作るサイト
模写用に架空のWebページを作りました。
よくあるパターンのものだと思います
データはこちらから
2.HTMLファイルと画像フォルダを作る
2-1.フォルダの作成と読み込み
2-2.HTMLファイルの作成
またVS Codeが日本語になってない場合は以下の順で日本語化できます。
作業が終了したらリスタートするか聞かれるので「Restart Now」をクリックしてVS Codeを再起動すればおkです
詳しくはコチラ↓
2-3.画像フォルダを作る
こんな感じになります。
Windowsも同じ感じでできると思います
詳しくはコチラ↓
3.headタグ内に情報を書く
テキストエディターを開きheadタグ内に情報を書きます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>K's Meat</title>
</head>
<body>
</body>
</html>
VS Codeを使っている方は”!”を押してから”Tabキー”を押すとひな形が出ます。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
htmlタグのlang属性を”ja”に直すだけでおkです。
ちなみに<meta name=”viewport”…はレスポンシブの時に使うものなのでとりあえず今回は無視で大丈夫です。
詳しくはコチラ↓
4.CSSファイルを作る
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>K's Meat</title>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
</body>
</html>
headタグ内に以下の一文を追加し、別にCSSファイルを作ります。
<link rel="stylesheet" href="css/styles.css">
詳しくはコチラ↓
5.リセットCSSを書く
まずは余白を消すためにリセットCSSを読み込みましょう。
お使いのものがあればお好みのものを使ってください。
@charset "UTF-8";
/*リセットCSS
----------*/
* {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
list-style: none;
outline:0;
box-sizing: border-box;
}
a {
color: inherit;
text-decoration: none;
}
img{
width:100%;
vertical-align: bottom;
}
詳しくはコチラ↓
6.グループ分けをする
まずいきなり書き始めるのも良いですがどんな構成しているかを分析してみると後々が楽です
詳しくはコチラ↓
今回のサイトだとこんな感じで構成されています
ちなみにmvはメインビジュアルの略です
<body>
<header>
</header>
<main>
<section class="mv">
</section>
<section class="course">
</section>
<section class="chef">
</section>
<section class="reservation">
</section>
</main>
<footer>
</footer>
</body>
header,section,footer{
background-color: rgba(94, 1, 255, 0.1);
border: 1px solid rgba(0,0,0,0.1);
height: 100px;
}
/*見やすさのために設定していますが最後に消します*/
7.共通設定を探す
次は効率をよくするため共通部分を探してみましょう
同じパーツを探すって事だね
今回のサイトだとこんな感じかなぁ
- インナーが使われているところ
- 各セクションのタイトル
- メインビジュアルを除くセクションの高さと下の余白
…もしかしたらまだあるかもしれないけど(笑)
結構あるね
では順番にやっていこう
7-1.インナー
完成形を見ると内側に見えない枠があるところと、ないところがあるのがわかります。
そこにインナーを作ります。
<body>
<header>
<div class="inner">
</div>
</header>
<main>
<section class="mv">
</section>
<section class="course">
<div class="inner">
</div>
</section>
<section class="chef">
<div class="inner">
</div>
</section>
<section class="reservation">
</section>
</main>
<footer>
</footer>
</body>
.inner{
width: 1200px;
margin: 0 auto;
max-width: 100%;
background-color: rgba(241,92,168,0.2); /*わかりやすさのために色を付けてあります。最後に消します*/
}
詳しくは「はにわまん」さんのサイトをご覧ください。
7-2.セクションタイトル
セクションのタイトルの大きさ、位置、フォントなどが同じなので先に作ってしまいます
<body>
<header>
<div class="inner">
</div>
</header>
<main>
<section class="mv">
</section>
<section class="course">
<div class="inner">
<h2 class="section-title">Course</h2>
</div>
</section>
<section class="chef">
<div class="inner">
<h2 class="section-title">Chef</h2>
</div>
</section>
<section class="reservation">
<h2 class="section-title">Reservation</h2>
</section>
</main>
<footer>
</footer>
</body>
html{
font-size: 62.5%;
}
body {
font-family: YuMincho, 'Yu Mincho', sans-serif;
font-size: 1.6em;
}
.section-title{
font-size: 4rem;
text-align: center;
font-weight: normal;
letter-spacing: 0.06em;
}
また文章全体のフォントも同じなのでそれも合わせておきます。
ところでなんでfont-sizeを何回も書いてるの?
- 基本的にブラウザのデフォルトのfont-sizeが16pxなのでhtmlのfont-sizeを62.5%に設定することで16×0.65の10pxになります
- bodyのfont-sizeを1.6emと設定する事で結果的に全体のfont-sizeが16pxになります
- その後font-sizeを変更したい要素が出てきたらremで指定する
この過程を通す事でレスポンシブにも対応できるようになるんだよ
7-3.セクションの高さと余白
メインビジュアル以外のセクションの高さと余白が同じなので指定します
.course,.chef,.reservation{
height: 680px;
}
section{
margin-bottom: 120px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<header>
<div class="inner">
</div>
</header>
<main>
<section class="mv">
</section>
<section class="course">
<div class="inner">
<h2 class="section-title">Course</h2>
</div>
</section>
<section class="chef">
<div class="inner">
<h2 class="section-title">Chef</h2>
</div>
</section>
<section class="reservation">
<h2 class="section-title">Reservation</h2>
</section>
</main>
<footer>
</footer>
</body>
</html>
/*リセットCSS
----------*/
* {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
list-style: none;
outline:0;
box-sizing: border-box;
}
a {
color: inherit;
text-decoration: none;
}
img{
width:100%;
vertical-align: bottom;
}
/*共通部分
----------*/
header,section,footer{
background-color: rgba(94, 1, 255, 0.1);
border: 1px solid rgba(0,0,0,0.1);
height: 100px;
}
.inner{
width: 1200px;
margin: 0 auto;
max-width: 100%;
background-color: rgba(241,92,168,0.2); /*わかりやすさのために色を付けてあります。最後に消します*/
}
html{
font-size: 62.5%;
}
body {
font-family: YuMincho, 'Yu Mincho', sans-serif;
font-size: 1.6em;
}
.section-title{
font-size: 4rem;
text-align: center;
font-weight: normal;
letter-spacing: 0.06em;
}
.course,.chef,.reservation{
height: 680px;
}
section{
margin-bottom: 120px;
}
これで準備おkです
次から各セクションを作っていくよ
もうサイトっぽいね
8.ヘッダー
こちらが完成形です
<header>
<div class="inner header-container">
<h1><a href="#"><img src="image/header-logo.png" alt="ヘッダーロゴ画像"></a></h1>
<ul class="header-nav">
<li><a href="#">Home</a></li>
<li><a href="#">Course</a></li>
<li><a href="#">Chef</a></li>
<li><a href="#">Reservation</a></li>
</ul>
</div>
</header>
header{
background-color: rgb(145, 41, 41);
height: 70px;
width: 100%;
color: #fff;
}
header h1{
width: 300px;
}
.header-container{
display: flex;
justify-content: space-between;
align-items: center;
}
.header-nav{
display: flex;
justify-content: space-between;
align-items: center;
}
.header-nav li a{
margin-left: 40px;
font-size: 2rem;
letter-spacing: 0.06em;
}
9.メインビジュアル
こちらが完成形です
<section class="mv">
<div class="mv-container">
<h2>MEET TO MEAT</h2>
<p>本当に美味い肉に会う</p>
</div>
</section>
.mv{
color: #fff;
height: 870px;
background: linear-gradient(rgba(0, 0, 0, 0.1),rgba(0, 0, 0, 0.1)), url(../image/肉.jpg) no-repeat center/cover;
}
.mv-container h2{
font-size: 10rem;
font-weight: normal;
letter-spacing: 0.1em;
}
.mv-container p{
font-size: 8.3rem;
letter-spacing: 0.01em;
line-height: 1.2;
}
.mv-container{
text-align: center;
width: 980px;
margin: 0 auto;
padding-top: 360px;
}
opacityを使うと全体に適用されて文字色まで薄くなってしまうので注意です。
10.コースセクション
こちらが完成形です
<section class="course">
<div class="inner">
<h2 class="section-title">Course</h2>
<div class="course-container">
<ul class="course-item">
<li><a href="#"><img src="image/300x350.png" alt="ダミー画像"></a></li>
<li class="course-name"><a href="#">和牛お試しコース</a></li>
<li class="course-text"><a href="#">テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</a></li>
</ul>
<ul class="course-item">
<li><a href="#"><img src="image/300x350.png" alt="ダミー画像"></a></li>
<li class="course-name"><a href="#">女子会コース</a></li>
<li class="course-text"><a href="#">テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</a></li>
</ul>
<ul class="course-item">
<li><a href="#"><img src="image/300x350.png" alt="ダミー画像"></a></li>
<li class="course-name"><a href="#">記念日コース</a></li>
<li class="course-text"><a href="#">テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</a></li>
</ul>
</div>
</div>
</section>
.course-container{
display: flex;
justify-content: space-between;
font-size: 2rem;
letter-spacing: 0.06em;
}
.course .section-title{
margin-bottom: 48px;
}
.course-item img{
margin-bottom: 24px;
border-radius: 8px;
}
.course-name{
text-align: center;
margin-bottom: 40px;
}
.course-text{
width: 300px;
}
参考までにこちらの方法でもできます。
<section class="course">
<div class="inner">
<h2 class="section-title">Course</h2>
<div class="items">
<div class="item">
<a href="#"><img src="image/300x350.png" alt="ダミー画像"></a>
<p class="course-name"><a href="#">和牛お試しコース</a></p>
<p class="course-text"><a href="#">テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</a></p>
</div>
<div class="item">
<a href="#"><img src="image/300x350.png" alt="ダミー画像"></a>
<p class="course-name"><a href="#">女子会コース</a></p>
<p class="course-text"><a href="">テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</a></p>
</div>
<div class="item">
<a href="#"><img src="image/300x350.png" alt="ダミー画像"></a>
<p class="course-name"><a href="#">記念日コース</a></p>
<p class="course-text"><a href="#">テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</a></p>
</div>
</div>
</div>
</section>
.items{
display: flex;
justify-content: space-between;
font-size: 2rem;
letter-spacing: 0.06em;
}
.item img{
width: 300px;
margin-bottom: 24px;
border-radius: 8px;
}
.course-name{
text-align: center;
margin-bottom: 40px;
}
.course-text{
width: 300px;
}
このタイプのパターンは数種類あるのでパターンを持っておくと良いと思います
11.シェフセクション
こちらが完成形です
<section class="chef">
<div class="inner">
<h2 class="section-title">Chef</h2>
<div class="chef-container">
<div><img src="image/shef.jpg" alt="シェフの画像"></div>
<div class="chef-introduction">
<h3>肉山肉男</h3>
<p>「ダイエットなんてクソ食らえ!間違えた。肉を食らえ!」が口癖のシェフ。<br>
見た目とは裏腹に繊細で筋切りの技術には定評がある。<br>
休みの日は非常しょ…、ペットの子豚を公園で散歩させている。</p>
</div>
</div>
</div>
</section>
.chef{
background-color: #912929;
}
.chef .section-title{
margin-bottom: 110px;
padding-top: 24px;
color: #fff;
}
.chef-container img{
width: 584px;
height: 340px;
object-fit: cover;
margin-right: 32px;
}
.chef-introduction{
background-color: #fff;
height: 340px;
width: 584px;
}
.chef-container{
display: flex;
justify-content: space-between;
align-items: center;
}
.chef-introduction h3{
text-align: center;
font-size: 4rem;
padding: 24px 0 32px;
font-weight: normal;
}
.chef-introduction p{
font-size: 2rem;
width: 460px;
margin: 0 auto;
letter-spacing: 0.06em;
}
12.予約セクション
こちらが完成形です
<section class="reservation">
<h2 class="section-title">Reservation</h2>
<div class="reservation-wrapper">
<p class="reservation-info">メールの方はこちら</p>
<label for="name">お名前</label>
<input type="text" id="name">
<label for="tell">ご連絡先</label>
<input type="text" id="tell">
<label for="content">お問い合わせ内容(人数、コース名、日にちなどをご記入ください)</label>
<textarea id="content"></textarea>
<p class="reservation-info">お電話の方はこちら</p>
<p class="tell"><img src="image/K's Meat Phone-number.png" alt="電話番号のロゴ"></p>
</div><!--reservation-wrapper-->
</section>
.reservation-wrapper .tell{
width: 346px;
margin: 0 auto;
}
.reservation-info{
margin-bottom: 24px;
}
.reservation-wrapper input,.reservation-wrapper textarea{
width: 100%;
margin-bottom: 16px;
}
.reservation-wrapper input{
height: 30px;
}
.reservation-wrapper textarea{
height: 200px;
}
.reservation-wrapper{
width: 892px;
margin: 0 auto;
margin-top: 34px;
}
13.フッター
こちらが完成形です
<footer>
<p>©2020 K's MEAT</p>
</footer>
footer{
height: 70px;
background-color: #912929;
color: #fff;
}
footer p{
line-height: 70px;
text-align: center;
font-size: 2rem;
letter-spacing: 0.06em;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>K's Meat</title>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<header>
<div class="inner header-container">
<h1><a href="#"><img src="image/header-logo.png" alt="ヘッダーロゴ画像"></a></h1>
<ul class="header-nav">
<li><a href="#">Home</a></li>
<li><a href="#">Course</a></li>
<li><a href="#">Chef</a></li>
<li><a href="#">Reservation</a></li>
</ul>
</div>
</header>
<main>
<section class="mv">
<div class="mv-container">
<h2>MEET TO MEAT</h2>
<p>本当に美味い肉に会う</p>
</div>
</section>
<section class="course">
<div class="inner">
<h2 class="section-title">Course</h2>
<div class="course-container">
<ul class="course-item">
<li><a href="#"><img src="image/300x350.png" alt="ダミー画像"></a></li>
<li class="course-name"><a href="#">和牛お試しコース</a></li>
<li class="course-text"><a href="#">テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</a></li>
</ul>
<ul class="course-item">
<li><a href="#"><img src="image/300x350.png" alt="ダミー画像"></a></li>
<li class="course-name"><a href="#">女子会コース</a></li>
<li class="course-text"><a href="#">テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</a></li>
</ul>
<ul class="course-item">
<li><a href="#"><img src="image/300x350.png" alt="ダミー画像"></a></li>
<li class="course-name"><a href="#">記念日コース</a></li>
<li class="course-text"><a href="#">テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</a></li>
</ul>
</div><!--course-container-->
</div><!--inner-->
</section>
<section class="chef">
<div class="inner">
<h2 class="section-title">Chef</h2>
<div class="chef-container">
<div><img src="image/shef.jpg" alt="シェフの画像"></div>
<div class="chef-introduction">
<h3>肉山肉男</h3>
<p>「ダイエットなんてクソ食らえ!間違えた。肉を食らえ!」が口癖のシェフ。<br>
見た目とは裏腹に繊細で筋切りの技術には定評がある。<br>
休みの日は非常しょ…、ペットの子豚を公園で散歩させている。</p>
</div><!--chef-introduction-->
</div><!--chef-container-->
</div><!--inner-->
</section>
<section class="reservation">
<h2 class="section-title">Reservation</h2>
<div class="reservation-wrapper">
<p class="reservation-info">メールの方はこちら</p>
<label for="name">お名前</label>
<input type="text" id="name">
<label for="tell">ご連絡先</label>
<input type="text" id="tell">
<label for="content">お問い合わせ内容(人数、コース名、日にちなどをご記入ください)</label>
<textarea id="content"></textarea>
<p class="reservation-info">お電話の方はこちら</p>
<p class="tell"><img src="image/K's Meat Phone-number.png" alt="電話番号のロゴ"></p>
</div><!--reservation-wrapper-->
</section>
</main>
<footer>
<p>©2020 K's MEAT</p>
</footer>
</body>
</html>
@charset "UTF-8";
/*リセットCSS
----------*/
* {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
list-style: none;
outline:0;
box-sizing: border-box;
}
a {
color: inherit;
text-decoration: none;
}
img{
width:100%;
vertical-align: bottom;
}
/*共通部分
----------*/
header,section,footer{
/* background-color: rgba(94, 1, 255, 0.1); */
/* border: 1px solid rgba(0,0,0,0.1); */
height: 100px;
}
.inner{
width: 1200px;
margin: 0 auto;
max-width: 100%;
/* background-color: rgba(241,92,168,0.2); わかりやすさのために色を付けてあります。最後に消します */
}
html{
font-size: 62.5%;
}
body {
font-family: YuMincho, 'Yu Mincho', sans-serif;
font-size: 1.6em;
}
.section-title{
font-size: 4rem;
text-align: center;
font-weight: normal;
letter-spacing: 0.06em;
}
.course,.chef,.reservation{
height: 680px;
}
section{
margin-bottom: 120px;
}
/*ヘッダー
----------*/
header{
background-color: rgba(145, 41, 41, 0.5);
height: 70px;
width: 100%;
color: #fff;
z-index: 1;
position: absolute;
}
header h1{
width: 300px;
}
.header-container{
display: flex;
justify-content: space-between;
align-items: center;
}
.header-nav{
display: flex;
justify-content: space-between;
align-items: center;
}
.header-nav li a{
margin-left: 40px;
font-size: 2rem;
letter-spacing: 0.06em;
}
/*メインビジュアル
----------*/
.mv{
color: #fff;
height: 870px;
background: linear-gradient(rgba(0, 0, 0, 0.1),rgba(0, 0, 0, 0.1)), url(../image/肉.jpg) no-repeat center/cover;
}
.mv-container h2{
font-size: 10rem;
font-weight: normal;
letter-spacing: 0.1em;
}
.mv-container p{
font-size: 8.3rem;
letter-spacing: 0.01em;
line-height: 1.2;
}
.mv-container{
text-align: center;
width: 980px;
margin: 0 auto;
padding-top: 360px;
}
/*コース
----------*/
.course-container{
display: flex;
justify-content: space-between;
font-size: 2rem;
letter-spacing: 0.06em;
}
.course .section-title{
margin-bottom: 48px;
}
.course-item img{
margin-bottom: 24px;
border-radius: 8px;
width: 300px;
}
.course-name{
text-align: center;
margin-bottom: 40px;
}
.course-text{
width: 300px;
}
/*シェフ
----------*/
.chef{
background-color: #912929;
}
.chef .section-title{
margin-bottom: 110px;
padding-top: 24px;
color: #fff;
}
.chef-container img{
width: 584px;
height: 340px;
object-fit: cover;
margin-right: 32px;
}
.chef-introduction{
background-color: #fff;
height: 340px;
width: 584px;
}
.chef-container{
display: flex;
justify-content: space-between;
align-items: center;
}
.chef-introduction h3{
text-align: center;
font-size: 4rem;
padding: 24px 0 32px;
font-weight: normal;
}
.chef-introduction p{
font-size: 2rem;
width: 460px;
margin: 0 auto;
letter-spacing: 0.06em;
}
/*予約
----------*/
.reservation-wrapper .tell{
width: 346px;
margin: 0 auto;
}
.reservation-info{
margin-bottom: 24px;
}
.reservation-wrapper input,.reservation-wrapper textarea{
width: 100%;
margin-bottom: 16px;
}
.reservation-wrapper input{
height: 30px;
}
.reservation-wrapper textarea{
height: 200px;
}
.reservation-wrapper{
width: 892px;
margin: 0 auto;
margin-top: 34px;
}
/*フッター
----------*/
footer{
height: 70px;
background-color: #912929;
color: #fff;
}
footer p{
line-height: 70px;
text-align: center;
font-size: 2rem;
letter-spacing: 0.06em;
}
長々とやってきましたがここまで見てくれてありがとうございました
コメント