사이트 만들기 : 이미지 유형 03
사이트를 만들기에 앞서 다양한 유형으로 나누어서 공부해보려고 합니다.
이번 시간에 공부해 볼 유형은 이미지 유형 입니다.
피그마로 먼저 레이아웃을 잡아준 뒤에 수치대로 코딩합니다.
그리드 레이아웃 방식으로 코딩합니다.
01. Figma로 레이아웃 잡기
Figma로 전체적인 틀을 잡아줍니다.
02. HTML
피그마 구도에 맞게 틀을 잡아줍니다.
{
<body>
<section id="imageType03" class="image__wrap gowun section">
<h2>바다에 사는 동물들</h2>
<p>
바다에 사는 귀엽고 귀여운 동물들 리스트입니다.<br>
</p>
<div class="image__inner container-fluid">
<article class="image">
<!-- <figure class="image__box">
<img src="img/image_image_bg03_01.jpg" alt="셰이크 로트폴라 모스크">
</figure> -->
<div class="image__desc">
<h3>바다에 사는 동물들</h3>
<p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
</div>
<div class="image__sns">
<a href="#" class="link"><span class="ir">페이스북</span></a>
<a href="#" class="link"><span class="ir">페이스북</span></a>
<a href="#" class="link"><span class="ir">페이스북</span></a>
<a href="#" class="link"><span class="ir">페이스북</span></a>
<a href="#" class="link"><span class="ir">페이스북</span></a>
</div>
</article>
<article class="image">
<figure class="image__box">
<img src="img/image_bg03_02.jpg" alt="상어">
</figure>
<div class="image__desc">
<h3>바다에 사는 동물들</h3>
<p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
</div>
<div class="image__sns">
<a href="#" class="link"><span class="ir">페이스북</span></a>
<a href="#" class="link"><span class="ir">페이지이동</span></a>
</div>
</article>
<article class="image">
<figure class="image__box">
<img src="img/image_bg03_03.jpg" alt="셰이크 로트폴라 모스크">
</figure>
<div class="image__desc">
<h3>바다에 사는 동물들</h3>
<p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
</div>
<div class="image__sns">
<a href="#" class="link"><span class="ir">페이스북</span></a>
<a href="#" class="link"><span class="ir">페이지이동</span></a>
</div>
</article>
<article class="image">
<figure class="image__box">
<img src="img/image_bg03_04.jpg" alt="셰이크 로트폴라 모스크">
</figure>
<div class="image__desc">
<h3>셰바다에 사는 동물들</h3>
<p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
</div>
<div class="image__sns">
<a href="#" class="link"><span class="ir">페이스북</span></a>
<a href="#" class="link"><span class="ir">페이지이동</span></a>
</div>
</article>
<article class="image">
<figure class="image__box">
<img src="img/image_bg03_05.jpg" alt="셰이크 로트폴라 모스크">
</figure>
<div class="image__desc">
<h3>바다에 사는 동물들</h3>
<p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
</div>
<div class="image__sns">
<a href="#" class="link"><span class="ir">페이스북</span></a>
<a href="#" class="link"><span class="ir">페이지이동</span></a>
</div>
</article>
</div>
</section>
</body>
}
03. CSS
이번에는 그리드 방식의 레이아웃을 사용했습니다.
flex방식도 가능하지만 구조를 나눠서 적용해야하고 데이터를 불러올때 버그가 발생할 수 있습니다.
ir효과와 함께 태그에도 이전 시간에 사용한 애니메이션 효과를 적용 시켰습니다.
{
/* fonts */
@import url('https://webfontworld.github.io/yangheeryu/GowunBatang.css');
.gowun {
font-family: GowunBatang;
font-weight: 400;
}
/* reset */
* {
margin: 0;
padding: 0;
}
a {
text-decoration: none;
color: #000;
}
img {
width: 100%;
vertical-align: top;
}
h1, h2, h3, h4, h5, h6 {
font-weight: normal;
}
/* common */
.container {
width: 1160px;
padding: 0 20px;
margin: 0 auto;
min-width: 1160px;
}
.container-fluid {
width: 100%;
padding: 0 100px;
box-sizing: border-box;
}
.section {
padding: 120px 0;
}
.section > h2 {
font-size: 50px;
line-height: 1;
text-align: center;
margin-bottom: 20px;
}
.section > p {
font-size: 22px;
font-weight: 300;
color: #666;
text-align: center;
margin-bottom: 70px;
}
.image {
position: relative;
overflow: hidden;
}
/* imageType */
.image__inner {
display: grid;
grid-template-areas:
"box1 box1 box2 box3"
"box1 box1 box4 box5";
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr;
grid-gap: 20px;
}
.image__inner .image:nth-child(1) {
grid-area: box1;
background: url(img/image_bg03_01.jpg);
background-size: cover;
}
.image__inner .image:nth-child(2) {
grid-area: box2;
}
.image__inner .image:nth-child(3) {
grid-area: box3;
}
.image__inner .image:nth-child(4) {
grid-area: box4;
}
.image__inner .image:nth-child(5) {
grid-area: box5;
}
.image__box {}
.image__desc {
/* display: none; */
position: absolute;
left: 0;
bottom: -100%;
width: 100%;
background-color: rgba(255, 255, 255, 0.135);
backdrop-filter: blur(15px);
padding: 16px;
box-sizing: border-box;
}
.image:hover .image__desc {
bottom: 0;
transition: all 0.25s;
}
.image:not(:hover) .image__desc {
transition: all 0.25s;
}
.image__desc h3 {
font-size: 20px;
color:#fff;
}
.image__desc p {
font-size: 16px;
color: #fff;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.image__sns {
/* display: none; */
position: absolute;
right: 10px;
top: 10px;
opacity: 0;
}
.image__sns a{
width: 36px;
height: 36px;
background: #fff;
border-radius: 50%;
display: block;
margin-bottom: 5px;
background: url(img/image_bg03_icon.svg) no-repeat;
}
.image__sns a:nth-child(1){}
.image__sns a:nth-child(2){
background-position: -50px 0;
}
.image__sns a:nth-child(3){
background-position: -100px 0;
}
.image__sns a:nth-child(4){
background-position: -150px 0;
}
.image__sns a:nth-child(5){
background-position: -200px 0;
}
.image:hover .image__sns {
/* right: 10px; */
opacity: 1;
transition: all 0.25s;
}
.image:not(:hover) .image__sns {
transition: all 0.25s;
}
.ir {
display: block;
overflow: hidden;
font-size: 0;
line-height: 0;
text-indent: -9999px;
}
}
댓글