<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css" rel="stylesheet">
<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-scrollify/1.0.21/jquery.scrollify.min.js">
</script>
<style>@charset "utf-8";
/*========= レイアウトのためのCSS ===============*/
body {
background-image: linear-gradient(
103.3deg,
rgba(252, 225, 208, 1) 30%,
rgba(255, 173, 214, 1) 55.7%,
rgba(162, 186, 245, 1) 81.8%
);
}
#header {
padding: 40px;
background-image: radial-gradient(
circle farthest-corner at 12.3% 19.3%,
rgba(85, 88, 218, 1) 0%,
rgba(95, 209, 249, 1) 100.2%
);
color: #fff;
text-align: center;
}
.box {
color: #fff;
padding: 40px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
#box1 {
background-image: linear-gradient(
112.1deg,
rgba(32, 38, 57, 1) 11.4%,
rgba(63, 76, 119, 1) 70.2%
);
}
/*========= スクロールダウンのためのCSS ===============*/
/*スクロールダウン全体の場所*/
.scrolldown {
/*描画位置※位置は適宜調整してください*/
position: absolute;
bottom: 10px;
right: 50%;
/*マウスの動き1.6秒かけて動く永遠にループ*/
animation: mousemove 1.6s ease-in-out infinite;
}
/*下からの距離が変化して上から下に動く*/
@keyframes mousemove {
0% {
bottom: 10px;
}
50% {
bottom: 5px;
}
100% {
bottom: 10px;
}
}
/*Scrollテキストの描写*/
.scrolldown span {
/*描画位置*/
position: absolute;
left: -15px;
bottom: 45px;
/*テキストの形状*/
color: #eee;
font-size: 0.7rem;
letter-spacing: 0.05em;
}
/*マウスの中の線描写 */
.scrolldown span::after {
content: "";
/*描画位置*/
position: absolute;
top: 10px;
left: 17px;
/*線の形状*/
width: 1px;
height: 15px;
background: #eee;
/*線の動き1.4秒かけて動く。永遠にループ*/
animation: mousepathmove 1.4s linear infinite;
opacity: 0;
}
/*上からの距離・不透明度・高さが変化して上から下に流れる*/
@keyframes mousepathmove {
0% {
height: 0;
top: 10px;
opacity: 0;
}
50% {
height: 15px;
opacity: 1;
}
100% {
height: 0;
top: 30px;
opacity: 0;
}
}
/*マウスの描写 */
.scrolldown:before {
content: "";
/*描画位置*/
position: absolute;
bottom: 0;
left: -10px;
/*マウスの形状*/
width: 25px;
height: 37px;
border-radius: 10px;
border: 1px solid #eee;
}
/*マウスの中の丸の描写*/
.scrolldown:after {
content: "";
/*描画位置*/
position: absolute;
bottom: 26px;
left: 0;
/*丸の形状*/
width: 5px;
height: 5px;
border-radius: 50%;
border: 1px solid #eee;
}
#box2 {
background-image: radial-gradient(
circle farthest-corner at 10% 20%,
rgba(90, 92, 106, 1) 0%,
rgba(32, 45, 58, 1) 81.3%
);
}
#box3 {
background-image: radial-gradient(
circle farthest-corner at 10% 20%,
rgba(69, 86, 102, 1) 0%,
rgba(34, 34, 34, 1) 90%
);
}
#box4 {
background-image: radial-gradient(
circle farthest-corner at -4% -12.9%,
rgba(74, 98, 110, 1) 0.3%,
rgba(30, 33, 48, 1) 90.2%
);
}
#footer {
padding: 40px;
background-image: radial-gradient(
circle farthest-corner at 12.3% 19.3%,
rgba(85, 88, 218, 1) 0%,
rgba(95, 209, 249, 1) 100.2%
);
color: #fff;
padding: 40px;
text-align: center;
}
#footer a {
color: #fff;
}
/*========= ページネーションCSS ===============*/
.pagination {
position: fixed;
right: 20px;
top: 50%;
transform: translateY(-50%);
font-size: 1em;
z-index: 10;
list-style: none;
}
.pagination a {
display: block;
height: 20px;
margin-bottom: 5px;
color: #fff;
position: relative;
padding: 4px;
}
.pagination a.active:after {
box-shadow: inset 0 0 0 5px;
}
/*現在地表示のテキストの設定*/
.pagination a .hover-text {
position: absolute;
right: 15px;
top: 0;
opacity: 0;
-webkit-transition: opacity 0.5s ease;
transition: opacity 0.5s ease;
padding-right: 15px;
}
.pagination a:hover .hover-text {
opacity: 1;
}
.pagination a:after {
-webkit-transition: box-shadow 0.5s ease;
transition: box-shadow 0.5s ease;
width: 10px;
height: 10px;
display: block;
border: 1px solid;
border-radius: 50%;
content: "";
position: absolute;
margin: auto;
top: 0;
right: 3px;
bottom: 0;
}
/*320px以下は現在地表示のテキストを非表示*/
@media screen and (max-width: 320px) {
.pagination a .hover-text {
display: none;
}
}</style>
</head>
<body>
<body>
<header id="header">
<h1>Header</h1>
</header>
<main>
<section id="box1" class="box" data-section-name="About">
<h2>About</h2>
<div class="scrolldown">
<span>Scroll</span>
</div>
<!--/box-->
</section>
<section id="box2" class="box" data-section-name="Service">
<h2>Service</h2>
<!--/box-->
</section>
<section id="box3" class="box" data-section-name="Access">
<h2>Access</h2>
<!--/box-->
</section>
<section id="box4" class="box" data-section-name="Contact">
<h2>Contact</h2>
<!--/box-->
</section>
</main>
<footer id="footer">
<small>参照<br>
<a href="https://projects.lukehaas.me/scrollify/" target="_blank">https://projects.lukehaas.me/scrollify/</a>
</small>
</footer>
<script>$.scrollify({
section: ".box", //1ページスクロールさせたいエリアクラス名
scrollbars: "false", //スクロールバー表示・非表示設定
interstitialSection: "#header,#footer", //ヘッダーフッターを認識し、1ページスクロールさせず表示されるように設定
easing: "swing", // 他にもlinearやeaseOutExpoといったjQueryのeasing指定可能
scrollSpeed: 300, // スクロール時の速度
//以下、ページネーション設定
before: function (i, panels) {
var ref = panels[i].attr("data-section-name");
$(".pagination .active").removeClass("active");
$(".pagination").
find('a[href="#' + ref + '"]').
addClass("active");
},
afterRender: function () {
var pagination = '<ul class="pagination">';
var activeClass = "";
$(".box").each(function (i) {
//1ページスクロールさせたいエリアクラス名を指定
activeClass = "";
if (i === $.scrollify.currentIndex()) {
activeClass = "active";
}
pagination +=
'<li>
<a class="' +
activeClass +
'" href="#' +
$(this).attr("data-section-name") +
'">
<span class="hover-text">' +
$(this).attr("data-section-name").charAt(0).toUpperCase() +
$(this).attr("data-section-name").slice(1) +
"</span>
</a>
</li>";
});
pagination += "</ul>";
$("#box1").append(pagination); //はじめのエリアにページネーションを表示
$(".pagination a").on("click", $.scrollify.move);
} });
//# sourceURL=pen.js</script>
</body>
</html>
/*
外部依存 CSS:
- https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css
外部依存 JS (このデモは下記の JS にも依存します):
- https://code.jquery.com/jquery-3.4.1.min.js
- https://cdnjs.cloudflare.com/jquery.scrollify.min.js
*/
@charset "utf-8";
/*========= レイアウトのためのCSS ===============*/
body {
background-image: linear-gradient(
103.3deg,
rgba(252, 225, 208, 1) 30%,
rgba(255, 173, 214, 1) 55.7%,
rgba(162, 186, 245, 1) 81.8%
);
}
#header {
padding: 40px;
background-image: radial-gradient(
circle farthest-corner at 12.3% 19.3%,
rgba(85, 88, 218, 1) 0%,
rgba(95, 209, 249, 1) 100.2%
);
color: #fff;
text-align: center;
}
.box {
color: #fff;
padding: 40px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
#box1 {
background-image: linear-gradient(
112.1deg,
rgba(32, 38, 57, 1) 11.4%,
rgba(63, 76, 119, 1) 70.2%
);
}
/*========= スクロールダウンのためのCSS ===============*/
/*スクロールダウン全体の場所*/
.scrolldown {
/*描画位置※位置は適宜調整してください*/
position: absolute;
bottom: 10px;
right: 50%;
/*マウスの動き1.6秒かけて動く永遠にループ*/
animation: mousemove 1.6s ease-in-out infinite;
}
/*下からの距離が変化して上から下に動く*/
@keyframes mousemove {
0% {
bottom: 10px;
}
50% {
bottom: 5px;
}
100% {
bottom: 10px;
}
}
/*Scrollテキストの描写*/
.scrolldown span {
/*描画位置*/
position: absolute;
left: -15px;
bottom: 45px;
/*テキストの形状*/
color: #eee;
font-size: 0.7rem;
letter-spacing: 0.05em;
}
/*マウスの中の線描写 */
.scrolldown span::after {
content: "";
/*描画位置*/
position: absolute;
top: 10px;
left: 17px;
/*線の形状*/
width: 1px;
height: 15px;
background: #eee;
/*線の動き1.4秒かけて動く。永遠にループ*/
animation: mousepathmove 1.4s linear infinite;
opacity: 0;
}
/*上からの距離・不透明度・高さが変化して上から下に流れる*/
@keyframes mousepathmove {
0% {
height: 0;
top: 10px;
opacity: 0;
}
50% {
height: 15px;
opacity: 1;
}
100% {
height: 0;
top: 30px;
opacity: 0;
}
}
/*マウスの描写 */
.scrolldown:before {
content: "";
/*描画位置*/
position: absolute;
bottom: 0;
left: -10px;
/*マウスの形状*/
width: 25px;
height: 37px;
border-radius: 10px;
border: 1px solid #eee;
}
/*マウスの中の丸の描写*/
.scrolldown:after {
content: "";
/*描画位置*/
position: absolute;
bottom: 26px;
left: 0;
/*丸の形状*/
width: 5px;
height: 5px;
border-radius: 50%;
border: 1px solid #eee;
}
#box2 {
background-image: radial-gradient(
circle farthest-corner at 10% 20%,
rgba(90, 92, 106, 1) 0%,
rgba(32, 45, 58, 1) 81.3%
);
}
#box3 {
background-image: radial-gradient(
circle farthest-corner at 10% 20%,
rgba(69, 86, 102, 1) 0%,
rgba(34, 34, 34, 1) 90%
);
}
#box4 {
background-image: radial-gradient(
circle farthest-corner at -4% -12.9%,
rgba(74, 98, 110, 1) 0.3%,
rgba(30, 33, 48, 1) 90.2%
);
}
#footer {
padding: 40px;
background-image: radial-gradient(
circle farthest-corner at 12.3% 19.3%,
rgba(85, 88, 218, 1) 0%,
rgba(95, 209, 249, 1) 100.2%
);
color: #fff;
padding: 40px;
text-align: center;
}
#footer a {
color: #fff;
}
/*========= ページネーションCSS ===============*/
.pagination {
position: fixed;
right: 20px;
top: 50%;
transform: translateY(-50%);
font-size: 1em;
z-index: 10;
list-style: none;
}
.pagination a {
display: block;
height: 20px;
margin-bottom: 5px;
color: #fff;
position: relative;
padding: 4px;
}
.pagination a.active:after {
box-shadow: inset 0 0 0 5px;
}
/*現在地表示のテキストの設定*/
.pagination a .hover-text {
position: absolute;
right: 15px;
top: 0;
opacity: 0;
-webkit-transition: opacity 0.5s ease;
transition: opacity 0.5s ease;
padding-right: 15px;
}
.pagination a:hover .hover-text {
opacity: 1;
}
.pagination a:after {
-webkit-transition: box-shadow 0.5s ease;
transition: box-shadow 0.5s ease;
width: 10px;
height: 10px;
display: block;
border: 1px solid;
border-radius: 50%;
content: "";
position: absolute;
margin: auto;
top: 0;
right: 3px;
bottom: 0;
}
/*320px以下は現在地表示のテキストを非表示*/
@media screen and (max-width: 320px) {
.pagination a .hover-text {
display: none;
}
}
/*
外部依存 JS:
- https://code.jquery.com/jquery-3.4.1.min.js
- https://cdnjs.cloudflare.com/jquery.scrollify.min.js
外部依存 CSS (このデモは下記の CSS にも依存します):
- https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css
*/
$.scrollify({
section: ".box", //1ページスクロールさせたいエリアクラス名
scrollbars: "false", //スクロールバー表示・非表示設定
interstitialSection: "#header,#footer", //ヘッダーフッターを認識し、1ページスクロールさせず表示されるように設定
easing: "swing", // 他にもlinearやeaseOutExpoといったjQueryのeasing指定可能
scrollSpeed: 300, // スクロール時の速度
//以下、ページネーション設定
before: function (i, panels) {
var ref = panels[i].attr("data-section-name");
$(".pagination .active").removeClass("active");
$(".pagination").
find('a[href="#' + ref + '"]').
addClass("active");
},
afterRender: function () {
var pagination = '<ul class="pagination">';
var activeClass = "";
$(".box").each(function (i) {
//1ページスクロールさせたいエリアクラス名を指定
activeClass = "";
if (i === $.scrollify.currentIndex()) {
activeClass = "active";
}
pagination +=
'<li><a class="' +
activeClass +
'" href="#' +
$(this).attr("data-section-name") +
'"><span class="hover-text">' +
$(this).attr("data-section-name").charAt(0).toUpperCase() +
$(this).attr("data-section-name").slice(1) +
"</span></a></li>";
});
pagination += "</ul>";
$("#box1").append(pagination); //はじめのエリアにページネーションを表示
$(".pagination a").on("click", $.scrollify.move);
} });
//# sourceURL=pen.js