1:テキストアニメーションの実装
テキストアニメーションで作成したmain.js・_mixin.scss・scroll-polyfill.js_・scroll.js・style.scss・text-animation.jsをこのように配置する。
貼り付けたmain.js内の以下を切り取り
scripts/main.jsにこのように貼り付け
貼り付けたmain.js内の以下を切り取り
scripts/main.jsにこのように貼り付け
HTMLに設定を追加する
<metaname="viewport"content="width=device-width, initial-scale=1.0"/>
style.scssに以下のような設定をする
// スマホ画面の設定
@import "breakpoints/base";
// スマホ横向きのときの設定
@media (min-width: 480px) {
@import "breakpoints/480up";
}
// タブレットのときの設定
@media (min-width: 600px) {
@import "breakpoints/600up";
}
@media (min-width: 960px) {
@import "breakpoints/960up";
}
@media (min-width: 1280px) {
@import "breakpoints/1280up";
}
// Retinaディスプレイで適用
@media (min-resolution: 192dpi)
,(-webkit-min-device-pixel-ratio: 2) {
@import "breakpoints/2x";
}
// 印刷時のみ適用される設定
@media print {
@import "breakpoints/print";
}
モバイルファーストが基本
ある程度よく使うもの(フォントのサイズやマージンやパディング)を共通化する。
スマホ用とパソコン用で設定を変えると良い
https://swiperjs.com/get-started
HTMLに記述を追加することと下をコピー&ペースト
<!-- Slider main container -->
<div class="swiper">
<!-- Additional required wrapper -->
<div class="swiper-wrapper">
<!-- Slides -->
<div class="swiper-slide">Slide 1</div>
<div class="swiper-slide">Slide 2</div>
<div class="swiper-slide">Slide 3</div>
...
</div>
<!-- If we need pagination -->
<div class="swiper-pagination"></div>
<!-- If we need navigation buttons -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<!-- If we need scrollbar -->
<div class="swiper-scrollbar"></div>
</div>
CSSにこれも追加すること
.swiper {
width: 600px;
height: 300px;
}
@import "mixin"; $cWhite: white; @import 'hero-slider';
document.addEventListener('DOMContentLoaded', function () { // newでインスタンス化 const hero = new HeroSlider('.swiper-container'); hero.start(); });
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="loader.css"> <script src="./pace.js"></script> </head> <body> <div id="global-container"> <a href="https://github.hubspot.com/pace/docs/welcome/" target="_blank">PaceJs</a> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <div><img src="images/flowers1.jpg" alt="" /></div> <style> img { max-width: 100%; } </style> </div> </body> </html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<!-- 全体を囲むglobal-cotainerをさくせい-->
<div id="global-container">
<!-- -->
<div id="container">
<div class="mobile-menu__cover"></div>
<header class="header">
<button class="mobile-menu__btn">
<span></span>
<span></span>
<span></span>
</button>
</header>
</div>
<!-- __2つあるのはSCSSにて -->
<nav class="mobile-menu">
<ul class="mobile-menu__main">
<li class="mobile-menu__item">
<a class="mobile-menu__link" href="#">
<span class="main-title">Our Service</span>
<span class="sub-title">サービスについて</span>
</a>
</li>
<li class="mobile-menu__item">
<a class="mobile-menu__link" href="#">
<span class="main-title">About us</span>
<span class="sub-title">私達について</span>
</a>
</li>
<li class="mobile-menu__item">
<a class="mobile-menu__link" href="#">
<span class="main-title">Contact us</span>
<span class="sub-title">コンタクト方法</span>
</a>
</li>
</ul>
</nav>
</div>
<script src="main.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="container">
<!-- ホバーしたときに暗くする -->
<!-- <div class="cover-slide hover-darken inview">
<img class="img-zoom" src="images/image-1.jpg" alt="">
</div> -->
<!-- アス比を保ちたいときの設定 -->
<div class="cover-slide hover-darken inview">
<div class="bg-img-zoom img-bg50"></div>
</div>
</div>
</body>
</html>
@mixin animation($name, $duration: 1s, $timing-function: ease, $delay: 0s, $iteration-count: 1, $direction: normal, $fill-mode: forwards) {
animation: {
name: $name;
duration: $duration;
timing-function: $timing-function;
delay: $delay;
iteration-count: $iteration-count;
direction: $direction;
fill-mode: $fill-mode;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="container">
<!-- <div class="cover-slide hover-darken inview">
<div class="bg-img-zoom img-bg50"></div>
</div> -->
<div class="cover-slide hover-darken">
<img class="img-zoom" src="images/image-1.jpg" alt="" />
</div>
<div class="cover-slide hover-darken">
<img class="img-zoom" src="images/image-1.jpg" alt="" />
</div>
<div class="cover-slide hover-darken">
<img class="img-zoom" src="images/image-1.jpg" alt="" />
</div>
<div class="cover-slide hover-darken">
<img class="img-zoom" src="images/image-1.jpg" alt="" />
</div>
</div>
<script src="scroll-polyfill.js"></script>
<script src="scroll.js"></script>
<script src="main.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css2?family=Teko:wght@500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<section>
<div class="animate-title">Start Animation.</div>
</section>
<section>
<div class="animate-title">Use what you have.</div>
</section>
<section>
<div class="animate-title">Do what you can.</div>
</section>
<script src="text-animation.js"></script>
<script src="scroll-polyfill.js"></script>
<script src="scroll.js"></script>
<script src="main.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css"
integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp"
crossorigin="anonymous"/>
<link href="https://fonts.googleapis.com/css2?family=Teko:wght@500&display=swap"
rel="stylesheet"/>
<link rel="stylesheet" href="style.css" />
<title>Document</title>
</head>
<body>
<section>
<div class="animate-title">Start Animation</div>
</section>
<section>
<div class="animate-title">Use what you have.</div>
</section>
<section>
<div class="animate-title">Do what you can.</div>
</section>
<!-- main.jsよりも先に読み込ませる -->
<script src="text-animation.js"></script>
<script src="main.js"></script>
</body>
</html>
@import "mixin";
html {
font-family: "Teko", sans-serif;
}
body {
margin: 0;
}
section {
position: relative;
height: 100vh;
background-color: teal;
&:nth-child(2) {
background-color: mediumvioletred;
}
&:nth-child(3) {
background-color: orange;
}
}
.animate-title,
.tween-animate-title {
position: absolute;
// 文字が画面中央に来るようにする
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: white;
opacity: 0;
font-size: 2em;
&.inview {
opacity: 1;
& .char {
display: inline-block;
}
}
& .char {
opacity: 0;
}
}
.animate-title.inview .char {
@include animation(
$name: kf-animate-chars,
$duration: 0.5s,
$timing-function: cubic-bezier(0.39, 1.57, 0.58, 1),
$fill-mode: both
);
@for $i from 1 through 30 {
&:nth-child(#{$i}) {
animation-delay: $i * 0.04s;
}
}
}
@keyframes kf-animate-chars {
0% {
opacity: 0;
transform: translateY(-50%);
}
100% {
opacity: 1;
transform: translateY(0);
}
}