【초보자용】스크롤의 도중으로부터 헤더를 내는 방법
아무래도 7note입니다. 스크롤하면 나오는 헤더를 만듭니다.
처음에는 크게 사진을 보여 스크롤 한 후 헤더를 표시하고 싶을 때의 움직임입니다.
※jQuery를 사용하고 있습니다. jQery는 무엇입니까? 그렇다면 여기
출처
index.html<!-- html、長いですがほとんど意味のあまりないソースです。 -->
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<header>
<p>ここがヘッダーです。</p>
</header>
<div class="mv">
<img src="sample.jpg" alt="メインビジュアル">
</div>
<main>
<div class="step1">
<h2>ステップ1</h2>
<p>こんにちは。こんにちは。こんにちは。こんにちは。</p>
</div>
<div class="step2">
<h2>ステップ2</h2>
<p>コンバンワコンバンワコンバンワコンバンワ</p>
</div>
<!-- ここから先はスクロールさせるための尺稼ぎ -->
<div class="stepx">
<h2>ステップx</h2>
<p>〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜</p>
</div>
<div class="stepx">
<h2>ステップx</h2>
<p>〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜</p>
</div>
<div class="stepx">
<h2>ステップx</h2>
<p>〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜</p>
</div>
<div class="stepx">
<h2>ステップx</h2>
<p>〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜</p>
</div>
</main>
style.cssheader {
width: 100%; /* 要素を幅いっぱいにする */
background: #555; /* 背景色を濃いグレーに指定。半透明の「rgba(0,0,0,0.5)」でもいいかも */
display: none; /* ページ読み込み時は非表示にする */
position: fixed; /* ヘッダーを絶対位置にする。スクロールしても固定 */
top: 0; /* 上から0pxに指定 */
left: 0; /* 左から0pxに指定 */
padding: 10px 20px; /* ちょっと余白をとっとくと綺麗 */
box-sizing: border-box; /* paddingを含んで幅100%ちょうどにするため */
}
header p {
color: #fff; /* 文字色を白にする */
}
.mv {
width: 100vw; /* ウィンドウサイズ横幅いっぱいに表示 */
height: 100vh; /* ウィンドウサイズ縦幅いっぱいに表示 */
}
.mv img {
width: 100%; /* 幅いっぱい */
height: 100%; /* 高さいっぱい */
object-fit: cover; /* background-size: cover;みたいに全面に収まるように画像を表示(IEでは効かないよ。) */
}
script.js$(window).scroll(function () { /* スクロールされた時 */
var pos = $('main').offset(); /* mvを過ぎたmainタグの高さを取得して変数[pos]に格納 */
if ($(this).scrollTop() > pos.top) { /* 変数[pos]より、スクロールされていたら */
$('header').fadeIn(); /* ヘッダーをふわっと表示 */
} else { /* それ以外の場合 */
$('header').fadeOut(); /* ヘッダーをふわっと非表示 */
}
});
나올 때는 페이드 인으로 나온다.
해설
동영상이 무겁고 동영상을 낼 수 없었습니다만, 푹신푹신 헤더가 나옵니다.pos.top
에서 main 요소의 높이를 가져오고 있지만 임의의 높이를 px 지정할 수도 있습니다.
html이 스크롤의 관계상 길어지고 있습니다만, javascript 자체는 컴팩트하게 걸치므로 난이도는 상냥한 분이라고 생각합니다.
그 밖에도 여러가지 헤더를 내는 방법이 있으므로, 향후의 기사에서도 써 갈 수 있으면(자) 생각하고 있습니다.
소마츠!
~ Qiita에서 매일 게시 중!! ~
【초보자용】HTML・CSS의 조금 테크 모임
Reference
이 문제에 관하여(【초보자용】스크롤의 도중으로부터 헤더를 내는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/7note/items/1f63d873fcd610fba956
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<!-- html、長いですがほとんど意味のあまりないソースです。 -->
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<header>
<p>ここがヘッダーです。</p>
</header>
<div class="mv">
<img src="sample.jpg" alt="メインビジュアル">
</div>
<main>
<div class="step1">
<h2>ステップ1</h2>
<p>こんにちは。こんにちは。こんにちは。こんにちは。</p>
</div>
<div class="step2">
<h2>ステップ2</h2>
<p>コンバンワコンバンワコンバンワコンバンワ</p>
</div>
<!-- ここから先はスクロールさせるための尺稼ぎ -->
<div class="stepx">
<h2>ステップx</h2>
<p>〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜</p>
</div>
<div class="stepx">
<h2>ステップx</h2>
<p>〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜</p>
</div>
<div class="stepx">
<h2>ステップx</h2>
<p>〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜</p>
</div>
<div class="stepx">
<h2>ステップx</h2>
<p>〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜<br>
〜〜〜〜〜</p>
</div>
</main>
header {
width: 100%; /* 要素を幅いっぱいにする */
background: #555; /* 背景色を濃いグレーに指定。半透明の「rgba(0,0,0,0.5)」でもいいかも */
display: none; /* ページ読み込み時は非表示にする */
position: fixed; /* ヘッダーを絶対位置にする。スクロールしても固定 */
top: 0; /* 上から0pxに指定 */
left: 0; /* 左から0pxに指定 */
padding: 10px 20px; /* ちょっと余白をとっとくと綺麗 */
box-sizing: border-box; /* paddingを含んで幅100%ちょうどにするため */
}
header p {
color: #fff; /* 文字色を白にする */
}
.mv {
width: 100vw; /* ウィンドウサイズ横幅いっぱいに表示 */
height: 100vh; /* ウィンドウサイズ縦幅いっぱいに表示 */
}
.mv img {
width: 100%; /* 幅いっぱい */
height: 100%; /* 高さいっぱい */
object-fit: cover; /* background-size: cover;みたいに全面に収まるように画像を表示(IEでは効かないよ。) */
}
$(window).scroll(function () { /* スクロールされた時 */
var pos = $('main').offset(); /* mvを過ぎたmainタグの高さを取得して変数[pos]に格納 */
if ($(this).scrollTop() > pos.top) { /* 変数[pos]より、スクロールされていたら */
$('header').fadeIn(); /* ヘッダーをふわっと表示 */
} else { /* それ以外の場合 */
$('header').fadeOut(); /* ヘッダーをふわっと非表示 */
}
});
Reference
이 문제에 관하여(【초보자용】스크롤의 도중으로부터 헤더를 내는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7note/items/1f63d873fcd610fba956텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)