HTMLの書き方
body内のカウントアップ・ダウンを表示させたい場所にHTMLを記載します。
<div id="box1" class="box"><!--画面に入ったら数字を動かす基点にするためのid を付与-->
<p>男性の学生数<br><span class="count-up count-size">2540</span>人</p><!-- count-up ← カウントアップ用class名-->
<!--/box--></div>
<div id="box2" class="box"><!--画面に入ったら数字を動かす基点にするためのid を付与-->
<p>学食充実満足度全国<br>第<span class="count-down count-size">1</span>位</p><!-- count-down ← カウントダウン用class名-->
<!--/box--></div>
body 終了タグ直前にjQuery、jquery.inview、動きを制御する自作のJS の3つを読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/protonet-jquery.inview/1.1.2/jquery.inview.min.js"></script>
<!--自作のJS-->
<script src="js/9-5-1.js"></script>
JSの書き方
//box1の指定
$('#box1').on('inview', function(event, isInView) {
if (isInView) {
//要素が見えたときに実行する処理
$("#box1 .count-up").each(function(){
$(this).prop('Counter',0).animate({//0からカウントアップ
Counter: $(this).text()
}, {
// スピードやアニメーションの設定
duration: 2000,//数字が大きいほど変化のスピードが遅くなる。2000=2秒
easing: 'swing',//動きの種類。他にもlinearなど設定可能
step: function (now) {
$(this).text(Math.ceil(now));
}
});
});
}
});
//box2の指定
$('#box2').on('inview', function(event, isInView) {
if (isInView) {
//要素が見えたときに実行する処理
$("#box2 .count-down").each(function(){
$(this).prop('Counter',10).animate({//10からカウントダウン
Counter: $(this).text()
}, {
// スピードやアニメーションの設定
duration: 1000,//数字が大きいほど変化のスピードが遅くなる。1000=1秒
easing: 'swing',//動きの種類。他にもlinearなど設定可能
step: function (now) {
$(this).text(Math.ceil(now));
}
});
});
}
});
※768px以下で動きを解除しているため、スマートフォンからの確認は出来ません。
HTMLの書き方
head終了タグ直前にbxSlider のCSSと自作のCSSの2つを読み込みます。
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/bxslider/4.2.15/jquery.bxslider.min.css">
<link rel="stylesheet" type="text/css" href="css/9-4-1.css">
body内のニュースティッカーを表示させたい場所に以下のHTMLを記載します。
<ul class="slider">
<li><a href="#"><span>2021.11.01</span>1 つめのニュースの記事です。</a></li>
<li><a href="#"><span>2021.11.02</span>2 つめのニュースの記事です。</a></li>
<li><a href="#"><span>2021.11.03</span>3 つめのニュースの記事です。</a></li>
</ul>
body 終了タグ直前に jQuery、bxSlider、動きを制御する自作のJS の3 つを読み込みます。
また、IE11 に対応したい場合はIE対策用のJSを追加で2 つ読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bxslider/4.2.15/jquery.bxslider.min.js"></script>
<!--自作のJS-->
<script src="js/9-4-1.js"></script>
CSSの書き方
/*ニュース1行の周りの余白*/
.slider a{
display: block;
background:#fff;
padding:20px;
}
/*日付*/
.slider span {
display:inline-block;
font-size:0.8rem;
margin-right:10px;
color:#777;
}
/*768px以下の見た目 ※1行のままにしたい場合は不要 */
@media screen and (max-width:768px) {
.slider {
padding:20px;
background:#fff;
}
.slider li {
border-bottom:1px dashed #ccc;
}
.slider li:last-child {
border-bottom:none;
}
.slider span {
display:block;
padding-bottom:10px;
}
}
JSの書き方
var slider;
var sliderFlag = false;
var breakpoint = 768;//768px以下の場合
function sliderSet() {
var windowWidth = window.innerWidth;
if (windowWidth >= breakpoint && !sliderFlag) {//768px以上は1行でスライダー表示
slider = $('.slider').bxSlider({
touchEnabled:false,//リンクを有効にするためスライドをマウスでドラッグした際にスライドの切り替えを可能にする機能を無効化
mode: 'vertical',//縦スライド指定
controls: false,//前後のコントロールを表示させない。
auto: 'true',//自動的にスライド
pager: false//ページ送り無効化
});
sliderFlag = true;
} else if (windowWidth < breakpoint && sliderFlag) {
slider.destroySlider();//bxSliderのOptionであるdestroySliderを使用してスライダーの動きを除去
sliderFlag = false;
}
}
$(window).on('load resize', function() {
sliderSet();
});
タブレット以下も1行で表示させたい場合は下記のみの記述でOK
$('.slider').bxSlider({
touchEnabled:false,//リンクを有効にするためスライドをマウスでドラッグした際にスライドの切り替えを可能にする機能を無効化
mode: 'vertical',
controls: false,
auto: 'true',
pager: false
});
HTMLの書き方
head終了タグ直前に自作のCSSを読み込みます。
<link rel="stylesheet" type="text/css" href="css/8-1-9.css">
body内のページの先頭に戻るリンクを表示させたい場所にHTMLを記載します。
<p id="page-top"><a href="#">Page Top</a></p>
body 終了タグ直前に jQuery、jQuery Easing Plugin、動きを制御する自作のJS の3 つを読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script>
<!--自作のJS-->
<script src="js/8-1-9.js"></script>
CSSの書き方
/*リンクの形状*/
#page-top a{
background:#942D2F;
display: block;
padding:20px;
width:100%;
color: #fff;
text-align: center;
text-transform: uppercase;
text-decoration: none;
font-size:0.8rem;
transition:all 0.3s;
}
#page-top a:hover{
background: #777;
}
JSの書き方
// #page-topをクリックした際の設定
$('#page-top').click(function () {
$('body,html').animate({
scrollTop: 0//ページトップまでスクロール
}, 1500,"easeInOutQuint");//ページトップスクロールの速さ※数字が大きいほど遅くなる, easingプラグインでアニメーション速度に変化
//linear、swing、jswing、easeInQuad、easeOutQuad、easeInOutQuad、easeInCubic、easeOutCubic、easeInOutCubic、easeInQuart、easeOutQuart、easeInOutQuart、easeInQuint、easeOutQuint、easeInOutQuint、easeInSine、easeOutSine、easeInOutSine、easeInExpo、easeOutExpo、easeInOutExpo、easeInCirc、easeOutCirc、easeInOutCirc、easeInElastic、easeOutElastic、easeInOutElastic、easeInBack、easeOutBack、easeInOutBack、easeInBounce、easeOutBounce、easeInOutBounceなどから選択可能
return false;//リンク自体の無効化
});
HTMLの書き方
head終了タグ直前に自作のCSSを読み込みます。
<link rel="stylesheet" type="text/css" href="css/8-1-8.css">
body内のページトップリンクを表示させたい場所にHTMLを記載します。
<p id="page-top"><a href="#"><span>Page Top</span></a></p>
body 終了タグ直前に jQuery、動きを制御する自作のJS の2 つを読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<!--自作のJS-->
<script src="js/8-1-8.js"></script>
CSSの書き方
/*========= ページトップのためのCSS ===============*/
/*リンクを右下に固定*/
#page-top {
position: fixed;
right: 10px;
bottom:30px;
z-index: 2;
/*はじめは非表示*/
opacity: 0;
transform: translateY(150px);
}
/* 上に上がる動き */
#page-top.UpMove{
animation: UpAnime 0.5s forwards;
}
@keyframes UpAnime{
from {
opacity: 0;
transform: translateY(150px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* 下に下がる動き */
#page-top.DownMove{
animation: DownAnime 0.5s forwards;
}
@keyframes DownAnime{
from {
opacity: 1;
transform: translateY(0);
}
to {
opacity: 1;
transform: translateY(150px);
}
}
/*画像の切り替えと動き*/
#page-top a {
/*aタグの形状*/
display: block;
width: 100px;
height: 100px;
color: #333;
text-align: center;
text-transform: uppercase;
text-decoration: none;
font-size:0.6rem;
/*背景画像の指定*/
background: url("../img/pagetop_1.png") no-repeat center;
background-size: contain;
}
#page-top.floatAnime a{
width: 100px;
height: 130px;
/*背景画像の指定*/
background: url("../img/pagetop_2.png") no-repeat center;
background-size: contain;
/*アニメーションの指定*/
animation: floatAnime 2s linear infinite;
opacity: 0;
}
@keyframes floatAnime {
0% {
transform: translateX(0); opacity: 0;
}
25% {
transform: translateX(-6px);opacity: 1;
}
50% {
transform: translateX(0);
}
100% {
transform: translateX(6px);opacity: 1;
}
}
/*Page Topと書かれたテキストの位置*/
#page-top span{
position: absolute;
bottom: -20px;
right: 20px;
color: #666;
}
/*検証のためのCSS*/
section{
padding: 500px 0;
}
JSの書き方
//スクロールした際の動きを関数でまとめる
function PageTopAnime() {
var scroll = $(window).scrollTop();
if (scroll >= 100){//上から100pxスクロールしたら
$('#page-top').removeClass('DownMove');//#page-topについているDownMoveというクラス名を除く
$('#page-top').addClass('UpMove');//#page-topについているUpMoveというクラス名を付与
} else {
if($('#page-top').hasClass('UpMove')){//すでに#page-topにUpMoveというクラス名がついていたら
$('#page-top').removeClass('UpMove');//UpMoveというクラス名を除き
$('#page-top').addClass('DownMove');//DownMoveというクラス名を#page-topに付与
}
}
}
// 画面をスクロールをしたら動かしたい場合の記述
$(window).scroll(function () {
PageTopAnime();/* スクロールした際の動きの関数を呼ぶ*/
});
// ページが読み込まれたらすぐに動かしたい場合の記述
$(window).on('load', function () {
PageTopAnime();/* スクロールした際の動きの関数を呼ぶ*/
});
// #page-topをクリックした際の設定
$('#page-top').click(function () {
var scroll = $(window).scrollTop(); //スクロール値を取得
if(scroll > 0){
$(this).addClass('floatAnime');//クリックしたらfloatAnimeというクラス名が付与
$('body,html').animate({
scrollTop: 0
}, 2000,function(){//スクロールの速さ。数字が大きくなるほど遅くなる
$('#page-top').removeClass('floatAnime');//上までスクロールしたらfloatAnimeというクラス名を除く
});
}
return false;//リンク自体の無効化
});
HTMLの書き方
head終了タグ直前に自作のCSSを読み込みます。
<link rel="stylesheet" type="text/css" href="css/8-1-7.css">
body内にページトップリンクとコンテンツのHTMLを記載します。
<header id="header">
<h1>Logo</h1>
</header>
<main>
<section id="area-1">
<h2>Area 1</h2>
<p>内容が入ります。</p>
<!--/area1--></section>
<section id="area-2"><!--area2の範囲に入ったらページトップリンクが出現-->
<h2>Area 2</h2>
<p>内容が入ります。</p>
<!--/area2--></section>
<section id="area-3">
<h2>Area 3</h2>
<p>内容が入ります。</p>
<!--/area3--></section>
<section id="area-4">
<h2>Area 4</h2>
<p>内容が入ります。</p>
<!--/area4--></section>
<!--/main--></main>
<footer id="footer">
<p class="js-scroll scroll-top scrollview"><a href="#area-2">Scroll</a></p>
<p class="js-pagetop scroll-top"><a href="#">Page Top</a></p>
<small>© copyright.</small>
</footer>
body終了タグ直前に jQuery、動きを制御する自作のJSの2つを読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<!--自作のJS-->
<script src="js/8-1-7.js"></script>
CSSの書き方
/*スクロールリンクの形状*/
.scroll-top {
/*表示位置*/
position: fixed;
right: 20px;
bottom: 10px;
z-index: 2;
/*はじめは非表示*/
opacity: 0;
visibility: hidden;
transition: opacity .5s, visibility .5s; /*それぞれに0.5秒の変化のアニメーション*/
/*縦書き*/
-webkit-writing-mode: vertical-rl;
-ms-writing-mode: tb-rl;
writing-mode: vertical-rl;
/*改行禁止*/
white-space: nowrap;
/*矢印の動き*/
animation: arrowmove 1s ease-in-out infinite;
}
@keyframes arrowmove{
0%{
bottom:20px;
}
50%{
bottom:25px;
}
100%{
bottom:20px;
}
}
/*.scroll-viewクラスがついたら出現*/
.scroll-top.scroll-view {
opacity: 1;
visibility: visible;
}
/*リンク全体の aタグの形状*/
.scroll-top a {
text-decoration: none;
color: #666;
text-transform: uppercase;
font-size:0.9rem;
display: block;
}
/*スクロールリンクの形状*/
.js-scroll a::after{
content:"";
position: absolute;
top:0;
right:0;
width:1px;
height: 50px;
background:#666;
}
.js-scroll a::before {
content: "";
position: absolute;
top: 30px;
right: -6px;
width: 1px;
height: 20px;
background: #666;
transform: skewX(-31deg);
}
/*Edge IE11 hack*/
_:-ms-lang(x), .js-scroll a::before{
right:-11px;
}
/*ページトップリンクの形状*/
.js-pagetop a::after{
content:"";
position: absolute;
top:0;
right:0;
width:1px;
height: 50px;
background:#666;
}
.js-pagetop a::before {
content: "";
position: absolute;
top: 0;
right: -6px;
width: 1px;
height: 20px;
background: #666;
transform: skewX(31deg);
}
/*Edge IE11 hack*/
_:-ms-lang(x), .js-pagetop a::before{
right:0;
}
/*検証のためのCSS*/
section{
padding: 500px 0;
}
JSの書き方
//スクロールした際の動きを関数でまとめる
function PageTopCheck(){
var winScrollTop = $(this).scrollTop();
var secondTop = $("#area-2").offset().top - 150; //#area-2の上から150pxの位置まで来たら
if(winScrollTop >= secondTop){
$('.js-scroll').removeClass('scroll-view'); //.js-scrollからscroll-viewというクラス名を除去
$('.js-pagetop').addClass('scroll-view'); //.js-pagetopにscroll-viewというクラス名を付与
} else {//元に戻ったら
$('.js-scroll').addClass('scroll-view'); //.js-scrollからscroll-viewというクラス名を付与
$('.js-pagetop').removeClass('scroll-view'); //.js-pagetopからscroll-viewというクラス名を除去
}
}
//クリックした際の動き
$('.scroll-top a').click(function () {
var elmHash = $(this).attr('href'); //hrefの内容を取得
if (elmHash == "#area-2") {//もし、リンク先のhref の後が#area-2の場合
var pos = $(elmHash).offset().top;
$('body,html').animate({scrollTop: pos}, pos); //#area-2にスクロール
}else{
$('body,html').animate({scrollTop: 0}, 500); //それ以外はトップへスクロール。数字が大きくなるほどゆっくりスクロール
}
return false;//リンク自体の無効化
});
// 画面をスクロールをしたら動かしたい場合の記述
$(window).scroll(function () {
PageTopCheck();/* スクロールした際の動きの関数を呼ぶ*/
});
// ページが読み込まれたらすぐに動かしたい場合の記述
$(window).on('load', function () {
PageTopCheck();/* スクロールした際の動きの関数を呼ぶ*/
});