要素を隠す【overflow-hidden】

Pocket

jqueryやjavascriptを使用せず、cssのみで要素を隠したり出現させたりします。

メニューとかに使えるかな。

今回作成するデモはこちら

ボタンにhoverすると隠れている3つの要素が出現します。

3番のみがアニメーションがかかった状態で隠れたり、出現したりします。

○index.html

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
    <title>タイトルだよ</title>
    <meta name="description" content="ディスクリプションだよ">
    <meta name="keywords" content="キーワード1, キーワード2">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="../css/common.css">
    <link rel="stylesheet" href="css/index.css">
  </head>
  <body>
    <!--header-->
    <header></header>
    <main ontouchstart="">
      <div class="container">
        <p class="button">ボタンだよ</p>
        <div class="boxContainer">
          <div class="box">
            <div class="box01"><img src="images/test.jpg">
              <p>01</p>
            </div>
            <div class="box02"><img src="images/test.jpg">
              <p>02</p>
            </div>
          </div>
          <div class="box03"><img src="images/test.jpg">
            <p>03</p>
          </div>
        </div>
      </div>
    </main>
    <!--footer-->
    <footer>
    </footer>
  </body>
</html>

・div class=”box03″に当てるcssが重要です。

○index.css

.container {
  background-color: #e6e6e6;
  padding: 100px 0; }

.button {
  width: 300px;
  height: 60px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
  color: blue;
  border: solid 1px blue;
  margin: 0 auto 50px;
  cursor: pointer;
  -webkit-transition: 0.3s;
  transition: 0.3s; }
  .button:hover {
    background-color: blue;
    color: #fff; }

.boxContainer {
  height: 1500px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
  -webkit-align-items: flex-start;
  -ms-flex-align: start;
  align-items: flex-start;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
  max-width: 800px;
  margin: 0 auto; }

.button:hover + .boxContainer .box01 {
  display: block; }

.box01 {
  -webkit-transition: 0.3s;
  transition: 0.3s;
  display: none;
  max-width: 400px;
  margin: 0 auto 80px; }
  .box01 img {
    max-width: 100%;
    width: 100%; }

.button:hover + .boxContainer .box02 {
  display: block;
  height: auto; }

.box02 {
  -webkit-transition: 0.3s;
  transition: 0.3s;
  overflow-y: hidden;
  height: 0;
  max-width: 400px;
  margin: 0 auto; }
  .box02 img {
    max-width: 100%;
    width: 100%; }

.button:hover + .boxContainer .box03 {
  display: block;
  height: 350px; }

.box03 {
  -webkit-transition: 0.3s;
  transition: 0.3s;
  overflow-y: hidden;
  height: 0;
  max-width: 400px;
  margin: 0 auto; }
  .box03 img {
    max-width: 100%;
    width: 100%; }

・box01

マウスhoverによりdisplay: none;とdisplay: block;を切り替えているだけです。

要素にアニメーションは無く隠れたり、出現したりします。

・box02

overflow:hidden;を指定し、マウスhoverによりheight: 0;とheight: auto;を切り替えているだけです。

こちらも要素にアニメーションは無く隠れたり、出現したりします。

・box03

overflow:hidden;を指定し、マウスhoverによりheight: 0;とheight: 350px(任意の高さ);を切り替えているだけです。

こちらの場合にのみ要素にアニメーション付きで隠れたり、出現したりします。

高さを指定しないとアニメーションが動きませんので、使いどころには注意が必要です。

今回は以上です。