21.07.16
Today I Learn
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="덴마크 쇼핑몰 카피캣 연습">
<meta name="author" content="김인권">
<meta name="keywords" content="html, css, tutorial">
<!-- 반응형 웹 사이트 -->
<title>Helbak</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<header id="header">
<h1>
<a href="#" class="logo">
<!-- svg태그로도 이미지 구성가능. 아직 배우지 않아서 사용안하겠다-->
<img src="https://via.placeholder.com/186x18">
</a>
</h1>
<nav class="buttons">
<ul>
<li>
<a href="" class="menu-button">
<img src="https://via.placeholder.com/22x20">
</a>
</li>
<li>
<a href="" class="menu-button">
<img src="https://via.placeholder.com/22x20">
</a>
</li>
<li>
<a href="" class="menu-button">
<img src="https://via.placeholder.com/22x20">
</a>
</li>
</ul>
</nav>
</header>
<!-- 제품 영역 -->
<main role="main" class="main-content">
<ul class="product-group">
<li>
<a href="#" class="product-group-link">
<article>
<h2 class="link-text">Product 1</h2>
<img src="https://via.placeholder.com/1000x563">
</article>
</a>
</li>
<li>
<a href="#" class="product-group-link">
<article>
<h2 class="link-text">Product 2</h2>
<img src="https://via.placeholder.com/1000x563">
</article>
</a>
</li>
<li>
<a href="#" class="product-group-link">
<article>
<h2 class="link-text">Product 3</h2>
<img src="https://via.placeholder.com/1000x563">
</article>
</a>
</li>
<li>
<a href="#" class="product-group-link">
<article>
<h2 class="link-text">Product 4</h2>
<img src="https://via.placeholder.com/1000x563">
</article>
</a>
</li>
<li>
<a href="#" class="product-group-link">
<article>
<h2 class="link-text">Product 5</h2>
<img src="https://via.placeholder.com/1000x563">
</article>
</a>
</li>
<li>
<a href="#" class="product-group-link">
<article>
<h2 class="link-text">Product 6</h2>
<img src="https://via.placeholder.com/1000x563">
</article>
</a>
</li>
</ul>
</main>
<!-- 하단 영역 -->
<footer id="footer">
<nav class="left-nav">
<ul>
<li><a href="#">Terms and conditions</a></li>
<li><a href="#">Cookies</a></li>
</ul>
</nav>
<nav class="right-methods">
<h3>Payment Methods</h3>
<ul>
<li><span class="payment-icon one"></span></li>
<li><span class="payment-icon two"></span></li>
<li><span class="payment-icon three"></span></li>
<li><span class="payment-icon four"></span></li>
<li><span class="payment-icon five"></span></li>
</ul>
</nav>
<a href="#" class="to-top-button"></a>
</footer>
</body>
</html>
style.css
/*
* 모든 html의 태그에 마진과 패딩값을 0을 적용하겠다.
*/
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* 디폴트값으로 넣어주면 좋음. 웹브라우저의 기본 넓이 높이 확인 가능 */
html, body {
width: 100%;
height: 100%;
}
body {
/* 가로스크롤 방지 */
overflow-x: hidden;
font-family: sans-serif;
color: #585858;
}
h1, h2, h3, h4, h5, h6, p {
/* 100 ~ 900. 100단위로 올라가며 숫자가 높아질수록 폰트 굵기가 굵어진다.*/
font-weight: 400;
}
/* li 태그의 동그라미는 왼쪽으로 밀어서 사라진것 뿐이라
직접 list-style 속성을 사용해서 제거함 */
li {
list-style: none;
}
a {
text-decoration: none;
}
/* 이미지 미세한 공간 제거 */
img {
vertical-align: middle;
}
span {
display: block;
}
/* 덴마크 쇼핑몰은 모바일 버전을 먼저 작성하고
미디어쿼리내에 PC 버전을 작성했다. */
#header h1 {
background-color: yellow;
}
#header h1 .logo {
position: relative;
/* a태그는 inline요소기 때문에 block적용 */
display: block;
width: 100%;
height: 65px;
/* background-color: yellow; */
}
#header .logo img {
position: absolute;
top: 0;
margin-top: 23px;
left: 50%;
margin-left: -93px;
}
/* 자식의 높이값을 부모가 인식할 수 있다.
header 태그가 ul태그의 높이값도 같이 인식할 수 있게 되었다. */
#header .buttons ul {
overflow: hidden;
}
#header .buttons li {
position: relative;
float: left;
width: 33.33%;
height: 65px;
}
#header .buttons .menu-button {
display: block;
width: 100%;
height: 100%;
text-align: center;
}
#header .buttons li:nth-child(1) .menu-button {
background-color: blue;
}
#header .buttons li:nth-child(2) .menu-button {
background-color: pink;
}
#header .buttons li:nth-child(3) .menu-button {
background-color: green;
}
#header .buttons li .menu-button img {
position: relative;
height: 20px;
/* y축 중앙정렬 공식
실무에서 자주 사용하므로 꼭 기억*/
top: 50%;
transform: translateY(-50%);
}
/* PC */
/* 1em = 16px; */
@media (min-width: 47em) {
#header {
position: fixed;
width: 100%;
height: 80px;
top: 0;
left: 0;
z-index: 99999;
}
#header h1 {
width: 50%;
}
/* 클릭의 범위를 logo주변만 되도록 줄임 */
#header h1 .logo {
width: 280px;
height: 80px;
}
#header .logo img {
margin-top: 30px;
}
#header .buttons {
position: absolute;
width: 50%;
/* 좌우배치 */
left: 50%;
top: 0;
}
#header .buttons li {
height: 80px;
}
}
.main-content .product-group-link {
position: relative;
display: block;
/* float: left; */
width: 100%;
/* 이미지의 비율을 근사치로 넣어준 것 */
height: 56.25%;
border: solid 10px red;
overflow: hidden;
}
/* 이미지의 크기를 link크기로 재조정 */
.main-content .product-group-link img {
width: 100%;
height: 100%;
}
.main-content .product-group-link .link-text {
position: absolute;
left: 25px;
bottom: 25px;
color: black;
font-size: 25px;
}
/* 헤더와 메인태그 사이에 공백을 만들어 주자 */
@media (min-width: 47em) {
.main-content {
padding-top: 80px;
}
}
@media (min-width: 60em) {
/* 높이값을 잡아주자 */
.main-content {
overflow: hidden;
}
.main-content .product-group-link {
/* 좌우배치 */
float: left;
width: 50%;
height: 28.125%;
}
}
#footer {
position: relative;
background-color: yellow;
/* footer 아래의 버튼의 크기를 미리 만들어 둔 것 */
padding-bottom: 66px;
}
#footer .left-nav {
padding-top: 20px;
text-align: center;
}
#footer .left-nav li {
padding: 5px 0;
}
#footer .right-methods {
text-align: center;
margin-bottom: 20px;
margin-top: 30px;
}
#footer .right-methods li {
display: inline-block;
padding: 7px 4px;
}
#footer .right-methods .payment-icon {
display: inline-block;
width: 30px;
height: 20px;
}
#footer .right-methods .payment-icon.one {
background-color: black;
}
#footer .right-methods .payment-icon.two {
background-color: red;
}
#footer .right-methods .payment-icon.three {
background-color: pink;
}
#footer .right-methods .payment-icon.four {
background-color: blue;
}
#footer .right-methods .payment-icon.five {
background-color: gray;
}
#footer .to-top-button {
position: absolute;
display: block;
width: 66px;
height: 66px;
background-color: green;
bottom: 0;
left: 50%;
margin-left: -33px;
}
@media (min-width: 60em) {
#footer {
height: 66px;
}
#footer .left-nav {
float: left;
width: 50%;
background-color: yellow;
text-align: left;
padding-top: 32px;
padding-left: 40px;
}
#footer .right-methods {
float: right;
width: 50%;
background-color: yellowgreen;
margin: 0;
padding-top: 32px;
padding-right: 40px;
text-align: right;
}
#footer ul, #footer li, #footer h3 {
display: inline-block;
vertical-align: middle;
}
#footer .left-nav a {
font-size: 14px;
padding: 0 5px;
}
#footer .right-methods li {
padding: 0 4px;
}
#footer h3 {
padding-right: 10px;
}
}
Review
오늘은 덴마크 쇼핑몰을 카피캣해보았다. 먼저 모바일 버전부터 작성한 다음에 미디터 쿼리 내에 PC 버전을 작성했다. 애니메이션은 따로 구현하지 않아서 어려운 점은 딱히 없었다.
Author And Source
이 문제에 관하여(21.07.16), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pyeonne/21.07.16저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)