본문 바로가기

티스토리 글제목(article title) 상단 고정

by JINYH 2022. 2. 19.
728x90
반응형

스크롤(scroll) 조작에 따라 반응하는 헤더(header)는 보다 매력적인 사용자 경험을 이끌어 낼 수 있으며, 헤더에는 웹사이트명(site title), 글 제목(article title), 메뉴(menu) 등의 유용한 정보를 반영할 수 있다.

 

본 글은 아래 예시(구글)와 같이 스크롤을 내릴 때 글 제목을 화면 상단(헤더)에 고정하는 5가지 방법에 대한 내용이다.

 

00-구글-블로그-예시

 

 

 

 

 


 

 

 

 

 

① 상단 고정 - 본문 영역

 

글을 발행하면 아래와 같이 글 제목이 본문 상단에 자동으로 생성되며, 스크롤을 내릴 때 글 제목을 화면 상단에 고정하는 방법이다.

 

1-본문-상단-고정

 

 

 

 

 

HTML 작업

아래 글 제목 치환자 코드를 HTML의 <div class="entry-content">##_article_rep_desc_## 사이에 삽입한다.

 

<div class="article_title">티스토리 글제목(article title) 상단 고정</div>

2-본문-상단-html

 

 

 

 

 

CSS 작업

아래 코드를 CSS에 삽입하면 적용된다.

position: sticky;top: 0px;가 화면 상단에 고정하는 코드이며, 세부 수치는 기호에 맞게 수정하기 바란다.

 

.article_title {
	position: sticky; /* 상단 고정 */
	top: 0px; /* 상단 고정의 위치 */
	margin: 0px 0px 30px 0px; /* 글과의 간격 */
	padding: 10px; /* 박스 내 여백 */
	background-color: #0A174E; /* 박스 배경 색상 */
	border-radius: 50px; /* 박스 테두리 라운딩 */
	font-family: S-CoreDream-7ExtraBold; /* 폰트 종류 */
	font-size: 20px; /* 폰트 크기 */
	color: #F5D042; /* 폰트 색상 */
	text-align: center; /* 텍스트 중앙 정렬 */
}

 

 

 

 

 

② 상단 고정 - 화면 전체

 

일정 부분까지 스크롤을 내리면 아래와 같이 글 제목이 화면 상단에 나타나고 스크롤을 계속 내려도 글 제목을 화면 상단에 고정하는 방법이다.

 

3-화면-상단-고정

 

 

 

 

 

HTML 작업

아래 코드를 HTML의 <div class="entry-content"> 위에 삽입한다. 8번째 줄 500을 수정해서 글 제목이 나타나는 스크롤 위치를 변경할 수 있다.

 

							</div>


<!-- 화면 상단 글제목 고정 시작-->
<div class="article_title">티스토리 글제목(article title) 상단 고정</div>
<script>
	$(window).scroll(function() {
		if ($(window).scrollTop() >= 500) {
			$('.article_title').addClass('visible-title');
		}
		else {
			$('.article_title').removeClass('visible-title');
		}
	});
	</script>
<!-- 화면 상단 글제목 고정 끝 -->


							<div class="entry-content">

04-화면-상단-html

 

 

 

 

 

CSS 작업

아래 코드를 CSS에 삽입하면 적용된다.

visibility: hidden;으로 인해 보이지 않는 것이고 스크롤 위치가 500을 넘어가면 visibility: visible;이 적용되어 보이게 된다.

 

/* 화면 상단 글제목 고정 */
.article_title {
	position: fixed; /* 고정 코드 */
	top: 0px; /* 고정 위치 */
	left: 0px; /* 고정 위치 */
	width: 100%; /* 가로 길이 - 화면 전체 */
	height: 30px; /* 세로 길이 */
	background: #0A174E; /* 박스 배경 색상 */
	padding: 20px; /* 박스 내 여백 */
	font-family: S-CoreDream-7ExtraBold; /* 폰트 종류 */
	color: #F5D042; /* 폰트 색상 */
	font-size: 24px; /* 폰트 크기 */
	line-height: 30px; /* 폰트 중앙 정렬 */
	z-index: 100; /* z축 순서 */
	visibility: hidden; /* 숨기기 */
}
.visible-title {
	visibility: visible; /* 보이기 */
}

 

 

 

 

 

③ article title ↔ menu

 

일정 부분까지 스크롤을 내리면 아래와 같이 글 제목이 화면 상단에 나타나고 이후 스크롤 Up & Down에 따라 글 제목과 메뉴가 슬라이딩으로 교체된다.

 

05-제목-메뉴-슬라이드

 

 

 

 

 

HTML 작업

아래 코드를 HTML의 <div class="entry-content"> 위에 삽입한다. 37번째 줄 300을 수정해서 글 제목이 나타나는 스크롤 위치를 변경할 수 있다.

 

							</div>


<!-- 화면 상단 글제목 고정 시작-->
<div class="topBar">
  <div class="container">
    <div class="title"></div>
    <div class="menu"></div>    
  </div>
</div>

<div class="article_title">티스토리 글제목(article title) 상단 고정</div>

<script>
	var $topBar = $(".topBar"),
			$titleBar = $(".topBar .title"),
			$menuBar = $(".topBar .menu"),
			$mainMenu = $("#gnb"),
			$titleArticle = $(".article_title").text(),
			currScroll = 0, prevScroll;

	$menuBar.html($mainMenu.html());
	$titleBar.html($titleArticle);

	$(window).scroll(function() {
		currScroll = $(this).scrollTop();
		if(currScroll > prevScroll) {
			$menuBar.slideUp();
			$titleBar.slideDown();
		}
		else {
			$menuBar.slideDown();
			$titleBar.slideUp();
		}

		prevScroll = currScroll;
		if(currScroll > 300) {
			$topBar.slideDown(100);
		}
		else {
			$topBar.slideUp(100);
		}
	});
	</script>
<!-- 화면 상단 글제목 고정 끝 -->


							<div class="entry-content">

 

 

 

 

 

CSS 작업

아래 코드를 CSS에 삽입하면 적용된다.

 

/* 화면 상단 글제목 고정 */
.topBar {
	display: none;
	position: fixed;
	top: 0px;
	left: 0px;
	width: 100%;
	background-color: #0A174E;
	z-index: 9999;
}
@media screen and (max-width: 800px) {
	.topBar {
		display: none;
	}
}
.container {
	max-width: 1080px;
	margin: 0 auto;
}
.topBar .menu {
	display: block;
}
.topBar .menu ul {
	list-style: none;
	display: flex;
	align-items: center;
	justify-content: flex-start;
}
.topBar .menu ul a,
.topBar .title {
	display: block;
	padding: 1em 2em;
	text-decoration: none;
	font-family: S-CoreDream-7ExtraBold;
	color: #F5D042;
}
.topBar .menu ul a:hover {
	background-color: #F5D042;
	color: #0A174E;
}
.topBar .title {
	display: none;
}

 

 

 

 

 

④ 헤더 중앙에 글 제목 출력

 

기본적으로 헤더가 상단에 고정되며, 스크롤을 내리면 아래와 같이 글 제목이 헤더 중앙에 나타난다.

 

06-헤더-중앙-고정

 

 

 

 

 

HTML 작업

아래 글 제목 치환자 코드를 헤더 코드 안에 있는 <div class="util"> 위에 삽입한다.

 

			</h1>


<!-- 헤더 중앙 글제목 고정 시작 -->
<div class="header-title">티스토리 글제목(article title) 상단 고정</div>
<!-- 헤더에 글제목 고정 끝 -->


			<div class="util">

 

 

 

아래 코드를 HTML의 <div class="entry-content"> 위에 삽입한다.

 

							</div>


<!-- 헤더에 글제목 고정 시작 -->
<script>
	$(window).scroll(function() {
		var scroll = $(window).scrollTop();

		if (scroll >= 500) {
			$(".header-title").addClass("ht-visible");
		}
		else {
			$(".header-title").removeClass("ht-visible");
		}
	});
	</script>
<!-- 헤더 중앙 글제목 고정 끝 -->


							<div class="entry-content">

 

 

 

 

 

CSS 작업

아래 코드를 CSS에 삽입하면 적용된다.

 

/* 헤더 중앙 글제목 고정 */
#header {
	position: sticky;
	top: 0px;
	background: #fff;
	z-index: 9999;
}
#header .inner {
	display: flex;
}
#header h1 {
	width: 20%;
	float: left;
}
.header-title {
	float: left;
	position: relative;
	width: 60%;
	height: 78px;
	line-height: 78px;
	font-family: S-CoreDream-7ExtraBold;
	font-size: 20px;
	color: #000;
	text-align: center;
	opacity: 0;
	-webkit-transition: opacity 0.5s;
	transition: opacity 0.5s;
}
.ht-visible {
	opacity: 1;
}

 

 

 

 

 

⑤ website title ↔ article title

 

기본적으로 헤더가 상단에 고정되며, 스크롤을 내리면 웹사이트명이 글 제목으로 변경된다.

 

07-헤더-타이틀-변경

 

 

 

 

 

HTML 작업

아래 글 제목 치환자 코드를 헤더 코드 안에 있는 <div class="util"> 위에 삽입한다.

 

			</h1>


<!-- 헤더에 글제목 고정 시작 -->
<div class="header-title">티스토리 글제목(article title) 상단 고정</div>
<!-- 헤더에 글제목 고정 끝 -->


			<div class="util">

 

 

 

아래 코드를 HTML의 <div class="entry-content"> 위에 삽입한다.

 

							</div>


<!-- 헤더에 글제목 고정 시작 -->
<script>
	$(window).scroll(function() {
		var scroll = $(window).scrollTop();

		if (scroll >= 300) {
			$(".header-title").addClass("ht-visible");
			$("#header h1").addClass("bt-display");
		}
		else {
			$("#header h1").removeClass("bt-display");
			$(".header-title").removeClass("ht-visible");
		}
	});
	</script>
<!-- 헤더에 글제목 고정 끝 -->


							<div class="entry-content">

 

 

 

 

 

CSS 작업

아래 코드를 CSS에 삽입하면 적용된다.

 

/* 헤더에 글제목 고정 */
#header {
	border-bottom: 1px solid #eee;
	background: #fff;
	z-index: 9999;
	position: sticky;
	top: 0px;
	box-shadow: 0px 3px 3px rgba(0,0,0,0.5);
}
#header .inner {
	position: relative;
	max-width: 1080px;
	margin: 0 auto;
	display: flex;
}
.header-title {
	opacity: 0;
	padding: 23px 0;
	font-family: 'Nanum Myeongjo';
	font-weight: 800;
	font-size: 1.75em;
	line-height: 32px;
	letter-spacing: -0.2px;
	color: #333;
}
.ht-visible {
	opacity: 1;
}
.bt-display {
	display: none;
}
@media screen and (max-width: 800px) {
	.header-title {
		display: none;
	}
}

 

 

 

 

 

728x90
반응형