京都のNPO法人 CRA(クリエイター育成協会)が発信するブログです。Web業界、Webデザイナー・Webプログラマー・Webマーケターの育成。

お問い合わせ
075-353-3711 受付時間:10:00〜18:00(土日・祝日除く)
menu close

CRAブログ- Web/IT・教育・福祉業界の情報を、スタッフ&インターン生が配信中

擬似クラスで作る動きのあるデザイン

2016年01月27日工藤
Pocket

【こちらの記事は、約4分程でお読みいただけます。】

こんにちは、水曜日のブログ担当の工藤です。

擬似クラスを与えて作る動きのあるCSSデザイン例です。

擬似要素と擬似クラスについてに解説はこちら

imgをhoverすると下からコンテンツが出てくるデザイン

画像をマウスオーバーすると下からコンテンツが出てくるCSSを作ります。


<div class="content-item">

<div class="content-th"><img src="http://placehold.jp/250x250.png" alt="" /></div>


<div class="content-overlay">

<h2 class="content-title">タイトル</h2>



テキストテキストテキスト

      <a class="content-btn" href="#">続きを見る</a>
    </div>

</div>

.content-item {
  position: relative;
  overflow: hidden;
  width: 250px;
  height: 250px;
}

.content-item:hover .content-overlay {
  bottom: 0;
}

.content-overlay {
  position: absolute;
  bottom: -100%;
  left: 0;
  width: 100%;
  height: 100%;
  transition: all .35s;
  color: #fff;
  background: rgba(0, 116, 217, .5);
  background: linear-gradient(rgba(0, 116, 217, .5) 0%, rgba(0, 65, 122, .5) 100%);
}

.content-title {
  font-size: 2rem;
  position: absolute;
  top: 30px;
  width: 100%;
  text-align: center;
}

.content-text {
  position: absolute;
  top: 50%;
  box-sizing: border-box;
  width: 100%;
  padding: 0 20px;
  text-align: center;
}

.content-btn {
  position: absolute;
  right: 0;
  bottom: 10px;
  left: 0;
  box-sizing: border-box;
  width: 80%;
  margin: auto;
  padding: 10px;
  transition: all .35s;
  text-align: center;
  text-decoration: none;
  color: #fff;
  border: 1px solid #fff;
  border-radius: 6px;
}

.content-btn:hover {
  color: #333;
  background-color: #fff;
}

0f4e9c8f2ede43a89127477456419868

【解説】

・親のdivに横幅と縦幅を決めて、overflowで隠しています。
overflowを消すと下記のような状態になっています。

.content-item {
  position: relative;
  /* overflow: hidden; */
  width: 250px;
  height: 250px;
}

ss3

上に乗ってくる要素に、positionで真下に表示させています。
position: absolute;とbottom: 100%;で丁度真下に表示させることが出来ます。

.content-overlay {
  position: absolute;
  bottom: -100%;
  left: 0;
}

content-itemにマウスオーバーしたときの擬似要素:hover時にcontent-overlay:bottom:-100%;を0にするとbottom:0;の位置に移動しまし、content-itemの上に重なります。

.content-item:hover .content-overlay {
  bottom: 0;
}

このままでは、一気に移動してしまうので変化が加わるクラスにアニメーションのCSSを追記します。

.content-overlay {

  transition: all .35s;

}

73d8e988020a166e186b0142c5f49bcb

終わりに

content-overlayのbottomを0にし、透明度(opacity)を0に。
hover時のcontent-overlayの透明度(opacity)に1に変更すると、ふわっと出てくるコンテンツに変更出来ます。

body{
  width: 50%;
  margin: auto;
  padding:30px;
  
}
.content-item {
  position: relative;
  overflow: hidden;
  width: 250px;
  height: 250px;
}

.content-item:hover .content-overlay {
  //bottom: 0;
  opacity: 1;
}

.content-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  transition: all .35s;
  color: #fff;
  background: rgb(0, 116, 217, .5);
  background: linear-gradient(rgba(0, 116, 217, .5) 0%, rgba(0, 65, 122, .5) 100%);
  opacity: 0;
}

.content-title {
  font-size: 2rem;
  position: absolute;
  top: 30px;
  width: 100%;
  text-align: center;
}

.content-text {
  position: absolute;
  top: 50%;
  box-sizing: border-box;
  width: 100%;
  padding: 0 20px;
  text-align: center;
}

.content-btn {
  position: absolute;
  right: 0;
  bottom: 10px;
  left: 0;
  box-sizing: border-box;
  width: 80%;
  margin: auto;
  padding: 10px;
  transition: all .35s;
  text-align: center;
  text-decoration: none;
  color: #fff;
  border: 1px solid #fff;
  border-radius: 6px;
}

.content-btn:hover {
  color: #333;
  background-color: #fff;
}

69296d4639ce5cb5fdc6cb093d69c326

ボタンにマウスを乗せたら(:hover)ボタンのbackground-colorを変え、クリック(:active)したら、ボタンをプルプル震えさせる。
フォームのfocus時に、フォームのカラーを変える。
等、擬似クラスだけでも出来る事は色々とあります。

簡単に実装出来るので、積極的に実装してバリエーションを増やしていきましょう。

Pocket

CRAが運営する就労移行支援事業所 ワークサポートセンターはこちら