학습한 내용
http://sisikiller.dothome.co.kr/
달(moon)
말풍선(night2Bubble)
나무(rightMoonTree)
[html]
<div id="night2">
<div class="moon"></div>
<img class="night2Bubble" src="img/oneday/night2/night2bubble.png"
alt="하루동안 숙성을 시키게 됩니다.">
<div class="rightMoonTree"></div>
</div>
[style.css]
#night2 {
position: relative;
width: 100%;
height: 800px;
background-image: url(../img/oneday/night2/night2_bg.png);
}
#night2 .moon {
width: 135px;
height: 135px;
background-image: url(../img/oneday/night2/moon.png);
}
#night2 .night2Bubble {
position: absolute;
margin: 300px 0 0 80px;
}
#night2 .rightMoonTree {
position: absolute;
width: 243px;
height: 588px;
background-image: url(../img/oneday/night2/moontree.png);
right: 0;
bottom: 0;
}
[animation.css]
#night2 .moon {
animation: moveMoon linear 10s infinite;
}
@keyframes moveMoon {
from { margin-left: -135px; }
to { margin-left: 110%; }
}
margin-left: -135px;
: 최초 시작점(브라우저 왼쪽 끝)에서 moon의 width값만큼 왼쪽으로 더 밀쳐짐margin-left: 110%;
: 브라우저 오른쪽 끝에서 화면의 10%만큼 오른쪽으로 더 밀쳐짐[mobile.css]
#night2 {
height: 620px;
background-image: url(../img/mobile/oneday/night2/mobile_night2_bg.png);
}
#night2 .moon {
width: 40px;
height: 40px;
background-image: url(../img/mobile/oneday/night2/mobile_moon.png);
}
#night2 .night2Bubble {
width: 127px;
left: 50%;
margin: 300px 0 0 -67px;
}
#night2 .rightMoonTree {
width: 70px;
height: 173px;
background-image: url(../img/mobile/oneday/night2/mobile_moontree.png);
top: 70px;
bottom: initial;
}
bottom: initial;
: 미디어쿼리 바깥의 bottom: 0;
을 적용하지 않는다.해(sun)
왼쪽 나무(leftPine)
오른쪽 나무(rightPine)
[html]
<div id="morning">
<div class="sun"></div>
<div class="leftPine"></div>
<div class="rightPine"></div>
</div>
[style.css]
#morning {
position: relative;
width: 100%;
height: 800px;
background-image: url(../img/oneday/morning/morning_bg.png);
}
#morning .sun {
width: 131px;
height: 131px;
background-image: url(../img/oneday/morning/sun.png);
}
#morning .leftPine {
position: absolute;
width: 231px;
height: 329px;
background-image: url(../img/oneday/morning/leftpine.png);
top: 270px;
}
#morning .rightPine {
position: absolute;
width: 294px;
height: 609px;
background-image: url(../img/oneday/morning/rightpine.png);
right: 0;
bottom: 0;
}
top: 270px;
: y축 방향으로 270px 만큼 아래로[animation.css]
#morning .sun {
animation: moveSun linear 10s infinite 1500ms;
}
@keyframes moveSun {
from { margin-left: -131px; }
to { margin-left: 110%; }
}
[mobile.css]
#morning {
height: 720px;
background-image: url(../img/mobile/oneday/morning/mobile_morning_bg.png);
}
#morning .sun {
width: 33px;
height: 32px;
background-image: url(../img/mobile/oneday/morning/mobile_sun.png);
}
#morning .leftPine {
width: 48px;
height: 81px;
background-image: url(../img/mobile/oneday/morning/mobile_leftpine.png);
}
#morning .rightPine {
width: 77px;
height: 149px;
background-image: url(../img/mobile/oneday/morning/mobile_rightpine.png);
top: 220px;
}
왼쪽 주방용품(leftPan)
중간(steamWrap) : 기계(steam), 버블(bubble1)
오른쪽 냄비(rightPot)
말풍선(kitchenBubble)
[html]
<div id="kitchen">
<div class="leftPan"></div>
<div class="rightPot"></div>
<div class="steamWrap">
<div class="steam"></div>
<div class="bubble1"></div>
</div>
<img class="kitchenBubble" src="img/kitchen/kitchenbubble.png"
alt="숙성을 시킨 반죽을 잘 익혀주면">
</div>
[style.css]
#kitchen {
position: relative;
width: 100%;
height: 800px;
background-image: url(../img/kitchen/kitchen_bg.png);
}
#kitchen .leftPan {
float: left;
width: 253px;
height: 384px;
background-image: url(../img/kitchen/pan.png);
}
#kitchen .rightPot {
float: right;
width: 243px;
height: 132px;
background-image: url(../img/kitchen/pot.png);
}
#kitchen .steamWrap {
position: relative;
width: 483px;
height: 457px;
left: 50%;
margin-left: -275px;
top: -100px;
clear: both;
}
#kitchen .steamWrap .steam {
position: absolute;
width: 479px;
height: 457px;
background-image: url(../img/kitchen/steam.png);
z-index: 100;
/*bubble1보다 위에 오기 위해서*/
}
#kitchen .steamWrap .bubble1 {
position: absolute;
width: 55px;
height: 56px;
background-image: url(../img/kitchen/bubble.png);
margin-top: 230px;
}
#kitchen .kitchenBubble {
position: absolute;
top: 400px;
right: 0;
}
앞에 나오는 형제 태그에 순수 3차원 성질(float)이 부여되면 y축 정렬되어있던 형제 태그가 x축으로 같은 레이어에 위치하게 된다.
clear: both;
: 앞의 형제 태그의 float 속성 때문에 같은 선상에 겹쳐지는 현상을 끄고 싶을 때 사용, 다음 선상에 위치
[animation.css]
#kitchen .steamWrap .bubble1 {
animation-name: bubble;
animation-duration: 1000ms;
animation-delay: 0ms;
animation-fill-mode: forwards;
animation-timing-function: linear;
animation-iteration-count: infinite;
transform-origin: 0 0;
}
@keyframes bubble {
0% {transform:translate(0px, 0px) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) translate(-50%, -50%);}
100% {transform:translate(-117px, -188px) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) translate(-50%, -50%);}
}
[mobile.css]
#kitchen {
height: 400px;
background-image: url(../img/mobile/kitchen/mobile_kitchen_bg.png);
}
#kitchen .leftPan {
width: 52px;
height: 78px;
background-image: url(../img/mobile/kitchen/mobile_pan.png);
}
#kitchen .rightPot {
width: 73px;
height: 38px;
background-image: url(../img/mobile/kitchen/mobile_pot.png);
}
#kitchen .steamWrap {
width: 300px;
height: 300px;
margin-left: -150px;
/*left: 50%; 상속 받아 중앙 정렬*/
top: 0;
}
#kitchen .steamWrap .steam {
width: 222px;
height: 184px;
background-image: url(../img/mobile/kitchen/mobile_steam.png);
left: 50%;
margin: 100px 0 0 -140px;
}
#kitchen .steamWrap .bubble1 {
display: none;
}
#kitchen .kitchenBubble {
width: 143px;
left: 50%;
margin: -320px 0 0 -70px;
}
펭귄(penguin)
오른쪽 텍스트 이미지(color1Bubble)
[html]
<div id="color1">
<div class="penguin"></div>
<img class="color1Bubble" src="img/color/color1/color1bubble.png"
alt="말랑말랑 키즈가오 완성">
</div>
[style.css]
#color1 {
position: relative;
width: 100%;
height: 750px;
background-image: url(../img/color/color1/color1_bg.png);
}
#color1 .penguin {
position : relative;
width: 356px;
height: 244px;
background-image: url(../img/color/color1/penguin.png);
top: 100px;
left: 100px;
}
#color1 .color1Bubble {
float: right;
margin: 100px 200px 0 0;
}
[mobile.css]
#color1 {
height: 500px;
background-image: url(../img/mobile/color/color1/mobile_color1_bg.png);
}
#color1 .penguin {
display: none;
}
#color1 .color1Bubble {
float: initial;
position: relative;
width: 166px;
height: 56px;
left: 50%;
margin: 100px 0 0 -83px;
}
float: initial;
: float 기능 해제목마(horse)
버튼 영역(color2Wrap) : 말풍선(color2Bubble), 버튼(btn-wrap), 설명(color2Comment)
[html]
<div id="color2">
<div class="horse"></div>
<div class="color2Wrap">
<img class="color2Bubble" src="img/color/color2/color2bubble.png"
alt="색상을 선택해 보세요">
<div class="btn-wrap">
<button type="button" class="red"></button>
<button type="button" class="yellow"></button>
<button type="button" class="blue"></button>
</div>
<p class="color2Comment">아이가 원하는 색상을 직접 만들며 색감을 스스로 발달시킵니다.<br>
색이 잘 섞이므로 누구나 쉽게 다양한 색을 만들 수 있습니다.</p>
</div>
</div>
[style.css]
#color2 {
position: relative;
width: 100%;
height: 800px;
background-image: url(../img/color/color2/color2_bg.png);
}
#color2 .horse {
float: right;
width: 188px;
height: 241px;
background-image: url(../img/color/color2/horse.png);
margin: 100px 100px 0 0;
}
#color2 .color2Wrap {
clear: both; /*앞 형제 태그의 float 해제*/
position: relative;
width: 500px;
top: 100px;
margin-left: 50px;
}
#color2 .color2Wrap .color2Bubble {
margin-bottom: 30px;
/*말풍선과 버튼 사이의 공백*/
}
#color2 .color2Wrap .btn-wrap {
margin-bottom: 20px;
/*버튼과 텍스트 사이의 공백*/
}
#color2 .color2Wrap .btn-wrap .red,
#color2 .color2Wrap .btn-wrap .yellow,
#color2 .color2Wrap .btn-wrap .blue {
width: 59px;
height: 82px;
}
#color2 .color2Wrap .btn-wrap .red {
background-image: url(../img/color/color2/btn/btn_red.png);
}
#color2 .color2Wrap .btn-wrap .yellow {
background-image: url(../img/color/color2/btn/btn_yellow.png);
}
#color2 .color2Wrap .btn-wrap .blue {
background-image: url(../img/color/color2/btn/btn_blue.png);
}
#color2 .color2Wrap .color2Comment {
color: #8e7577;
}
#color2 .color2Wrap
에 height 지정하지 않는 이유[mobile.css]
#color2 {
height: 400px;
background-image: url(../img/mobile/color/color2/mobile_color2_bg.png);
}
#color2 .horse {
display: none;
}
#color2 .color2Wrap {
width: 320px;
top: 0;
left: 50%;
margin-left: -160px;
text-align: center; /*내용물 센터 정렬*/
}
#color2 .color2Wrap .color2Bubble {
width: 128px;
}
#color2 .color2Wrap .btn-wrap {
width: 300px;
height: 60px;
margin-bottom: 0;
}
#color2 .color2Wrap .btn-wrap .red,
#color2 .color2Wrap .btn-wrap .yellow,
#color2 .color2Wrap .btn-wrap .blue {
width: 40px;
height: 56px;
}
#color2 .color2Wrap .btn-wrap .red {
background-image: url(../img/mobile/color/color2/btn/mobile_btn_red.png);
}
#color2 .color2Wrap .btn-wrap .yellow {
background-image: url(../img/mobile/color/color2/btn/mobile_btn_yellow.png);
margin-left: 20px;
margin-right: 20px;
/*버튼 사이 공백*/
}
#color2 .color2Wrap .btn-wrap .blue {
background-image: url(../img/mobile/color/color2/btn/mobile_btn_blue.png);
}
#color2 .color2Wrap .color2Comment {
color: #8e7577;
line-height: 15px;
font-size: 10px;
}
상단 띠(flag)
오른쪽 선반(book)
가운데 로고(logo)
왼쪽 주사위(dice)
[html]
<div id="color3">
<div class="flag"></div>
<div class="book"></div>
<img class="logo" src="img/color/color3/logo.png"
alt="키즈가오 회사 로고">
<div class="dice"></div>
</div>
[style.css]
#color3 {
position: relative;
width: 100%;
height: 800px;
background-image: url(../img/color/color3/color3_bg.png);
}
#color3 .flag {
position: relative;
width: 1774px;
height: 178px;
background-image: url(../img/color/color3/flag.png);
left: 50%;
margin-left: -887px;
}
#color3 .book {
float: right;
width: 417px;
height: 178px;
background-image: url(../img/color/color3/book.png);
}
#color3 .logo {
position: absolute;
left: 50%;
margin-left: -378.5px;
}
#color3 .dice {
position: absolute;
width: 239px;
height: 200px;
background-image: url(../img/color/color3/dice.png);
left: 0;
bottom: 0;
}
[mobile.css]
#color3 {
height: 430px;
background-image: url(../img/mobile/color/color3/mobile_color3_bg.png);
}
#color3 .flag {
width: 320px;
height: 46px;
background-image: url(../img/mobile/color/color3/mobile_flag.png);
margin-left: -160px;
}
#color3 .book {
width: 107px;
height: 46px;
background-image: url(../img/mobile/color/color3/mobile_book.png);
margin-right: 20px;
}
#color3 .logo {
width: 225px;
margin-top: 100px;
margin-left: -112.5px;
/*left: 50%; 상속 받아 중앙 정렬*/
}
#color3 .dice {
width: 62px;
height: 52px;
background-image: url(../img/mobile/color/color3/mobile_dice.png);
}
id와 class를 일관성 있게 설정하는 것이 좋다.
예)
id = color1 -> class = color1Container
id = color2 -> class = color2Container
id = color3 -> class = color3Container
학습한 내용 중 어려웠던 점 또는 해결 못한 것들
실습 도중에 div 태그와 img 태그가 형제 태그일 때 선행하는 div 태그의 position에 따라 img 태그의 위치가 바뀌는 것을 보고는 개념을 다시 익히고자 했다.
해결 방법 작성
[html]
<div class="a"></div>
<div class="d"></div>
<img class="c" src="https://via.placeholder.com/150">
[css]
.a {
width: 200px;
height: 150px;
background-color: pink;
}
.d {
/*position : relative;*/
/*position: absolute;*/
width: 200px;
height: 150px;
background-color: blue;
}
.c {
margin: 100px 0 0 200px;
}
position 지정하지 않음
position : relative;
: margin 적용하지 않았을 때 / margin 적용했을 때
position : absolute;
학습 소감
키즈가오 사이트를 끝까지 만들어봐서 뿌듯했다. 주의점을 생각하면서 처음부터 스스로 다시 만들어봐야겠다.