0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ウェブサイト作成用備忘録・5号:1カラムWEBデザインの自作サンプルその1【コピペでプレビュー】

Posted at

日々の学習のアウトプットの為、自主学習の際に工夫した内容を記録していきます。

今回は 自分が作成した1カラムWEBデザインのオリジナルサンプルを紹介します。

(※練習で作成したデザインなので、機能性は乏しいかもしれません…)

###テーマ:javascript の動的制御で1カラムの背景ウインドウに複数の animation プロパティを適用し、複数の役割を与える。

####記述サンプル

今回はHTMLファイルに全ての記述を行うので、コードをそのままコピペするだけで、実際の動作を確認出来るようにしました。

HTML

<!doctype html>
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  </head>
  <style>

    * {
      margin: 0;
    }

    #screen {
      background-color: rgba(15,15,15,0.9);
      border-radius: 20px;
      min-height: 95%;
      max-width: 750px;
      position: fixed;
      top: 50%;
      right: 50%;
      z-index: 0;
      transform: translate(50%, -50%);
      -webkit-transform: translate(50%, -50%);
      animation: start 1s ease 1s 1 normal forwards running;
      -webkit-animation: start 1s ease 1s 1 normal forwards running;
    }

    @keyframes start {
      0% {
        width: 0;
        box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.4);
      }
      100% {
        width: 90%;
        box-shadow: 25px 50px 20px 10px rgba(0,0,0,0.4);
      }
    }

    @-webkit-keyframes start {
      0% {
        width: 0;
        box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.4);
      }
      100% {
        width: 90%;
        box-shadow: 25px 50px 20px 10px rgba(0,0,0,0.4);
      }
    }

    #hide_start {
      color: #fff;
      pointer-events: none;
      margin: auto;
      opacity: 0;
      width: 90%;
      max-width: 750px;
      position: relative;
      top: 40px;
      animation: show 1s 2s forwards;
      -webkit-animation: show 1s 2s forwards;
    }

    @keyframes show {
      100% {
        opacity: 1;
        pointer-events: unset;
      }
    }

    @-webkit-keyframes show {
      100% {
        opacity: 1;
        pointer-events: unset;
      }
    }

    #button_1 {
      cursor: pointer;
      position: fixed;
      right: calc(5% + 20px);
      z-index: 2;
      border-radius: 10px;
      transition: all 1s 0s ease;
      -webkit-transition: all 1s 0s ease;
    }

    #button_1.menu {
      right: calc(2% + 20px);
    }

    #screen.open {
      box-shadow: 25px 50px 20px 10px rgba(0,0,0,0.4);
      animation: menu_o 1s ease 0s 1 normal forwards running;
      -webkit-animation: menu_o 1s ease 0s 1 normal forwards running;
    }
    
    #screen.close {
      box-shadow: 25px 50px 20px 10px rgba(0,0,0,0.4);
      animation: menu_c 1s ease 0s 1 normal forwards running;
      -webkit-animation: menu_c 1s ease 0s 1 normal forwards running;
    }

    @keyframes menu_o {
      0% {
        width: 90%;
      }    
      100% {
        width: 60%;
        right: 20px;
        transform: translate(0, -50%);
        -webkit-transform: translate(0, -50%);
      }
    }
    
    @-webkit-keyframes menu_o {
      0% {
        width: 90%;
      }    
      100% {
        width: 60%;
        right: 20px;
        transform: translate(0, -50%);
        -webkit-transform: translate(0, -50%);
      }
    }
    
    @keyframes menu_c {
      0% {
        width: 60%;
        right: 20px;
        transform: translate(0%, -50%);
        -webkit-transform: translate(0%, -50%);
      }
      100% {
        width: 90%;
        right: 50%;
        transform: translate(50%, -50%);
        -webkit-transform: translate(50%, -50%);
      }
    }

    @-webkit-keyframes menu_c {
      0% {
        width: 60%;
        right: 20px;
        transform: translate(0%, -50%);
        -webkit-transform: translate(0%, -50%);
      }
      100% {
        width: 90%;
        right: 50%;
        transform: translate(50%, -50%);
        -webkit-transform: translate(50%, -50%);
      }
    }
    
    #menu {
      box-sizing: border-box;
      opacity: 1;
      padding-left: 1em;
      position: fixed;
      right: 20px;
      width: 60%;
      max-width: 750px;
      transition: all .5s;
      -webkit-transition: all .5s;
    }
    
    #menu.none {
      opacity: 0;
      pointer-events: none;
    }

    #content {
      box-sizing: border-box;
      padding: 0 1em;
      margin: auto;
      position: relative;
      transition: all .5s;
      -webkit-transition: all .5s;
    }

    #content.none {
      opacity: 0;
      pointer-events: none;
    }

  @media(min-width: 850px) {
  /* PC設定 */

    #screen {
      animation: start 1.5s ease 1s 1 normal forwards running;
      -webkit-animation: start 1.5s ease 1s 1 normal forwards running;    
    }
    
    #button_1 {
      right: calc(50% - 360px);
    } 

  }
  </style>
  <body id="" class="">
    <div id="screen" class=""></div>
    <div id="hide_start">
      <button type="button" id="button_1" class="">〇</button>
      <nav id="menu" class="none">
        <h2>MENU</h2>
      </nav>
      <main id="content">
        <h1>CONTENTS</h1>
      </main>
    </div>
  </body>
  <script type="text/javascript">
    jQuery(document).ready(function(){
    
      $("#button_1").click(function() {
        if($("#menu").hasClass("none")) {
          $("#screen").removeClass("close");
          $("#screen").addClass("open");
        } else {
          $("#screen").removeClass("open");
          $("#screen").addClass("close");
        }
        $("#button_1").toggleClass("menu");
        $("#menu").toggleClass("none");
        $("#content").toggleClass("none");
      });

    });
  </script>
</html>

###解説

1・サイトコンテンツの背景となるウインドウ部分を空の div タグ #screen で記述。

2・javascript の動的制御で #screen にクラスを付け替える事で、transition や複数の animation プロパティを付け替え、メインコンテンツやサイドメニューの背景ウインドウに可変される。

3・後はサイト全体の表示が整うように色々書き加えていく…

文章としては以上になるのですが、実際に記述してみようとすると、最低限の情報量でも想像していた以上に実装に苦労しました。

実際の動作が気になる方は、テキストデータを丸ごとコピペして確かめてみましょう…!
(簡素な作りですが、感想、アドバイスなどあれば頂けると幸いです)

今回はこれで以上になります。

あくまで自分用の備忘録ですが、他の方の参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?