네이버 블로그 홈 header, main-left, main-right, footer 만들기
github소스코드

margiin-top등을 사용해 대충 위아래를 맞추다가 나중에 오른쪽 영역 공간 크기가 생겨서 정렬 대상이 생기니 aline-item: center속성에 의해 위아래 정렬이 잘 되었다.calc로 맞추는 방법을 사용했다.border적용 시 input과 button의 정렬이 미세하게 틀어지는 일이 있었는데 border가 생성되는 시점을 바꿔서 조정하였다.#blog-header .blog-header-top .blog-header-input-wrap .blog-search-wrap input {
width: calc(100% - 40px);
height: 40px;
background-color: #ffffff;
border: solid 1px #4da733;
padding: 0 15px;
}
#blog-header .blog-header-top .blog-header-input-wrap .blog-search-wrap input:focus {
outline: none;
}
#blog-header .blog-header-top .blog-header-input-wrap .blog-search-wrap .btn-search {
width: 40px;
height: 40px;
background-color: #28a93a;
border: solid 1px #239e36;
}
border가 바뀌는 경우 기본값으로도 border를 주고 색상만 transparent로 설정하면 레이아웃 뒤틀림을 방지할 수 있다.#blog-header .blog-header-nav .nav-left ul li {
height: 40px;
margin-right: 16px;
border-bottom: 3px solid transparent;
}
#blog-header .blog-header-nav .nav-left ul li:hover,
#blog-header .blog-header-nav .nav-left ul li.on {
border-bottom: 3px solid #00ab33;
}
#blog-header .blog-header-nav .nav-left ul li:hover a,
#blog-header .blog-header-nav .nav-left ul li.on a{
color: #00ab33;
font-weight: 700;
}
width와 line-height를 동일하게 맞췄는데 내부 글자가 밑으로 쏠렸다. 그래서 line-height값을 조정해 맞추어주긴 했는데 왜 쏠리는지 잘 모르겠다. 실제 페이지를 보니 거기도 역시 line-height값이 조정되어 있었다.#blog-header .blog-header-nav .nav-right ul li {
width: auto;
height: 26px;
border: solid 1px rgba(0, 0, 0, 0.07);
margin-left: 8px;
}
#blog-header .blog-header-nav .nav-right ul li a {
display: block;
width: 100%;
height: 100%;
background-color: #ffffff;
border: 1px solid #cecece;
line-height: 20px;
padding: 0 10px;
font-size: 13px;
}
flex 대신 float을 사용한 이유:flex는 익스플로러 10 이상부터 지원하는 기능이기 때문이다. 이렇게 속성의 브라우저 호환 범위에 따라 작업 난이도 가 달라질 수 있다.position:relative , 자식 태그에 position:absolute 적용하였다.pagination은 그냥 div 태그 안에 a태그를 여러 개 넣어서 만들었다. 실제 페이지와 유사하도록 hover 효과도 추가했다.#blog-main #hot-topic .pagination-wrap {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
position: absolute;
top: 0;
right: 0;
}
#blog-main #hot-topic .pagination-wrap a {
display: block;
width: 20px;
height: 20px;
border: 1px solid rgba(221, 221, 223, 0.8);
background-color: #f6f6f7;
margin-left: 4px;
color: #888;
font-size: 12px;
text-align: center;
line-height: 17px;
}
#blog-main #hot-topic .pagination-wrap a.on {
border: 1px solid #69707d;
background-color: #69707d;
color: #fff;
}
#blog-main #hot-topic .pagination-wrap a:hover {
border: 1px solid #69707d;
}
#blog-main-content #blog-article .blog-article-nav ul li.on a {
color: #00ab33;
font-weight: 700;
}
#blog-main-content #blog-article .blog-article-nav ul li:hover a {
text-decoration: underline;
}
<i>태그 공간 만들어서 겹치게 배치해주었다.<div class="blog-article-img-wrap">
<img src="https://via.placeholder.com/167" alt="">
<i></i>
</div>
#blog-main-content .blog-article-lists .blog-article-img-wrap {
position: relative;
width: 167px;
height: 167px;
}
#blog-main-content .blog-article-lists .blog-article-img-wrap img {
position: absolute;
width: 100%;
height: 100%;
}
#blog-main-content .blog-article-lists .blog-article-img-wrap i {
display: block;
position: absolute;
width: 30px;
height: 30px;
background-color: rgba(0, 0, 0, 0.07);
bottom: 0;
right: 0;
}
#blog-main-content .blog-article-lists .blog-article-info .blog-profile-wrap .blog-profile-info:hover h3,
#blog-main-content .blog-article-lists .blog-article-info h2:hover,
#blog-main-content .blog-article-lists .blog-article-info .paragraph:hover {
text-decoration: underline;
}
letter-spacing: px값: 글자 좌우 간격을 조절하는 속성이다.<em>태그는 태생적으로 font-style:italic을 가지고 있다.display: -webkit-box; 이 속성이 없으니 말줄임 기호가 나타나지 않았다. 또한 이 속성이 없을 때는 글자가 마치 그림처럼 공간을 채워서 마지막줄이 가로로 잘려서 나오는 현상이 있었다. 아마 다른 -webkit 속성들도 제대로 적용되게 해 주는 기능이지 않을까 추측된다.-webkit-box-orient: vertical: 이 속성이 없으니 말줄임 기호가 나타나지 않았다. -webkit-line-clamp: 표시할 줄의 숫자를 지정한다.max-height: 영역의 최대 높이를 지정한다.word-wrap: break-word: 텍스트가 자신의 콘텐츠 박스 밖으로 오버플로 할 때 어떻게 줄바꿈할지 정하는 속성. break-word를 적용해보니 하나의 단어 안에서도 글이 잘려서 한 줄을 가득 채우고 다음 줄로 넘어가는 것을 확인했다.overflow: hiddentext-overflow: ellipsis#blog-main-content .blog-article-lists .blog-article-info .paragraph {
max-height: 60px;
margin-top: 10px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
word-wrap: break-word;
overflow: hidden;
text-overflow: ellipsis;
font-size: 13px;
color: #666666;
line-height: 20px;
}

line-height값을 조정해서 맞춰보려고 했는데 button의 화살표 아이콘을 background-image로 넣었더니 line-height로는 이미지의 위치를 조절하지 못한다는 문제가 있었다. 그래서 반대로 a태그의 위치를 조정해주었다.#blog-main-content .blog-article-pagination-wrap a {
display: inline-block;
width: 28px;
height: 28px;
border: 1px solid #ffffff;
margin: 0 1px;
padding: 0 6px;
font-size: 13px;
line-height: 24px;
}
#blog-main-content .blog-article-pagination-wrap .btn-next {
margin-left: 12px;
height: 28px;
padding-right: 15px;
background-image: url(../img/next.png);
background-repeat: no-repeat;
background-position: right;
background-size: 12px 12px;
text-align: center;
font-size: 13px;
line-height: 28px;
cursor: pointer;
}
em태그로 만들어주었다.#blog-main-content .blog-main-right #blog-account .account-sub em {
display: inline-block;
width: 1px;
height: 11px;
background-color: #c5c5c5;
vertical-align: -2px;
}
border-width: 색상 및 종류가 같은 border를 3면에 적용하고 싶을 때 유용한 속성인 것 같다. width값을 0으로 주면 border가 나타나지 않는다.#blog-main-content #blog-notice {
border: solid 1px #dddddf;
border-width: 0 1px 1px;
padding: 24px 22px 22px;
}
ellipsis 클래스를 적용해 만들어주었다.<ul class="blog-notice-lists">
<li class="ellipsis"><a href="#">[안내] 07.28일 모바일웹 스마트에디터3.0 본문</a></li>
<li class="ellipsis"><a href="#">[안내] PC 블로그 홈에서 쪽지 보내기 기능이 종료</a></li>
<li class="ellipsis"><a href="#">[17일] 블로그 DB 점검 안내</a></li>
</ul>
.ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
background-image로 아이콘 넣기background-image: url(../img/checkbox.png)background-repeat: no-repeat: 배경 이미지가 반복해서 영역을 채울지 여부background-position: left: 이미지를 적용할 위치를 조정할 수 있다. 영역 안에 다른 태그나 텍스트가 있는 경우 padding을 사용해 배경의 이동 없이 내용물의 위치를 조정해줄 수 있다.background-size: 20px 20px: 배경 이미지 사이즈를 조절해준다. img 태그 크기에 비해 너무 큰 이미지를 background로 넣었을 때 사진이 잘려서 나타났었는데 이미지 size를 조정할 수 있다는 것을 알게 되었다.#blog-main-content #blog-helper .blog-helper-lists li a {
display: block;
height: 35px;
padding-left: 30px;
background-image: url(../img/checkbox.png);
background-repeat: no-repeat;
background-position: left;
background-size: 20px 20px;
line-height: 35px;
}
before를 사용해서 넣어주었다.#blog-footer ul li a::before {
content: "";
display: inline-block;
width: 1px;
height: 11px;
background-color: #d7d7d7;
margin: 0 10px;
vertical-align: -1px;
}
#blog-footer ul li:first-child a::before {
content: initial;
}
line-height를 조절해서 맞추었지만, button 태그 안에 background로 아이콘을 넣으면서 배경 이미지도 함께 조정해야 하는 문제가 생겼다.line-height를 조절한 것 같아서 따라 만들어주었다. 지금 생각해보니 button태그 전체의 위치를 조정하는 방법도 가능했을 것 같다.오늘도 여러 다양한 레이아웃(ex. pagination)을 만들고 새로운 css 속성들을 많이 사용했다. 워낙 내용이 많다보니 실제 페이지에는 있지만 강의에서 생략하는 부분도 꽤 되는데 강의를 다 듣고나서 그런 부분들도 추가하는 것이 재미있었다. 점점 레이아웃 만드는데 자신감이 붙는 느낌이다. 언젠가는 내가 만든 페이지에 기능도 추가하고 싶은데 8월 말까지 들을 강의가 많아서 따로 백엔드를 복습할 시간이 안 날 것 같아서 아쉽다. 9월부터 프로젝트를 하게 되면 기능 부분은 어떻게 할지 궁금하다.