#6.5-1 에 한번에 쓰려고 했는데 생각보다 스마트폰 레이아웃 구현에서 새로 알게된 내용이 많아서 글이 너무 길어져서 태블릿 클론으로 분리하고, 프로젝트 하나인 반응형 웹까지 같이 담았다.
/* 최소 너비를 줘서 해결. */ body { min-width: 1000px; }
나는 처음에 nav li 사이즈를 12.5%로 줄여서 모든 버튼이 width가 줄어도 화면에 나타나도록 구현했었는데, 화면 크기가 작은 탭으로 접속한다면 버튼이 너무 답답할 수 있다는 문제가 있다.
- nav 말고 main 에 배경색을 주자.
main { background-color: #A36AAA;; }
<main> <section class="lnb"> <nav> <ul> <li><a href="">Btn1</a></li> (중간은 생략 .,..) <li><a href="">Btn7</a></li> </ul> </nav> </section>
내용이 들어가는 부분을 100% 로 준 뒤, nav 크기 만큼 margin-right를 주자. 내용에는 padding-right 를 nav 크기보다 약간 크게 주자.
.lnb { /* 왼쪽 nav */ width: 200px; } .content { /* 내용이 들어가는 부분 */ width: 100%; margin-right: -200px; } .content article { /* 내용 안의 글 하나하나 */ padding-right: -220px; }
고정바는 position: fixed; 를 이용해서 만들었다. 왼쪽, 오른쪽 영역을 top, bottom을 모두 묶어주니 위의 2번처럼 nav 높이만큼만 background-color가 적용되는 문제가 발생하지 않았다.
가운데 영역(main) 을 position: absolute; 를 이용해서 묶어서 발생하는 문제였다. margin을 해결하는 방법으로 해결할 수 있었다.
main { margin: 50px 15% 60px 15%; /* 내가 상 우 하 좌 높이, 너비 값으로 사용한 값 */ }
혼자서는 도저히 찾을수가 없어서 질문했는데, header를 fixed top:0 left:0 right:0 로 고정했기 때문에 부모의 min-width는 무시된다고 한다!! 그래서 header에 직접 min-width를 줘야하는 것!
여러 종류의 기기에 맞춘 화면을 보여주는 반응형 웹.
화면 너비에 따라 다른 기기로 간주하고, 각 화면에 맞추어 대응해야하는 태그들을 아래에 대응한다.
@media screen and (min-wdth: 960px) @media screen and (max-width: 959px) and (min-wdth: 760px) @media screen and (max-wdth: 759px)
/* computer screen */
@media screen and (min-width: 960px) {
body {
width: 1000px;
margin: 10px auto;
}
.nav-menu .list-menuNav .link-nav {
padding: 20px 70px;
}
}
/* tablet */
@media screen and (min-width: 767px) and (max-wdth: 959px) {
body {
width: 100%;
}
main {
font-size: 1.5em;
}
.nav-menu .list-menuNav .link-nav {
padding: 20px;
}
}
/* smart phone */
@media screen and (max-width: 766px) {
body {
width: 100%;
}
main {
font-size: 1em;
}
.nav-menu .list-menuNav .link-nav {
padding: 20px 10px;
}
}