[HTML/CSS] ์์๋๋ฉด ์ ์ฉํ CSS ์ต์ ๊ธฐ๋ฅ 6๊ฐ์ง
@supports
@supports
๋ฅผ ์ด์ฉํด ๋ธ๋ผ์ฐ์ ๊ฐ ํน์ CSS ์์ฑ์ ์ง์ํ ๋์, ์ง์ํ์ง ์์ ๋์ ์คํ์ผ์ ๊ฐ๊ฐ ์ง์ ํ ์ ์๋ค. @supports (์์ฑ๋ช
: ๊ฐ) {...}
ํํ๋ก ์ฌ์ฉํ๋ค. ์ง์ํ์ง ์์ ๋ not
์ฐ์ฐ์๋ฅผ ์ถ๊ฐํ๋ค.
/* ๋ธ๋ผ์ฐ์ ๊ฐ display: grid๋ฅผ ์ง์ํ๋ฉด ์ ์ฉ */
@supports (display: grid) {
div {
display: grid;
}
}
/* ๋ธ๋ผ์ฐ์ ๊ฐ display: grid๋ฅผ ์ง์ํ์ง ์์ผ๋ฉด float ์ ์ฉ */
@supports not (display: grid) {
div {
float: right;
}
}
CSS ์คํ์ผ ์์ฑ๋ฟ๋ง ์๋๋ผ CSS ์ ํ์(์ ๋ ํฐ)๋ฅผ ์ง์ํ๋์ง๋ ํ๋ณํ ์ ์๋ค.
/* ๋ธ๋ผ์ฐ์ ๊ฐ > ์์ ์
๋ ํฐ๋ฅผ ์ง์ํ ๋ */
@supports selector(A > B) {}
and
, or
์ฐ์ฐ์๋ ์ฌ์ฉํ ์ ์๋ค. and
๋ ๋ชจ๋ ์ฐธ์ผ ๋, or
์ ํ๋๋ผ๋ ์ฐธ์ด๋ฉด ํต๊ณผํ๋ค.
/* ๋ธ๋ผ์ฐ์ ๊ฐ ๊ดํธ์ ์์ฑ์ ๋ชจ๋ ์ง์ํ ๋(2๊ฐ ์ด์๋ ๊ฐ๋ฅ) */
@supports (display: table-cell) and (display: list-item) {}
@supports (display: table-cell) and (display: list-item) and (display:run-in) {}
/* ๋ธ๋ผ์ฐ์ ๊ฐ ๊ดํธ์ ์์ฑ ์ค ํ๋๋ผ๋ ์ง์ ํ ๋ */
@supports (transform-style: preserve) or (-moz-transform-style: preserve) {}
์๊ดํธ ()
๋ฅผ ์ด์ฉํด ์ฐ์ฐ์ ์์๋ฅผ ์ ์ํ ์ ์๋ค. ์๋ ์์์์ ํํ์3๊ณผ ํํ์4๋ฅผ ๋น๊ตํ๊ณ → ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํํ์2์ ๋น๊ตํ๊ณ → ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํํ์1๊ณผ ๋น๊ตํ๋ค.
๊ดํธ๋ฅผ ์ด์ฉํด ์ฐ์ฐ์ ์์๋ฅผ ์ ์ํ ์์ โผ
@supports (ํํ์1) or ((ํํ์2) or ((ํํ์3) or (ํํ์4)))
CSS Scroll Snap โญ๏ธ
Scroll Snap์ ์ด์ฉํด ์คํฌ๋กคํ ๋ ํญ์ ์์ ๋(ํน์ ์์/์ค๊ฐ) ๋ถ๋ถ์ ๋ถ๋๋ก ํ ์ ์๋ค(์ฌ์ฉ์๊ฐ ํฐ์น๋ ํ ์คํฌ๋กค์ ๋ง์ณค์ ๋์ ์คํ์
์ค์ ). ์์ ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ผ ํ์ง๋ง ์ด์ CSS ์ฝ๋ 2์ค์ด๋ฉด ๊ฐ๋ฅํ๋ค. ์คํฌ๋กค์ด ํ์ํ๋ฏ๋ก ๋ถ๋ชจ ์์์์ ์คํฌ๋กคํ๋ ๋ฐฉํฅ์ overflow
์์ฑ ๊ฐ์ด auto
ํน์ scroll
์ด์ด์ผ ํ๋ค.
.parents {
overflo-y: scroll;
scroll-snap-type: y mandatory; /* ๋ถ๋ชจ ์์์ ์ ์ฉ(๊ฐ๋ก ์คํฌ๋กค์ด๋ฉด y๋ฅผ x๋ก ๋ณ๊ฒฝ) */
}
.children {
scroll-snap-align: center; /* ์์ ์์์ ์ ์ฉ */
}
Scroll Snap ์ ์ฉ ์ / ์ฌ์ฉ์๊ฐ ์คํฌ๋กคํ ๋งํผ ์์ง์ธ๋ค โผ
Scroll Snap ์ ์ฉ ํ / ์คํฌ๋กคํ ๋ ํญ์ ์์์ ์๋ถ๋ถ์ผ๋ก ๋ถ๋๋ค(scroll-snap-align: start ๊ธฐ์ค) โผ
scroll-snap-type (๋ถ๋ชจ ์์์ ์ ์ฉ)
snap-scroll-type: [none | x | y | block | inline | both] [mandatory | proximity]?
์ค๋
ํฌ์ธํธ(์คํฌ๋กค ํ ๋ถ๋ ์ง์ )๋ฅผ ์ผ๋ง๋ ์๊ฒฉํ๊ฒ ์ ์ฉํ ์ง ์ค์ ํ ์ ์๋ค. ์ฒซ๋ฒ์งธ ๊ฐ์ ์ถ(axis), ๋๋ฒ์งธ ๊ฐ์ ์๊ฒฉ๋๋ฅผ ์ง์ ํ ์ ์๋ค. x
, y
๊ฐ์ ์ถ ๊ฐ๋ง ์
๋ ฅํ๋ฉด ์๊ฒฉ๋๋ ํญ์ proximity
๊ฐ ๋๋ฏ๋ก ์ฃผ์.
scroll-snap-type: y mandatory; /* y ๋ฐฉํฅ์ผ๋ก ํญ์ ์ค๋
*/
scroll-snap-type: y proximity; /* y ๋ฐฉํฅ์ผ๋ก ์ค๋
ํฌ์ธํธ์ ๊ทผ์ ํ์ ๋๋ง ์ค๋
(์ฌ์ฉ์ ์คํฌ๋กค ์ฐ์ ) */
scroll-snap-type: both mandatory; /* x/y ๋ฐฉํฅ์ผ๋ก ํญ์ ์ค๋
*/
scroll-nap-type: y; /* scroll-nap-type: y proximity์ ๋์ผ */
mandatory
์์ฑ์ ์คํฌ๋กค ํ ์์ ์ด๋์ ์์นํ๋ ํญ์ ์ค๋
ํฌ์ธํธ์ ๋ถ๋๋ค. proximity
์์ฑ์ ์ฌ์ฉ์ ์คํฌ๋กค์ ์ฐ์ ์ํ ๋ ์ฌ์ฉํ๋ฉฐ, ์คํฌ๋กค ํ ์ค๋
ํฌ์ธํธ์ ๊ทผ์ ํ์ ๋๋ง ์ค๋
๋๊ณ ๊ทธ ์ธ ์ง์ ์์ ์ค๋
๋์ง ์๋๋ค — scroll-snap-align
์์ฑ ๊ฐ์ ๋ฐ๋ผ ์กฐ๊ธ์ฉ ๋ค๋ฅด๋ค.
scroll-nap-type: y proximity
์ ์ฉ ํ๋ฉด / ์ค๋
ํฌ์ธํธ์ ๊ทผ์ ํ์ ๋๋ง ์ค๋
๋๋ค โผ
scroll-snap-align (์์ ์์์ ์ ์ฉ)
๐ก start
, end
์์ฑ ํจ๊ณผ๋ฅผ ํ์ธํ๊ณ ์ถ์ ๋ container ๋์ด๋ฅผ children ๋ณด๋ค ํฌ๊ฒํ๋ฉด ๋๋ค.
scroll-snap-align: none | start | end | center
์ค๋
์์ญ(๋ถ๋ชจ ์ปจํ
์ด๋)์์ ์์ ์์๊ฐ ์ด๋์ ์ค๋
๋ ์ง ์ค์ ํ ์ ์๋ค. none
์ ์ค๋
ํ์ง ์๊ณ , start
, end
, center
๋ ์ถ์ ๊ธฐ์ค์ผ๋ก ๋งจ ์/๋ค/์ค๊ฐ ์ง์ ์ผ๋ก ์ค๋
๋๋ค.
scroll-snap-align: start
— ์์ ์ง์ (ํ์ดํ ๋ถ๋ถ)์ผ๋ก ์ค๋
๋๋ค โผ
scroll-snap-align: end
— ๋ ์ง์ (ํ์ดํ ๋ถ๋ถ)์ผ๋ก ์ค๋
๋๋ค โผ
scroll-snap-align: center
— ์ค๊ฐ ์ง์ (ํ์ดํ ๋ถ๋ถ)์ผ๋ก ์ค๋
๋๋ค โผ
๊ทธ ์ธ snap-scroll ์์ฑ
snap-padding
: ์ค๋
๋๋ ๊ณณ์ padding ์ ์ฉ. ๋ถ๋ชจ ์์์ ์ ์ํ๋ฉฐ, ๋ชจ๋ ์์ ์์์ ์ ์ฉ๋๋ค.
scroll-padding: 2em; /* ๋ถ๋ชจ ์์(overflow: scroll์ด ์๋ ๊ณณ) */
snap-margin
: ์ค๋
๋๋ ๊ณณ์ margin ์ ์ฉ. ์์ ์์์ ๊ฐ๋ณ ์ง์ ํ๋ค.
scroll-margin: 2em; /* ์์ ์์ */
์ฝ๋ํ ์์
See the Pen CSS Scroll Snap by ColorFilter (@colorfilter) on CodePen.
:is ๊ฐ์ ์ ํ์(Pseudo Selector)
๐ก :is
๊ฐ์ ์ ํ์๋ ๋ง์ ์์๋ฅผ ์ ํํ ๋ ์ ์ฉํ๋ค. :is
์ ๋์ผํ ๊ธฐ๋ฅ์ ํ๋ :where
๋ ์๋ค. ๋ค๋ฅธ์ ์ :where
์ ๊ฐ์ค์น(specificity)๋ 0์ด๊ณ ๏ผ:is
๋ ์ธ์์ ๋ช
์ํ ๊ฒ ์ค์์ ๊ฐ์ฅ ๋์ ๊ฐ์ค์น๊ฐ ์ ์ฉ๋๋ค — ์ฐธ๊ณ ๊ธ
header
, nav
, form
ํ๊ทธ์ ํ์ ์์์ค button
ํ๊ทธ๋ฅผ ์ ํํ ๋ ์๋์ฒ๋ผ ์์ฑํ๋ค.
/* :is ๊ฐ์ ์ ํ์ ์ฌ์ฉ์ */
header button,
nav button,
form button {
background-color: tomato;
}
:is
๊ฐ์ ์ ํ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ฒ๋ผ ์์๋ฅผ ์ ํํ ๋ ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ํ๊ธฐ์ ์ผ๋ก ์ค์ผ ์ ์๋ค.
/* :is ๊ฐ์ ์ ํ์ ์ฌ์ฉ ํ */
:is(header, nav, form) button {
background-color: tomato;
}
:hover
๊ฐ์ ๊ฐ์ ์ ํ์๋ฅผ ์ฌ์ฉํ ๋ ํนํ ๋ ์ ์ฉํ๋ค.
/* :is ๊ฐ์ ์ ํ์ ์ฌ์ฉ์ */
.embed .save-button:hover,
.attachment .save-button:hover {
opacity: 1;
}
/* :is ๊ฐ์ ์ ํ์ ์ฌ์ฉํ */
:is(.embed, .attachment) .save-button:hover {
opacity: 1;
}
Flexbox Gap
๐ก ๋๋ถ๋ถ ๋ฉ์ด์ ๋ธ๋ผ์ฐ์ ์์ ์ง์
Flexbox์์ ์์ item ์์ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ง์ ํ ๋ gap
์ ์ฌ์ฉํ ์ ์๋ค. gap
๋ฌธ๋ฒ์ ์ง์ํ๊ธฐ ์ ์ margin
์ ์ด์ฉํด ์์ ์ฌ์ด์ ๊ณต๊ฐ์ ์ถ๊ฐํ์๋ค. gap
์ ์ธ์ ํ ์์๊ฐ ์์๋๋ง ๊ฐ๊ฒฉ์ ์ฃผ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๊ณต๊ฐ์ ์ฐจ์งํ์ง ์๋ ์ฅ์ ์ด ์๋ค. ๋ถ๋ชจ ์์(container)์ ์์ฑ์ ์ ์ฉํ๋ฉฐ, ์ผ๋ฐ/์ถ์ฝ ํํ์ ๋ฌธ๋ฒ์ ์ ๊ณตํ๋ค.
gap: row-gap(์ํ) column-gap(์ข์ฐ)
row-gap: value(์ํ)
column-gap: value(์ข์ฐ)
.flex-container {
display: flex;
/* ...์๋ต */
gap: 10px; /* ์ํ์ข์ฐ 10px ๊ฐ๊ฒฉ */
gap: 10px 20px; /* ์ํ 10px ์ข์ฐ 20px ๊ฐ๊ฒฉ */
row-gap: 10px; /* ์ํ 10px ๊ฐ๊ฒฉ */
column-gap: 20px; /* ์ข์ฐ 10px ๊ฐ๊ฒฉ */
}
aspect-ratio (์ข ํก๋น)
์๋ฆฌ๋จผํธ(ํน์ ์ด๋ฏธ์ง/์์ ๋ฑ)๋ฅผ ๋น์จ์ ๋ง์ถฐ ์ค์ด๊ฑฐ๋ ๋๋ฆด ๋ ์ ์ฉํ ์์ฑ. ์ด์ ๊น์ง padding
, calc
์์ฑ์ ํ์ฉํด์ ๋น์จ์ ์กฐ์ ํ์ง๋ง, ์ด์ aspect-ratio
๋ฅผ ์ฌ์ฉํด์ ๋ ๊น๋ํ๊ฒ ์กฐ์ ํ ์ ์๋ค.
aspect-ratio: auto | ratio
aspect-ratio: auto; /* ๊ธฐ๋ณธ๊ฐ */
aspect-ratio: 1 / 1; /* ๊ฐ๋ก/์ธ๋ก 1:1 ๋น์จ */
aspect-ratio: 2 / 1; /* ๊ฐ๋ก/์ธ๋ก 2:1 ๋น์จ */
aspect-ratio: 1 / 2; /* ๊ฐ๋ก/์ธ๋ก 1:2 ๋น์จ */
aspect-ratio: 16 / 9 /* ๊ฐ๋ก/์ธ๋ก 16:9 ๋น์จ → ์ผ๋ฐ์ ์ธ ๋น๋์ค ์ข
ํก๋น */
aspect-ratio: auto 4 / 3; /* ์์๊ฐ ๋น์จ์ ๊ฐ์ง๋ฉด auto, ๋น์จ์ ๊ฐ์ง์ง ์์ผ๋ฉด 4:3 ๋น์จ ์ ์ฉ */
๐ก ์๋ฆฌ๋จผํธ์ ๋๋น(width), ๋์ด(height)๋ฅผ ๋ชจ๋ ์ง์ ํ๋ค๋ฉด aspect-ratio ๋น์จ์ ๋ช ์ํด๋ ๋ฌด์๋๋ค. ๋๋น ํน์ ๋์ด๋ง ์ง์ ํ์ ๋ aspect-ratio ๋น์จ์ด ์ ์ฉ๋๋ค.
auto
์์ฑ๋ง ์คฌ์ ๋ : ์๋ฆฌ๋จผํธ ๊ณ ์ ์ ๋น์จ ๊ทธ๋๋ก ์ ์ง.auto
ratio
์์ฑ์ ํจ๊ป ์คฌ์ ๋ : ์์๊ฐ ๊ณ ์ ์ ๋น์จ์ ๊ฐ์ง๋ค๋ฉดauto
๊ฐ ์ ์ฉ๋๊ณ , ๊ณ ์ ์ ๋น์จ์ ๊ฐ์ง์ง ์๋๋ค๋ฉด(๊ฐ๋ก ํน์ ์ธ๋ก ํฌ๊ธฐ๋ง ๊ฐ์ง)ratio
์ ๋ช ์ํ ๋น์จ์ด ์ ์ฉ๋จ(์ฐธ๊ณ ๊ธ)
ํ์ฉ ์์
์๋ ์์์์ <div>
, <img>
2๊ฐ ํ๊ทธ ๋ชจ๋ preferably-square
๋ผ๋ class๋ฅผ ๊ฐ๊ณ ๋๋น๋ 300px
๋ก ์ง์ ๋์ด ์๋ค. ์ฌ๊ธฐ์ aspect-ratio
๋ฅผ ์ ์ฉํ๋ฉด 4:3
(800x600) ๋น์จ์ ๊ฐ์ง <img>
๋ auto
์์ฑ์ด ์ ์ฉ๋ผ์ ๋น์จ์ ๊ทธ๋๋ก ์ ์งํ๊ณ , width
๋ง ๊ฐ์ง๋ <div>
๋ 1 / 1
์์ฑ์ด ์ ์ฉ๋ผ์ 1:1
๋น์จ์ ๊ฐ๊ฒ๋๋ค.
๋ง์ฝ aspect-ratio: auto
๋ง ๋ช
์ํ๋ค๋ฉด, <div>
๋ height
๊ฐ์ด ์์ผ๋ฏ๋ก ํ๋ฉด์์ ์ฌ๋ผ์ง๋ค.
<div class="preferably-square"></div>
<img
class="preferably-square"
src="https://source.unsplash.com/random/800x600?minimal"
alt=""
/>
.preferably-square {
width: 300px;
aspect-ratio: auto 1 / 1;
}
์ข `<div>` / ์ฐ `<img>` โผ
See the Pen Two values for aspect-ratio property by ColorFilter (@colorfilter) on CodePen.
๋ฒ์ธ — ์ด๋ฏธ์ง ํ๊ทธ ๋น์จ ์กฐ์ ๋ฐฉ๋ฒ
์ฐธ๊ณ ๋ก <img>
ํ๊ทธ๋ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ด์ฆ๋ฅผ ์ค์ด๋ฉด์ ๋น์จ์ ์กฐ์ ํ ์๋ ์๋ค.
โถ ๋๋น, ๋์ด ์ค ํ๋๋ง ํฌ๊ธฐ ์ ํ
/* ๋๋น๋ ๋์ด ์ค ํ๋๋ง ํฌ๊ธฐ๋ฅผ ์ ํํ๋ฉด ๋๋จธ์ง๋ ๋น์จ์ ๋ง๊ฒ ์ค์ด๋ ๋ค */
img {
width: 100px;
}
โท ๋๋น, ๋์ด ํฌ๊ธฐ๋ฅผ ๋ชจ๋ ์ ํํ๋ฉด์ ๋น์จ์ ์ ์งํ๊ณ ์ถ์ ๋ - ๋ฐฉ๋ฒ1
/* ๋๋น/๋์ด๋ฅผ auto๋ก ์ค์ ํ๊ณ , max-width, max-height ์์ฑ์ผ๋ก ํฌ๊ธฐ ์ ํ */
img {
width: auto;
height: auto;
max-width: 100px;
max-height: 100px;
}
โธ ๋๋น, ๋์ด ํฌ๊ธฐ๋ฅผ ๋ชจ๋ ์ ํํ๋ฉด์ ๋น์จ์ ์ ์งํ๊ณ ์ถ์ ๋ - ๋ฐฉ๋ฒ2
/* ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ์ฌ์ฉํ๊ณ , background-size: contain ์์ฑ์ผ๋ก ๋น์จ ์ ์ง */
img {
width: 100px;
height: 100px;
background: url("url") no-repeat;
background-size: contain;
}
position: sticky
CSS์์ position์ ์์์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค. ๊ทธ ์ค sticky
์์ฑ์ relative
(static
๊ณผ ๋์ผํ์ง๋ง ์ขํ ํ๋กํผํฐ ์ฌ์ฉ ๊ฐ๋ฅ) ์ฒ๋ผ ๋์ํ๋ค๊ฐ ์คํฌ๋กค ํ ํน์ ์ง์ (์๊ณ์ )๊น์ง ๋๋ฌํ๋ฉด fixed
(๋ธ๋ผ์ฐ์ ๋ทฐํฌํธ ๊ธฐ์ค์ผ๋ก ์์น ์ด๋) ์ฒ๋ผ ์๋ํ๋ค.
sticky๋ฅผ ์ ์ฉํ๊ณ ์ถ์ ์์์ position: sticky
๋ฅผ ๋ช
์ํ๊ณ , ์ต์ 1๊ฐ์ ์ขํ ํ๋กํผํฐ(top, left ๋ฑ)๋ฅผ ์ง์ ํด์ผ ์๋ํ๋ค. sticky๋ ๋ณดํต ์๋จ์ ๋ถ๋๋ก ํ ๋ ํ์ฉํ๋ฏ๋ก top: 0
์ขํ ํ๋กํผํฐ๊ฐ ์์ฃผ ์ฌ์ฉ๋๋ค.
- sticky๊ฐ ์ ์๋ ์์(sticky ๋ฐ์ค)๋ ๋ถ๋ชจ ์์ ์์ญ ์์์๋ง ์คํฌ๋กค์ ๋ฐ๋ผ ์์ง์ธ๋ค
- sticky๊ฐ ์๋ํ๋ ค๋ฉด ๋ถ๋ชจ ์์๊ฐ ์คํฌ๋กคํ ์ ์๋ ์ถฉ๋ถํ ๋์ด(height)๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. ๋๋ฌธ์ sticky๋ฅผ ์ง์ ํ ์์ ์์์ ๋์ด๊ฐ ๋ถ๋ชจ ์์๋ณด๋ค ํฌ๋ฉด sticky ํจ๊ณผ๊ฐ ์๋ํ์ง ์๋๋ค.
<div id="container">
<!-- scroll ๋ฐ์ค -->
<section>
<!-- sticky ๋ฐ์ค์ ๋ถ๋ชจ -->
<header>Sticky Box 1</header>
<!-- sticky ๋ฐ์ค -->
</section>
<section>
<header>Sticky Box 2</header>
</section>
</div>
๊ฐ ์์์ ๋์ด๋ ์ง์ ํด์ผ ํ๋ ์ ์์ง ๋ง ๊ฒ(๊ทธ๋์ผ ์คํฌ๋กค ํ ์ ์์ผ๋ฏ๋ก) โผ
/* scroll ๋ฐ์ค (overflow: auto|scroll ์์ฑ์ด ์๋ ๊ณณ) */
#container {
height: 800px;
overflow-y: scroll;
}
/* sticky ๋ฐ์ค์ ๋ถ๋ชจ */
section {
height: 400px;
}
/* sticky ๋ฐ์ค (sticky ์์ฑ์ ์ ์ฉํ ์์) */
header {
height: 50px;
top: 0;
position: sticky;
}
sticky ๋ฐ์ค ํน์ง
๐ก ์๋ ๋ด์ฉ์ ๋ ์ง ์ฝ๋ฏน์ค ๊ธฐ์ ๋ธ๋ก๊ทธ ๊ธ ์ฐธ๊ณ
- ์ฉ์ด ์ค๋ช
- fixed ๋ฐ์ค:
position: fixed
์์ฑ์ ์ ์ฉํ ๋ฐ์ค - sticky ๋ฐ์ค:
position: sticky
์์ฑ์ ์ ์ฉํ ๋ฐ์ค - scroll ๋ฐ์ค:
overflow: auto|scroll
์์ฑ์ ์ ์ฉํ ๊ฐ์ฅ ๊ฐ๊น์ด ์กฐ์ ๋ฐ์ค.
- fixed ๋ฐ์ค:
- fixed ๋ฐ์ค๋ ๋ทฐํฌํธ์ ๊ณ ์ ๋์ง๋ง, sticky ๋ฐ์ค๋ scroll ๋ฐ์ค์ ๊ณ ์ ๋จ(scroll ๋ฐ์ค๊ฐ offset ๊ธฐ์ค)
- ๋ทฐํฌํธ๋ 1๊ฐ๋ฐ์ ์์ง๋ง,
scroll
๋ฐ์ค๋ ๋ฌธ์ ์์์ ์ฌ๋ฌ ๊ฐ ์์ฑ ๊ฐ๋ฅ scroll
๋ฐ์ค์sticky
๋ฐ์ค๊ฐ ๊ณ ์ ๋๋ ์๊ณ์ ์ ์คํฌ๋กค ์์น๊ฐ ๊ฒฐ์ ํจ.sticky
๋ฐ์ค ๋ฐ ๋ถ๋ชจ ๋ฐ์ค์ ์์น/ํฌ๊ธฐ๋ ์๊ณ์ ์ ์ํฅ์ ๋ฏธ์นจsticky
๋ฐ์ค์ ๋ถ๋ชจ ๋ฐ์ค๊ฐscroll
๋ฐ์ค๋ฅผ ๋ฒ์ด๋๋ฉด,sticky
๋ฐ์ค๋ ๋ค์ ์ผ๋ฐ์ ์ธ ํ๋ฆ์ ๋ฐ๋ฆ —relative
์ฒ๋ผ ๋์sticky
๋ฐ์ค์scroll
๋ฐ์ค ์ฌ์ด์overflow: hidden
์์ฑ์ ๊ฐ์ง ๋ฐ์ค๊ฐ ์์ผ๋ฉด,sticky
๋ฐ์ค๋ ์ผ๋ฐ์ ์ธ ํ๋ฆ์ ๋ฐ๋ฆ —relative
์ฒ๋ผ ๋์
์ฝ๋ํ ์์
See the Pen Position Sticky by ColorFilter (@colorfilter) on CodePen.
๋ ํผ๋ฐ์ค
- CSS Scroll snap์ผ๋ก fullpage.js๋ฅผ ๋์ฒดํ๊ณ ์ถ์๋ค
- CSS { position: sticky }
- aspect-ratio
- ์์๋๋ฉด ๋ฌด์กฐ๊ฑด ์ด๋! ์ต์ CSS ๊ธฐ๋ฅ 5๊ฐ์ง!
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[HTML/CSS] ์ค๋ฐ๊ฟ ์ ์ด ์์ฑ word-break / word-wrap(overflow-wrap)
[HTML/CSS] ์ค๋ฐ๊ฟ ์ ์ด ์์ฑ word-break / word-wrap(overflow-wrap)
2024.05.01 -
[DevTools] direnv๋ก ํด๋๋ง๋ค ๋ค๋ฅธ node ๋ฒ์ ์ ์ฉํ๊ธฐ / ์ ์ญ gitignore
[DevTools] direnv๋ก ํด๋๋ง๋ค ๋ค๋ฅธ node ๋ฒ์ ์ ์ฉํ๊ธฐ / ์ ์ญ gitignore
2024.05.01 -
[CS] RISC / CISC ์ํคํ ์ฒ ์ฐจ์ด์
[CS] RISC / CISC ์ํคํ ์ฒ ์ฐจ์ด์
2024.05.01 -
[JS] ์๋ฐ์คํฌ๋ฆฝํธ RORO ๋์์ธ ํจํด / ์คํ ํธ๋ ์ด์ค / ์๋ฌ ์ ํ
[JS] ์๋ฐ์คํฌ๋ฆฝํธ RORO ๋์์ธ ํจํด / ์คํ ํธ๋ ์ด์ค / ์๋ฌ ์ ํ
2024.05.01