네이버 블로그 홈 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: hidden
text-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월부터 프로젝트를 하게 되면 기능 부분은 어떻게 할지 궁금하다.