web制作勉強中です。

職業訓練校でweb制作を勉強しています。勉強のメモなど記録します。

【授業メモ】グリッドレイアウトとキャプションの表示

復習ポイント
■opacityとrgbaの違いとアニメーション
  • opacity→すべての要素が透明になる
  • rgba   →背景色だけが透明になる
   例えば、hoverして透明にしたい場合は、hover前の背景色もrgbaで指定しないといけない。
 
  • transition: 〇s; →〇秒かけて変化する
 
 
例)hoverすると0.4秒かけて、変化する
.one .cap {/*アニメーションのスタート前(完全に料理の写真だけが見えている状態)*/
  position: absolute;
  left: 0;
  top: 0;
  background: rgba(255,255,153,0.3);
  opacity: 0;
 
}
 
.one .cap:hover {/*アニメーション後の設定(文字が見えて、後ろの料理の写真も半透明で見えている状態)*/
  background: rgba(255,255,153,0.ugokasu 3);
  opacity:1;
  transition: 0.4s;
}
 
 
■要素の%表示
100%→要素すべて
50%→要素の半分 など、%で場所を指定することができる
.three .cap : absolute; 
  top: 0;
  left: 100%;  →.threeの中の.capを、.threeの左となりぴったりにposition配置する 
}
 
.three:hover .cap {
  top: 0;
  left: 50%;  →.threeをhoverしたときに、その中の.capを、.threeの50%となり(50%被ってる)に動かす
  transition: 0.3s;
}
 
 
 
キャプションの表示
→キャプションをdivに入れ、設定し、overflow:hiddens;で余分な部分を隠すと動きと結果だけが表示される
 
■キャプションの入れ方 
画像を入れているliの中にdivを作り、そこにキャプションを入れていく
ulの中にはliしか入れられないが、liの中になら、div p等を入れることができる!!!!!!!
 
<ul>
 
<li><img src="img/ph01_l.jpg" alt="">
<div class="cap">
<h2>料理名</h2>
<p>料理の説明文</p>
</div></li>
 
<li><img src="img/ph11_l.jpg" alt="">
<div class="cap">
<h2>料理名</h2>
<p>料理の説明文</p>
</div></li>
 
<li><img src="img/ph19_l.jpg" alt="">
<div class="cap">
<h2>料理名</h2>
<p>料理の説明文</p>
</div></li>
 
</ul>
 
 
 
 
■写真をhoverしてキャプションを表示する方法
  親要素に動作を加えたときに、親要素に属する子要素に変化を加える
<li class="two"><img src="img/ph11_l.jpg" alt="">
<div class="cap">
<h2>料理名</h2>
<p>料理の説明文</p>
</div></li>
 
 
.two:hover .cap {
  top: 50%;
  left: 0;
  transition: 0.3s;
}
 
hoverするのはli class="two"、動かしたいのはliの中の文字が入っているdiv class="cap"
.twoの中にある.cap(親要素の中の子要素を指定できる)

f:id:shima0web:20170823154530p:plain


■キャプションの動きの設定ができたら、
ulとli(キャプションを入れた要素)にoverflow:hidden;をかければ完成
ul {
  overflow: hidden;
  width: 960px;
  height: 320px;
  margin: 50px auto;
}
 
li {
  margin: 10px;
  float: left;
  width: 300px;
  height: 300px;
  position: relative;
  overflow: hidden;
}
 
.cap {
  width:300px;
  height: 300px;
  background: #FFFF99;
}
 
.one .cap {/*アニメーションのスタート前(完全に料理の写真だけが見えている状態)*/
  position: absolute;
  left: 0;
  top: 0;
  background: rgba(255,255,153,0.3);
  opacity: 0;
 
}
 
.one .cap:hover {/*アニメーション後の設定(文字が見えて、後ろの料理の写真も半透明で見えている状態)*/
  background: rgba(255,255,153,0.3);
  opacity:1;
  transition: 0.4s;
}
 
.two .cap {
  position: absolute;
  top: 100%;
  left: 0;
}
 
.two:hover .cap {
  top: 50%;
  left: 0;
  transition: 0.3s;
}
 
 
.three .cap {
  position: absolute;
  top: 0;
  left: 100%;
}
 
.three:hover .cap {
  top: 0;
  left: 50%;
  transition: 0.3s;
}
 
 
</style>
</head>
 
<body>
<ul>
 
<li class="one"><img src="img/ph01_l.jpg" alt="">
<div class="cap">
<h2>料理名</h2>
<p>料理の説明文</p>
</div></li>
 
<li class="two"><img src="img/ph11_l.jpg" alt="">
<div class="cap">
<h2>料理名</h2>
<p>料理の説明文</p>
</div></li>
 
<li class="three"><img src="img/ph19_l.jpg" alt="">
<div class="cap">
<h2>料理名</h2>
<p>料理の説明文</p>
</div></li>
 
</ul>
</body>
</html>
 
 
 
グリッドレイアウトを作り、キャプションを入れる
格子状のレイアウト。レスポンシブ対応しやすいため、今もよく使われているレイアウト。
画面をいくつかのサイズのブロックで構成・配置していく方法。
 
 
 
■グリッドレイアウトのポイント
各要素の
  • floatしている要素同士のmarginは加算される
  • 要素の上に要素を重ねるpositionを上手く使う
  
 
 
 
見本

f:id:shima0web:20170823154524p:plain

 
 
①まず、グリッドの大きさ(画像の大きさをメモして整理する)
 S 140×140
   M   140×300 
         300×140
   L    300×300
 
 
②構造と幅高さ隙間を理解するために、図に書いて整理する
 ・縦長floatの3カラムレイアウト
 ・liに画像を入れてfloatで並ばせて、カラムもfloatで並ばせる
 ・margin加算忘れずに!
 
 
※ここだけfloat注意 M縦のみfloat:right!!!

f:id:shima0web:20170823154532p:plain

 
 
■レイアウトができたら、キャプションを入れていく
 
 positionメモ
・positionで基準点を設けないでabsoluteすると、属する親要素は追い抜いて、基準点はbodyになってしまう
 %は、本来「親要素の何%」かなのだが、positionの場合は「基準点の何%」という意味で、%の対象は変わる
 
 
 
明日はこれをレスポンシブ対応していくらしい・・・!!!!!
やることが増えて混乱してきました。
便利だけどキャプションは結構復習しないと難しい。