WEBデザインの勉強

初心者が1からWEBデザインを勉強するブログ。

bodyを5分割/hoverでキャプションを移動させる

全画面の上が2分割で下が3分割の計5分割で
それぞれをhoverした時にキャプションを上に移動して隠れていたボタンを表示する。
レスポンシブでスマートフォン対応させる。

参考サイト

www.vogue.co.jp

講師の解説ブログ

yachin29.hatenablog.com

f:id:mmmmofu:20160802123349p:plain

http://efu.sakura.ne.jp/web/body5/


<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>bodyを5分割</title>
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<link rel="stylesheet" href="style2.css">
</head>

<body>
<div id="container">
<div class="top TL">
<a href="#">
<div class="cap">
<h3>ページタイトル</h3>
<p class="text">ページの説明文、テキストテキストテキスト</p>
<p class="view">view&nbsp;more</p>
</div><!-- /.cap -->
</a>
</div>
<div class="top TR">
<a href="#">
<div class="cap">
<h3>ページタイトル</h3>
<p class="text">ページの説明文、テキストテキストテキスト</p>
<p class="view">view&nbsp;more</p>
</div><!-- /.cap -->
</a>
</div>
<div class="bottom BL">
<a href="#">
<div class="cap">
<h3>ページタイトル</h3>
<p class="text">ページの説明文、テキストテキストテキスト</p>
<p class="view">view&nbsp;more</p>
</div><!-- /.cap -->
</a>
</div>
<div class="bottom BC">
<a href="#">
<div class="cap">
<h3>ページタイトル</h3>
<p class="text">ページの説明文、テキストテキストテキスト</p>
<p class="view">view&nbsp;more</p>
</div><!-- /.cap -->
</a>
</div>
<div class="bottom BR">
<a href="#">
<div class="cap">
<h3>ページタイトル</h3>
<p class="text">ページの説明文、テキストテキストテキスト</p>
<p class="view">view&nbsp;more</p>
</div><!-- /.cap -->
</a>
</div>
<p class="logo"><img src="img/02.svg"></p>
</div><!-- /#container -->
</body>
</html>
@charset "utf-8";

html, body, div, h1, h2, h3, h4, p, small, ul, li {
  margin: 0;
  padding: 0;
  line-height: 1.0;
  font-family:
    'Hiragino Kaku Gothic ProN',
    Meiryo,
    sans-serif;
}
ul {
  list-style: none;
}
a {
  text-decoration: none;
}
img {
  max-width: 100%;
  border: none;
  vertical-align: bottom;
}
html, body, #container {
  width: 100%;
  height: 100%;
}
#conteiner {
  position: relative;
}
.top {
  width: 50%;
  height: 50%;
  float: left;
  position: relative;
  overflow: hidden;
}
.bottom {
  width: 33.33%;
  height: 50%;
  float: left;
  position: relative;
  overflow: hidden;
}
.TL {
  background: url(img/01.png) no-repeat;
  background-size: cover;
}
.TR {
  background: url(img/02.png) no-repeat;
  background-size: cover;
}
.BL {
  background: url(img/03.png) no-repeat left bottom;
  background-size: cover;
}
.BC {
  background: url(img/04.png) no-repeat;
  background-size: cover;
}
.BR {
  background: url(img/05.png) no-repeat;
  background-size: cover;
}
.logo {
  width: 200px;
  height: 200px;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  z-index: 9999;
}
/* ホバーアクション */
.top a, bottom a {
  display: block;
  width: 100%;
  height: 100%;
}
.cap {
  padding-top: 240px;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  text-align: center;
  z-index: 10;
  opacity: 1;
  transition: .4s ease-in-out;
  background: rgba(245,44,67,0);
}
.cap:hover {
  top:-50%;
  left: 0;
  background: rgba(245,44,67,1);
}
h3{
  padding-bottom: 20px;
  color: #FFF;
  font-size: 22px;
}
.text { 
  color: #FFF;
  font-size: 16px;
  padding-bottom: 50px;
}
.view {
  width: 30%;
  margin: 0 auto;
  font-size: 18px;
  color: #FFF;
  padding: 6px;
  border: 1px solid #FFF;
}
@media screen and (max-width:787px) {
.logo {
  top: 10px;
  left: 10px;
  margin: 0;
  width:70px;
  height: 70px;
}
.top,.bottom {
  float: none;
  width: 100%;
  height: 40%;
  margin-bottom:180px;
  overflow: inherit;
}
.cap {
  padding-top: 20px;
  top: 100%;
  left: 0;
  width: 100%;
  height: 180px;
  transition: none;
  background: rgba(0,0,0,1);
}
.cap:hover {
  top: 100%;
  left: 0;
  background: rgba(0,0,0,1);
}
.text {
  padding: 0 10px;
  padding-bottom: 30px;
}
}

まずdiv id="container"の中にdivを5個作り、クラス名を上部分をtop下部分をbottomと
それぞれ別のクラス名(2個ずつ)設定する。
横幅いっぱいにしたいので

html, body, #container {
  width: 100%;
  height: 100%;
}

と記述する。
ロゴを真ん中にしたいので#containerにposition:relativeを設定
ロゴに

  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;

と記述すると中央にくる。


以前書いたブログ
mmmmofu.hatenablog.com