http://school.yachin29.com/sprit-mode/
今回の作成物のポイント
- ファーストビュー部分はスプリットレイアウト
- AOSを使ってスクロールアニメーションを導入
- clip-pathを使って斜線を入れる
- ページ内リンクにスムーススクロール
- シングルページでのカレント設定
- スマホの時はjqueryプラグインを無効
複数の場所にスムーススクロールで移動させたい場合
#がついている全てにスムーススクロールさせる場合
// #で始まるアンカーをクリックした場合に処理 $('a[href^="#"]').on('click',function() { // 移動先を取得 var href= $(this).attr("href"); var target = $(href == "#" || href == "" ? 'html' : href); // 移動先を数値で取得 var position = target.offset().top; // スムーススクロール $('body,html').animate({scrollTop:position}); });
この部分ですが、
$(href == "#" || href == "" ? 'html' : href);
?は三項演算子と言い、if文を1行にまとめた形になります。
例:A ? B : C
条件Aの時はB、それ以外の時はCという形になります。
今回の形は
if(href == "#" || href == "") { 'html' } else { href }
これと同じということになります。
「||」は論理演算子のor なので、
日本語に直せば、「hrefが"#"または空のときは"html要素"、そうでないときは変数「href」に代入されている値となります。
使用するツール
index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Split-layoutの作成</title> <link rel="icon" href="favicon.png" type="image/png"> <link rel="apple-touch-icon" sizes="192x192" href="touch-icon.png"> <link rel="stylesheet" href="css/style.css"> <link rel="stylesheet" href="css/aos.css"> </head> <body> <header> <div class="title-box"> <h1>LOREM IPSU</h1> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> </div> <div class="main-visual"></div> </header> <nav class="g-nav"> <ul> <li><a href="#" class="scroll">top</a></li> <li><a href="#content1" class="scroll">content1</a></li> <li><a href="#content2" class="scroll">content2</a></li> <li><a href="#content3" class="scroll">content3</a></li> <li><a href="#content4" class="scroll">content4</a></li> </ul> </nav> <main class="main"> <div class="box" id="content1"> <div class="box-inner"> <div class="box-photo" data-aos="fade-left"> <img src="img/01.jpg" alt=""> </div><!-- /.box-photo --> <div class="box-txt" data-aos="fade-left"> <h2>content1</h2> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> </div><!-- /.box-txt --> </div><!-- /.box-inner --> </div><!-- /.box --> <div class="box" id="content2"> <div class="box-inner"> <div class="box-photo" data-aos="flip-left"> <img src="img/02.jpg" alt=""> </div><!-- /.box-photo --> <div class="box-txt" data-aos="flip-left"> <h2>content2</h2> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> </div><!-- /.box-txt --> </div><!-- /.box-inner --> </div><!-- /.box --> <div class="box" id="content3"> <div class="box-inner"> <div class="box-photo" data-aos="fade-left"> <img src="img/03.jpg" alt=""> </div><!-- /.box-photo --> <div class="box-txt" data-aos="fade-left"> <h2>content3</h2> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> </div><!-- /.box-txt --> </div><!-- /.box-inner --> </div><!-- /.box --> <div class="box" id="content4"> <h2>content4</h2> <div class="col-wrapper"> <div class="col-box" data-aos="fade-up" data-aos-delay="400"> <h3>LOREM IPSU</h3> <p class="col-photo"><img src="https://placehold.jp/3d4070/ffffff/600x400.jpg" alt=""></p> <p class="col-txt">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> </div><!--/.col-box--> <div class="col-box" data-aos="fade-up" data-aos-delay="800"> <h3>LOREM IPSU</h3> <p class="col-photo"><img src="https://placehold.jp/3d4070/ffffff/600x400.jpg" alt=""></p> <p class="col-txt">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> </div><!--/.col-box--> <div class="col-box" data-aos="fade-up" data-aos-delay="1200"> <h3>LOREM IPSU</h3> <p class="col-photo"><img src="https://placehold.jp/3d4070/ffffff/600x400.jpg" alt=""></p> <p class="col-txt">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> </div><!--/.col-box--> <div class="col-box" data-aos="fade-up" data-aos-delay="1600"> <h3>LOREM IPSU</h3> <p class="col-photo"><img src="https://placehold.jp/3d4070/ffffff/600x400.jpg" alt=""></p> <p class="col-txt">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> </div><!--/.col-box--> </div><!--/.col-wrapper--> </div><!-- /.box --> </main> <footer> </footer> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="js/aos.js"></script> <script> AOS.init({ }); </script> <script src="js/script.js"></script> </body> </html>
style.css
@charset "utf-8"; /*! * ress.css • v1.2.2 * MIT License * github.com/filipelinhares/ress * 全ての要素にbox-sizing: border-box;. * 全ての背景画像にbackground-repeat: no-repeat. */html{box-sizing:border-box;-webkit-text-size-adjust:100%}*,:after,:before{background-repeat:no-repeat;box-sizing:inherit}:after,:before{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0}audio:not([controls]){display:none;height:0}hr{overflow:visible}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}summary{display:list-item}small{font-size:80%}[hidden],template{display:none}abbr[title]{border-bottom:1px dotted;text-decoration:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}input{border-radius:0}[role=button],[type=button],[type=reset],[type=submit],button{cursor:pointer}[disabled]{cursor:default}[type=number]{width:auto}[type=search]{-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:0;padding:0}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button:-moz-focusring{outline:1px dotted ButtonText}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}button,select{text-transform:none}button,input,select,textarea{background-color:transparent;border-style:none;color:inherit}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;max-width:100%;white-space:normal}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}img{border-style:none;vertical-align: bottom}progress{vertical-align:baseline}svg:not(:root){overflow:hidden}audio,canvas,progress,video{display:inline-block}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled]{cursor:default}::-moz-selection{background-color:#b3d4fc;color:#000;text-shadow:none}::selection{background-color:#b3d4fc;color:#000;text-shadow:none}ul,ol{list-style:none;}a{text-decoration:none;}.wrapper{overflow:hidden;}body{overflow-y:scroll;} /* header部分 */ header{ width: 100%; height: 100vh; display: flex; flex-direction: row-reverse; position: relative; } .title-box{ width: 50%; height: 100vh; position: absolute; left: 0; top:0; z-index: 100; background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%); clip-path: polygon(0 0,100% 0,90% 100%,0 100%); } h1{ text-align: center; font-size: 60px; padding: 200px 0 40px; } .title-box>p{ padding: 0 40px; font-size: 20px; } .main-visual{ width: 80%; height: 100vh; background: url(../img/main.jpg)no-repeat center center/cover; } .g-nav{ width: 100%; height: 80px; background-color:rgba(255,255,255,0.5); backdrop-filter: blur(10px); position: fixed; top: 0; left: 0; z-index: 50; } .g-nav>ul{ display: flex; justify-content: flex-end; height: 80px; align-items: center; } .g-nav li{ margin: 0 20px; } .g-nav a{ padding:10px 20px; color: #333; font-weight: bold; } .g-nav a:hover{ text-decoration:underline; } /* box部分 */ .main{ padding-top: 60px; } .box{ width: 100%; height: 130vh; padding: 100px 0 200px; background-color: #FFF; } .box-inner{ max-width: 800px; margin: 0 auto; position: relative; } .box-txt{ width: 400px; background-color: #FFF; box-shadow:0 0 10px #CCC; position: absolute; bottom: -10%; right: -10%; padding: 40px; } .box:nth-of-type(2) .box-txt{ left: -10%; } .box-txt>h2{ margin-bottom: 10px; } .col-wrapper{ display: flex; justify-content: space-between; padding: 0 50px; } .col-box{ width: calc((100% - 60px) / 4); padding: 20px; background-color: beige; } .col-box img{ max-width: 100%; }
$(function(){ //スムーススクロールの設定 // #で始まるアンカーをクリックした場合に処理 $('a.scroll[href^="#"]').on('click',function() { // 移動先を取得 var href= $(this).attr('href'); var target = $(href == "#" || href == "" ? 'html' : href); // 移動先を数値で取得 var position = target.offset().top; // スムーススクロール $('body,html').animate({scrollTop:position}); }); });