๐ฅHTML ๋ฐ CSS๋ฅผ ์ฌ์ฉํ ์ด๋ฏธ์ง ํธ๋ฒ ํ ์คํธ ์ค๋ฒ๋ ์ด ํจ๊ณผ
โจ HTML ์ฐ๊ธฐ
์ฐ๋ฆฌ์ HTML ์ฝ๋๋ ๋งํฌ์ ์ ์ํ ๋ช ์ค์ ๋ถ๊ณผํฉ๋๋ค. ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<div class="image">
<img class="image__img" src="https://cdn.pixabay.com/photo/2017/12/15/13/51/polynesia-3021072__340.jpg"
alt="Bricks">
<div class="image__overlay">
<div class="image__title">Ocean</div>
<p class="image__description">
Enjoy the blue color of ocean.
</p>
</div>
</div>
์ฌ๊ธฐ์ ๋ชจ๋ ์์์ ์์ ๐จโ๐ง์ธ
div
์ด๋ฏธ์ง๊ฐ ์๋ class
๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด div
๋ด๋ถ์ ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋งํ๊ธฐ ์ํ img
ํ๊ทธ๊ฐ ์์ต๋๋ค. ๊ทธ ์๋์๋ div
image__overlay๊ฐ ์๋ class
๊ฐ ์์ผ๋ฉฐ ์ด๋ฏธ์ง ์๋ก ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๊ฐ๋ฉด ํ์๋ฉ๋๋ค. ์ด ์์ ์ค๋ฒ๋ ์ด์ ํ์ํ๋ ค๋ ์ด๋ฏธ์ง์ ๊ด๋ จ๋ ํ
์คํธ๋ฅผ ๋ฃ์ ์ ์์ต๋๋ค.๐คฉ CSS๋ก ์ค์ ํจ๊ณผ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ฌ๊ธฐ์์ ๋จผ์
img
ํ๊ทธ์ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ ์คํ์ผ์ ์ ์ฉํฉ๋๋ค. width
๋ฐ height
์์ฑ์ ๋ง๋ค์ด ๋ถ๋ชจ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ์ฒด ํฌ๊ธฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค..image__img {
display: block;
width: 100%;
height: 100%;
background-size: cover;
}
๋ถ๋ชจ ์ด๋ฏธ์ง ์ปจํ ์ด๋
position
์ ์์ฑrelative
๊ณผ ์ค๋ฒ๋ ์ด์ ์์ฑ์ absolute
๋ก ๋ง๋ค์ด์ด๋ฏธ์ง ์ปจํ ์ด๋์ ์น์๋ฅผ ์ค์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ค๋ฒ๋ ์ด์
top
๋ฐ left
์์ฑ์ 0 ์ผ๋ก ๋ง๋ค์ด ์ด๋ฏธ์ง ์ปจํ
์ด๋์ ์ผ์ชฝ ์๋จ์์ ๋ฐ๋ก ์์ํ๋๋ก ํฉ๋๋ค. width
๋ฐ height
๋ฅผ 100%๋ก ๋ง๋ค์ด ์ด๋ฏธ์ง ์ปจํ
์ด๋์ ์ ์ฒด ๋๋น๋ฅผ ์ฑ์ฐ๊ณ ์์ ํ ๋ฎ์ ์ ์๋๋ก ํฉ๋๋ค. ์ด์ ์ด ์ค๋ฒ๋ ์ด์ background
๋ถํฌ๋ช
๋๊ฐ ๊ฑฐ์ ์๋ ๊ฒ์์์ผ๋ก ๋ง๋ค์ด ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๋ํ ํ
์คํธ ์คํ์ผ์ ์ง์ ํ๊ธฐ ์ํด ์ผ๋ถCSS
๋ฅผ ์ถ๊ฐํ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ถ๋๋ฌ์ด ๋๋์ด ๋ค๋๋ก ์ค๋ฒ๋ ์ด์ transition
๋ฅผ ์ถ๊ฐํฉ๋๋ค..image {
position: relative;
width: 30%;
}
.image__overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.6);
color: #ffffff;
font-family: 'Quicksand', sans-serif;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
transition: opacity 0.25s;
}
์ด์ ๊ฐ์ฅ ์ค์ํ ๐๏ธ ๋ถ๋ถ์ ๊ทธ๋๋ก ๋๋ฉด ์ฒ์๋ถํฐ ์ด๋ฏธ์ง์ ์ค๋ฒ๋ ์ด๊ฐ ์์์ ์ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฏธ์ง ์์
hover
์๋ง ๋ํ๋๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฒ์์๋ ์ค๋ฒ๋ ์ดopacity
๋ฅผ 0์ผ๋ก ์ค์ ํ๊ณ ์ผ์งhover
์ 1๋ก ์ค์ ํฉ๋๋ค.// at start
.image__overlay{
opacity: 0;
}
// on hover
.image__overlay:hover {
opacity: 1;
}
๊ทธ๊ฒ ๋ค์ผ ์ด๋ฏธ์ง ํธ๋ฒ ํ ์คํธ ์ค๋ฒ๋ ์ด ํจ๊ณผ ๐ช๋ฅผ ์์ฑํ์ต๋๋ค.
์ด ์ค๋ฒ๋ ์ด ํจ๊ณผ๋ฅผ ์์ ํ์ฌ ํ๋ฆฟํ ์ค๋ฒ๋ ์ด ๋๋ ๋จ์ ์ค๋ฒ๋ ์ด๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋จํ ํด๋์ค๋ฅผ CSS ํ์ผ์ ์ถ๊ฐํ ๋ค์ HTML์ ์ค๋ฒ๋ ์ด div์ ์ถ๊ฐํฉ๋๋ค.
.image__overlay--blur {
backdrop-filter: blur(5px);
}
.image__overlay--solid {
background: #c51f5d;
}
์ ๊ฒ๊ณผ ๊ฐ์ด ์ฌ์ด. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๋ฌํ ์์ ์ฝ๋๋ก ์ธ ๊ฐ์ง ๋ฉ์ง CSS ํธ๋ฒ ํจ๊ณผ๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ด๊ฒ์ด ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค ๐.
์ฒซ ๊ธ์ ๋๋ค. ์๋๊ธธ ๋ฐ๋๋๋ค.
์ด ๊ฒ์๋ฌผ์ด ๋ง์์ ๋ค๋ฉด ๋ค์์์ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ฝ์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฅHTML ๋ฐ CSS๋ฅผ ์ฌ์ฉํ ์ด๋ฏธ์ง ํธ๋ฒ ํ ์คํธ ์ค๋ฒ๋ ์ด ํจ๊ณผ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/satishnaikawadi2001/image-hover-text-overlay-effect-with-html-and-css-5fmfํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค