Skip to content
SEO/seo-resources

์‚ฌ์ด๋“œ๋ฐ” ์„ค์ • ๋ฐฉ๋ฒ•- ๋™์  ์ด๋™๊ณผ ๊ณ ์ • ์„ค์ •์œผ๋กœ ๋ธ”๋กœ๊ทธ ์ˆ˜์ต ํ–ฅ์ƒ ๋ฐฉ๋ฒ•

๋ธ”๋กœ๊ทธ ์‚ฌ์ด๋“œ๋ฐ” ๋™์  ํ™œ์šฉ๋ฒ•๊ณผ ๋ชจ๋ฐ”์ผ UX ์ตœ์ ํ™” ์ „๋žต (CLS ๋ฐฉ์ง€ ์ฝ”๋“œ ํฌํ•จ)

๋ธ”๋กœ๊ทธ ์ˆ˜์ต ํ–ฅ์ƒ์„ ์œ„ํ•œ ๋ฐ์Šคํฌํƒ‘์‚ฌ์ด๋“œ๋ฐ”์˜ ๋™์  ์œ„์น˜ ์ด๋™(Sticky Sidebar) ์„ค์ •๊ณผ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ์˜ ํ•ญ์‹œ ๋…ธ์ถœ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.๋Œ“๊ธ€ ๋ณด๊ธฐ ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์„ ๊ฐœ์„ ํ•˜๊ณ  Core Web Vitals ์ง€ํ‘œ ์ค‘ CLS(๋ ˆ์ด์•„์›ƒ ๋ณ€๋™)๋ฅผ ์œ ๋ฐœํ•˜์ง€ ์•Š๋Š” ์ตœ์ ํ™”๋œ HTML ๋ฐ JavaScript ์ฝ”๋“œ๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.


1. ๋ธ”๋กœ๊ทธ ์ˆ˜์ต๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ๊ด€์ ์—์„œ์˜ ์‚ฌ์ด๋“œ๋ฐ” ์žฌ์ •์˜

๋ธ”๋กœ๊ทธ์—์„œ ์‚ฌ์ด๋“œ๋ฐ”๋Š” ์ •๋ณด์™€ ๊ด‘๊ณ ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœํ•˜์—ฌ ๋ธ”๋กœ๊ทธ ์ˆ˜์ต์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ์ฃผ๋Š” ํ•ต์‹ฌ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ์‚ฌ์ด๋“œ๋ฐ”๋Š” ๋ฐฉ๋ฌธํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ธ”๋กœ๊ทธ์˜ ์ค‘์š”ํ•œ ์ •๋ณด(์ธ๊ธฐ๊ธ€, ์นดํ…Œ๊ณ ๋ฆฌ, ๊ณต์ง€์‚ฌํ•ญ)๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ์• ๋“œ์„ผ์Šค ๋“ฑ ๊ด‘๊ณ ๋ฅผ ๋…ธ์ถœ์‹œ์ผœ ์ˆ˜์ต ํ–ฅ์ƒ์—๋„ ํฌ๊ฒŒ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ์˜ ์‚ฌ์ด๋“œ๋ฐ” ๋ฌธ์ œ์ 

ํ•˜์ง€๋งŒ ๋ชจ๋ฐ”์ผ ์ ‘์† ์‹œ ์‚ฌ์ด๋“œ๋ฐ”๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ธ”๋กœ๊ทธ ์Šคํ‚จ์˜ ๊ฒฝ์šฐ, ๊ด‘๊ณ  ๋…ธ์ถœ์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๊ฑฐ๋‚˜, ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ํ† ๊ธ€ ํ˜•ํƒœ๋กœ ์ˆจ๊ฒจ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์ž๊ฐ€ ๋…ธ์ถœ์‹œํ‚ค๊ณ  ์‹ถ์€ ์ •๋ณด๋‚˜ ๊ด‘๊ณ ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํšจ๊ณผ์ ์œผ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž์˜ ์„ ํƒ์ด ์ œํ•œ๋˜๊ณ , ๊ด‘๊ณ  ํด๋ฆญ๋ฅ (CTR)์ด ํ•˜๋ฝํ•˜์—ฌ ๋ธ”๋กœ๊ทธ ์ˆ˜์ต์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ํฐ ๋ฌธ์ œ๋Š” ๋ธ”๋กœ๊ทธ ์ˆ˜์ต์„ ์œ„ํ•œ ๊ด‘๊ณ  ๋…ธ์ถœ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋ฐ”์ผ ์ƒ๋‹จ์˜ ํ† ๊ธ€ํ˜• ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์–ด, ๋ชจ๋ฐ”์ผ์—์„œ ์‚ฌ์ด๋“œ ์˜์—ญ์€ ์‚ฌ์‹ค์ƒ ๋ฌด์šฉ์ง€๋ฌผ์ด ๋˜์–ด ๊ธฐํšŒ๋น„์šฉ์„ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ธ”๋กœ๊ทธ ์ˆ˜์ต๊ณผ ์‚ฌ์ด๋“œ๋ฐ” ํ™œ์šฉ์„ ๊ณ ๋ คํ•  ๋•Œ, ์‚ฌ์ด๋“œ๋ฐ”์˜ ๋…ธ์ถœ ๋ฐฉ์‹, ํŠนํžˆ ๋ชจ๋ฐ”์ผ์—์„œ์˜ ํ•ญ์‹œ ๋…ธ์ถœ ์ „๋žต์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์Šคํฌํƒ‘ ํ™˜๊ฒฝ์—์„œ์˜ ๊ณต๊ฐ„ ๋‚ญ๋น„ ๋ฌธ์ œ

์‚ฌ์ด๋“œ๋ฐ”๋Š” ๋ฐ์Šคํฌํƒ‘์—์„œ ์ „์ฒด ์˜์—ญ์˜ 3๋ถ„์˜ 1์„ ์ฐจ์ง€ํ•˜์ง€๋งŒ, ์ฃผ ์ฝ˜ํ…์ธ ์˜ ์–‘์ด ๋งŽ์•„์ ธ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธธ๊ฒŒ ์Šคํฌ๋กคํ•˜๋ฉด ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ๋๋‚˜๋Š” ์ง€์  ์ดํ›„์˜ ๋‚˜๋จธ์ง€ ์˜์—ญ์ด ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ๋‚จ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ฐ์Šคํฌํƒ‘์—์„œ๋„ ์Šคํฌ๋กค ์‹œ ๊ด‘๊ณ  ๋…ธ์ถœ์ด ์ค‘๋‹จ๋˜๋Š” ๊ณต๊ฐ„ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ด๋“œ๋ฐ” ์ •๋ณด๋ฅผ ๋™์ ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. ๋ธ”๋กœ๊ทธ ์ˆ˜์ต ํ–ฅ์ƒ์„ ์œ„ํ•œ ๋™์  ์‚ฌ์ด๋“œ๋ฐ” ๊ตฌํ˜„ ์ „๋žต

๋ฐ์Šคํฌํƒ‘์—์„œ ์‚ฌ์ด๋“œ๋ฐ” ์ •๋ณด๋ฅผ ๋™์ ์œผ๋กœ ์ด๋™ (Sticky/Follow Sidebar)

๋ฐ์Šคํฌํƒ‘ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์ด๋“œ ์ •๋ณด๊ฐ€ ์‚ฌ์šฉ์ž ๋ทฐ ์˜์—ญ(View Port)์„ ๋ฒ—์–ด๋‚˜ ์Šคํฌ๋กค๋  ๋•Œ, ์ด๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉ์ž ๋ทฐ ์˜์—ญ์œผ๋กœ ์ด๋™์‹œ์ผœ ํ•ญ์ƒ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ๋”ฐ๋ผ๋‹ค๋‹ˆ๋Š” '์Šคํ‹ฐํ‚ค(Sticky)' ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ ๊ด‘๊ณ  ๋…ธ์ถœ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ทฐ ์ด๋™์œผ๋กœ ๋นˆ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๊ณ  ๊ด‘๊ณ  ๋…ธ์ถœ ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ๋Š” ์ „๋žต
๋ฐ์Šคํฌํƒ‘์—์„œ ์‚ฌ์ด๋“œ ์ •๋ณด
๋ฐ์Šคํฌํƒ‘์—์„œ ์‚ฌ์ด๋“œ ์ •๋ณด

๋ชจ๋ฐ”์ผ์—์„œ ์„ ํƒ์  ๋…ธ์ถœ์„ ํ•ญ์‹œ ๋…ธ์ถœ๋กœ ์„ค์ • (๋ชจ๋ฐ”์ผ ์ตœ์ ํ™” ์ „๋žต)

๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์ด๋“œ ์˜์—ญ์„ ํ† ๊ธ€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ ํƒ์  ํ™˜๊ฒฝ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถˆํŽธํ•จ์„ ์ค„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ด‘๊ณ  ๋…ธ์ถœ ๊ธฐํšŒ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ† ๊ธ€ ํ˜•ํƒœ์˜ ์‚ฌ์ด๋“œ ์ •๋ณด๋Š” ์ฃผ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€๋ฆฌ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์ด๋“œ ์˜์—ญ์„ ์ฃผ ์ฝ˜ํ…์ธ  ํ•˜๋‹จ์— ๊ณ ์ • ๋ฐฐ์น˜ํ•˜๊ณ , ๋ชจ๋ฐ”์ผ ์ ‘์† ์‹œ ์‚ฌ์ด๋“œ ์˜์—ญ์„ ํ•ญ์ƒ ๋…ธ์ถœ๋˜๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๊ด‘๊ณ  ๋…ธ์ถœ ํšจ๊ณผ๋„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ ํƒ์  ์‚ฌํ•ญ๊ณผ ์ฃผ ์ฝ˜ํ…์ธ ์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ํ•˜๋‹จ ๊ณ ์ • ๋ฐฐ์น˜๋ฅผ ํ†ตํ•œ ๋…ธ์ถœ ๊ทน๋Œ€ํ™”
๋ชจ๋ฐ”์ผ์—์„œ ์‚ฌ์ด๋“œ ๋…ธ์ถœ
๋ชจ๋ฐ”์ผ์—์„œ ์‚ฌ์ด๋“œ ๋…ธ์ถœ

์‚ฌ์ด๋“œ ์˜์—ญ์„ ๋™์  ์‚ฌ์ด๋“œ(๋ฐ์Šคํฌํƒ‘)์™€ ๊ณ ์ • ์‚ฌ์ด๋“œ(๋ชจ๋ฐ”์ผ)๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋Š” ํ‹ฐ์Šคํ† ๋ฆฌ ์Šคํ‚จ์— ๋”ฐ๋ผ HTML ์š”์†Œ์˜ id๋‚˜ class ์„ ํƒ์ž๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค๋ฅธ ์Šคํ‚จ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

3. CLS ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์‚ฌ์ด๋“œ ์˜์—ญ ๋™์  ๊ณ ์ • ์ฝ”๋“œ

๋ฐ์Šคํฌํƒ‘ ๋™์  ์Šคํฌ๋กค ๋ฐ ๋ชจ๋ฐ”์ผ ํ•˜๋‹จ ๊ณ ์ • ์Šคํฌ๋ฆฝํŠธ

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋ฐ์Šคํฌํƒ‘์—์„œ ์‚ฌ์ด๋“œ ์ •๋ณด๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๋ทฐ ์˜์—ญ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ , ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋Š” ์ฃผ ์ฝ˜ํ…์ธ  ํ•˜๋‹จ์— ์‚ฌ์ด๋“œ ์˜์—ญ์„ position: static์œผ๋กœ ๊ณ ์ •์‹œ์ผœ ์Šคํฌ๋กค์„ ๋”ฐ๋ผ๊ฐ€์ง€ ์•Š๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Blub Club ์Šคํ‚จ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, #aside์™€ #container ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โœ” HTML์— ์ ์šฉ๋  ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ (/body ์ƒ๋‹จ์— ์ ์šฉ)

script async
document.addEventListener('DOMContentLoaded', function() {
const aside = document.getElementById('aside');
const container = document.getElementById('container');

function updateAsidePosition() {
const isDesktop = window.matchMedia('(min-width: 769px)').matches;
const isMobile = window.matchMedia('(max-width: 768px)').matches;

if (isMobile) {
aside.style.width = '100%';
aside.style.position = 'static';
aside.style.top = 'initial';
aside.style.right = 'auto';
 // ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ํ† ๊ธ€ ๋ฉ”๋‰ด๋ฅผ ์ˆจ๊น€ (CSS์—์„œ ์ฒ˜๋ฆฌ)
} else if (isDesktop) {
 // ๋ฐ์Šคํฌํƒ‘ Sticky ๋™์ž‘ ๊ตฌํ˜„ (์Šคํฌ๋กค ์œ„์น˜์— ๋”ฐ๋ฅธ position ๋ณ€๊ฒฝ)
const asideRect = aside.getBoundingClientRect();
const asideHeight = asideRect.height;
const windowHeight = window.innerHeight;
const scrollTop = window.scrollY;
const containerRect = container.getBoundingClientRect();
const containerBottom = containerRect.bottom + scrollTop;
 
 // ์ด ๋ถ€๋ถ„์€ ์Šคํฌ๋ฆฝํŠธ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์›๋ณธ์„ ๋ถ„์„ํ•˜์—ฌ ์ˆ˜์ •๋œ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. 
 // ์‹ค์ œ Sticky ๊ธฐ๋Šฅ์„ ์œ„ํ•ด CSS์˜ position: sticky๋ฅผ ์šฐ์„  ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜๋ฉฐ, 
 // ๋ณต์žกํ•œ ๊ณ„์‚ฐ์‹ ๋Œ€์‹  ์•„๋ž˜ CSS ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด CLS ๋ฐฉ์ง€์— ๋” ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.
 
const asideBottom = asideRect.bottom + scrollTop;

 // ๋งŒ์•ฝ ์‚ฌ์ด๋“œ๋ฐ”์˜ ํ•˜๋‹จ์ด ๋ทฐํฌํŠธ ํ•˜๋‹จ + ์Šคํฌ๋กค ์œ„์น˜๋ณด๋‹ค ํฌ๋‹ค๋ฉด (์ผ๋ฐ˜์ ์ธ Sticky ๋™์ž‘)
if (asideBottom windowHeight + scrollTop) { 
aside.style.position = 'absolute';
aside.style.top = `${Math.max(windowHeight - asideHeight, 0)}px`;
} else {
aside.style.position = 'sticky';
aside.style.top = '0';
}
}
}

window.addEventListener('scroll', updateAsidePosition);
window.addEventListener('resize', updateAsidePosition);
updateAsidePosition();
});
/script

CSS๋ฅผ ์ด์šฉํ•œ Sticky ๋ฐ ๋ชจ๋ฐ”์ผ ๋ฉ”๋‰ด ์ˆจ๊น€

๋ชจ๋ฐ”์ผ์—์„œ ๋ถˆํ•„์š”ํ•œ ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ์ˆจ๊ธฐ๊ณ , ๋ฐ์Šคํฌํƒ‘์—์„œ position: sticky๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ์ ์ธ ๋™์  ๋…ธ์ถœ์„ ํ™•๋ณดํ•˜๋Š” CSS ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. CSS ํŽธ์ง‘์˜ ๋งจ ํ•˜๋‹จ์— ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”.

โœ” CSS์— ์ ์šฉ๋  CSS ์ฝ”๋“œ

#aside {
position: sticky !important;
top: 0; /* ์Šคํฌ๋กค ์‹œ ์ƒ๋‹จ์— ๊ณ ์ • */
}

@media screen and (max-width: 768px) {
/* ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์ฃผ ์ฝ˜ํ…์ธ  ์•„๋ž˜๋กœ ๋ฐ€์–ด๋‚ด๊ณ  ๊ณ ์ • ํ•ด์ œ */
#aside {
position: static !important;
width: 100%; /* ๋„ˆ๋น„๋ฅผ 100%๋กœ ์„ค์ •ํ•˜์—ฌ ๊ฐ€์‹œ์„ฑ ํ™•๋ณด */
}
#header .util .menu {
display: none; /* ๋ชจ๋ฐ”์ผ ์‚ฌ์ด๋“œ๋ฐ” ํ† ๊ธ€ ๋ฉ”๋‰ด ๋ฒ„ํŠผ ์ˆจ๊น€ */
}
}

์ด ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ํ•ญ์ƒ ์‚ฌ์ด๋“œ ์˜์—ญ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ด‘๊ณ ์˜ ๋…ธ์ถœ ํšจ์œจ์„ฑ๋„ ์ฆ๋Œ€๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, position: sticky๋Š” ๋ทฐํฌํŠธ ๋‚ด์—์„œ ์š”์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์„ ๋ฏธ๋ฆฌ ํ™•๋ณดํ•˜๋ฏ€๋กœ CLS(๋ ˆ์ด์•„์›ƒ ๋ณ€ํ˜•)๋ฅผ ์œ ๋ฐœํ•˜์ง€ ์•Š์•„ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.

4. ๋Œ“๊ธ€ ์ˆจ๊ธฐ๊ธฐ ๋ฐ '๋Œ“๊ธ€ ๋ณด๊ธฐ' ๋ฒ„ํŠผ์„ ํ†ตํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ๊ฐœ์„ 

์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ๋ชจ๋ฐ”์ผ ์ฃผ ์ฝ˜ํ…์ธ  ํ•˜๋‹จ์— ๋ฐฐ์น˜ํ•  ๊ฒฝ์šฐ, ๋Œ“๊ธ€์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ด๋“œ ์ •๋ณด(๊ด‘๊ณ )์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๊ธธ๊ณ  ๋ณต์žกํ•œ ๋Œ“๊ธ€ ์„น์…˜์„ ์Šคํฌ๋กคํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ถˆํŽธํ•จ์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋Š” ์‚ฌ์ด๋“œ ์ •๋ณด๋ž€์— ๋„๋‹ฌํ•  ํ™•๋ฅ ์„ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์„ ํƒ์  ํ™˜๊ฒฝ์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ , ๋Œ“๊ธ€ ์˜์—ญ์„ ์„ ํƒ์  ํ™˜๊ฒฝ์œผ๋กœ ์กฐ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ธ”๋กœ๊ทธ ์ˆ˜์ต๊ณผ UX ๋ชจ๋‘์—๊ฒŒ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€ ๋ณด๊ธฐ ๋ฒ„ํŠผ ์ถ”๊ฐ€ ๋ฐ ์ฝ”๋“œ ์„ค๋ช…

์ดˆ๊ธฐ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ ๋Œ“๊ธ€์„ ์ˆจ๊ธฐ๊ณ , ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•  ๊ฒฝ์šฐ ๋Œ“๊ธ€ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ HTML์˜ ๋งจ ํ•˜๋‹จ /body ์ƒ๋‹จ์— ์ ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋Œ“๊ธ€ ๋ณด๊ธฐ ๋ฒ„ํŠผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

โœ” HTML์— ์ ์šฉ๋  ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ

script async
document.addEventListener('DOMContentLoaded', function() {
// DOM ๋กœ๋“œ ํ›„ 1์ดˆ ์ง€์—ฐ ์‹คํ–‰ (ํŽ˜์ด์ง€ ๋กœ๋“œ ์•ˆ์ •์„ฑ ํ™•๋ณด)
setTimeout(function() {
const buttonContainer = document.createElement('div');
buttonContainer.className = 'button-container';

const button = document.createElement('button');
button.id = 'show-comments';
button.className = 'styled-button';
button.textContent = '๋Œ“๊ธ€ ๋ณด๊ธฐ';

buttonContainer.appendChild(button);

const namecardBox = document.querySelector('.tt_box_namecard');
const comments = document.querySelector('.tt-comment-cont'); // ๋Œ“๊ธ€ ์ปจํ…Œ์ด๋„ˆ

 // ๋Œ“๊ธ€ ์˜์—ญ์ด ์กด์žฌํ•˜๊ณ , ๋Œ“๊ธ€ ์œ„์ ฏ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฒ„ํŠผ ์‚ฝ์ž…
if (namecardBox && comments) {
namecardBox.parentNode.insertBefore(buttonContainer, namecardBox.nextSibling);
 
 // ์ดˆ๊ธฐ ๋Œ“๊ธ€ ์ˆจ๊ธฐ๊ธฐ๋Š” CSS์—์„œ ์ฒ˜๋ฆฌ
 
 // ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ
button.addEventListener('click', function() {
if (comments) {
 // ๋Œ“๊ธ€ ํ‘œ์‹œ/์ˆจ๊ธฐ๊ธฐ ํ† ๊ธ€ ๊ธฐ๋Šฅ
comments.style.display = comments.style.display === 'block' ? 'none' : 'block';
this.textContent = comments.style.display === 'block' ? '๋Œ“๊ธ€ ์ˆจ๊ธฐ๊ธฐ' : '๋Œ“๊ธ€ ๋ณด๊ธฐ';
}
});
}
}, 1000);
});
/script

โœ” CSS์— ์ ์šฉ๋  CSS ์ฝ”๋“œ (๋Œ“๊ธ€ ์ˆจ๊ธฐ๊ธฐ ๋ฐ ๋ฒ„ํŠผ ์Šคํƒ€์ผ๋ง)

์ด ์ฝ”๋“œ๋Š” ์ดˆ๊ธฐ ๋Œ“๊ธ€ ์˜์—ญ(.tt-comment-cont)์„ ์ˆจ๊ธฐ๊ณ , ๋ฒ„ํŠผ์„ ์‚ฌ์šฉ์ž ์ทจํ–ฅ์— ๋งž๊ฒŒ ๊พธ๋ฐ€ ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. CSS ํŽธ์ง‘๋ž€์˜ ๋งจ ํ•˜๋‹จ์— ์ถ”๊ฐ€ํ•ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

/* ์ดˆ๊ธฐ ๋Œ“๊ธ€ ์˜์—ญ ์ˆจ๊น€ */
.tt-comment-cont{
display: none; 
}

/* ๋ฒ„ํŠผ ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์Šคํƒ€์ผ */
.button-container {
display: flex;
justify-content: center;
margin-top: 20px;
}

.styled-button {
position: relative;
border: 1px solid #adb5bd;
color: #292d31;
font-weight: 500;
font-size: 16px;
padding: 10px 40px 10px 45px;
background-color: #f8f9fa;
cursor: pointer;
border-radius: 5px;
transition: all 0.3s ease;
}

.styled-button:hover {
background-color: #e9ecef;
color: #212529;
border-color: #6c757d;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

์‚ฌ์ด๋“œ๋ฐ”์— ๊ด‘๊ณ ๋ฅผ ๋„ฃ์œผ๋ฉด CLS(๋ ˆ์ด์•„์›ƒ ๋ณ€๋™) ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋‚˜์š”?

์‚ฌ์ด๋“œ๋ฐ”์— ๊ด‘๊ณ ๋ฅผ ๋„ฃ์„ ๋•Œ ํ•ด๋‹น ๊ด‘๊ณ  ์˜์—ญ์˜ ํฌ๊ธฐ๋ฅผ CSS๋ฅผ ํ†ตํ•ด ๋ฏธ๋ฆฌ ๊ณ ์ •(์˜ˆ: height: 250px;)ํ•˜๊ฑฐ๋‚˜, position: sticky๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋ฉด CLS ๋ฐœ์ƒ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ position: sticky๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์š”์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์ด ์œ ์ง€๋˜๋ฏ€๋กœ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ CLS(๋ ˆ์ด์•„์›ƒ ๋ณ€ํ˜•)๋ฅผ ์œ ๋ฐœํ•˜์ง€ ์•Š์•„ ์•ˆ์ •์ ์ธ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ์—์„œ ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์ˆจ๊ธฐ๋Š” ๋Œ€์‹  ํ•˜๋‹จ์œผ๋กœ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์ด ์ˆ˜์ต์— ๋” ์œ ๋ฆฌํ•œ๊ฐ€์š”?

๋„ค, ํ›จ์”ฌ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ์—์„œ ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ์ˆจ๊ฒจ์ง€๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์—ด์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ด‘๊ณ  ๋…ธ์ถœ ๊ธฐํšŒ๊ฐ€ ๊ฑฐ์˜ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์ฃผ ์ฝ˜ํ…์ธ  ํ•˜๋‹จ์— ํ•ญ์‹œ ๋ฐฐ์น˜ํ•˜๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ๊ธ€์„ ๋๊นŒ์ง€ ์ฝ์—ˆ์„ ๋•Œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ด‘๊ณ ์— ๋…ธ์ถœ๋˜์–ด ์ˆ˜์ต ์ฐฝ์ถœ ๊ธฐํšŒ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋ฐ”์ผ ์ตœ์ ํ™”์˜ ํ•ต์‹ฌ ์ „๋žต ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๋Œ“๊ธ€ ๋ณด๊ธฐ ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋Œ“๊ธ€ ์ž‘์„ฑ๋ฅ ์ด ์ค„์–ด๋“ค์ง€ ์•Š๋‚˜์š”?

๋Œ“๊ธ€์„ ์ˆจ๊ธฐ๋ฉด ์ž‘์„ฑ๋ฅ ์ด ์•ฝ๊ฐ„ ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Š” ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„(Trade-off)์ž…๋‹ˆ๋‹ค. ๋Œ“๊ธ€ ์˜์—ญ์„ ์ˆจ๊น€์œผ๋กœ์จ ์‚ฌ์šฉ์ž์˜ ์ฃผ ์ฝ˜ํ…์ธ  ์†Œ๋น„ ๋ฐ ์‚ฌ์ด๋“œ๋ฐ” ๊ด‘๊ณ  ๋…ธ์ถœ๋ฅ ์„ ๋†’์ด๋Š” ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ“๊ธ€ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ๊ด€์‹ฌ์„ ํ‘œํ˜„ํ–ˆ์„ ๋•Œ๋งŒ ๋กœ๋“œ๋˜๋ฏ€๋กœ, ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์„ฑ๋Šฅ ๊ฐœ์„ ์—๋„ ๊ฐ„์ ‘์ ์œผ๋กœ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ ํ”Œ๋žซํผ(์˜ˆ: ์›Œ๋“œํ”„๋ ˆ์Šค)์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์ œ๊ณต๋œ JavaScript ์ฝ”๋“œ๋Š” HTML ์š”์†Œ์˜ ID(์˜ˆ: #aside, #container)์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์›Œ๋“œํ”„๋ ˆ์Šค๋‚˜ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ•ด๋‹น ํ”Œ๋žซํผ์˜ ํ…Œ๋งˆ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•˜์—ฌ ์‚ฌ์ด๋“œ๋ฐ”์™€ ์ฃผ ์ฝ˜ํ…์ธ  ์˜์—ญ์˜ ์ •ํ™•ํ•œ ID๋‚˜ ํด๋ž˜์Šค ์„ ํƒ์ž(Selector)๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. CSS ์ฝ”๋“œ ์—ญ์‹œ ์„ ํƒ์ž๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Latest in this category

    ์ฟ ํŒกํŒŒํŠธ๋„ˆ์Šค API V2 ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์‹ ์ƒํ’ˆ ๋ฐ ์ธ๊ธฐ์ƒํ’ˆ์ด ์ž๋™ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

    AI ์ฑ—๋ด‡์œผ๋กœ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉˆ์ถค
    ๋…ธ๋ž˜ ์žฌ์ƒ ๋ฉˆ์ถค