요즘 글 내용을 보여줄때 말줄임을 붙여서 예쁘게 보여달라는 요구가 많다.
그런데 이걸 스크립트로 조절하자니 너무 느리고 css 로 조절하려니 딱 내 맘에 드는게 없다. -_-;
지금까지 본 것 중에서 그나마 쓸만한 걸 기억해 놓자.
- 한줄짜리 말줄임
이건 간단하다. 그리고 대부분 알고 있다. css 만 적용해주면 된다. 요거 참 좋다.
text-overflow:ellipsis;white-space:nowrap;word-wrap:normal
이걸 적용해도 안될때는 width 값을 추가적으로 적용할 것.
- 여러줄 말줄임
이거 너무 골치 아프다 ㅜㅜ
그나마 webkit 브라우저에서는 css 만으로 예쁘게 적용이 되는데... 나머지가 문제다.
-- webkit 브라우저 대응
max-height:54px;display:block;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis
max-height 는 써보니 꽤 좋아서 계속 쓰게 됨(비 webkit 브라우저에서 height를 필요로 하는 경우가 있어서 사용함 -_-). 물론 없어도 된다.
-webkit-line-clamp 속성값으로 원하는 줄수를 넣기만 하면 된다.
너란 녀석 참 좋다 ㅜㅜ
비 webkit 브라우저에서도 이런거 좀 있으면 얼마나 좋아 ㅜㅜ
-- 비 webkit 브라우저 대응(파폭, 오페라)
말줄임 되는게 어디야... 그런데 치명적인 단점이 있으니...
height 값을 정해야 한다. (webkit 대응 css 에 max-height를 넣으것도 이것때문이다
그래서 두줄 말줄임으로 처리해 놨는데 출력되는 글이 한줄짜리면
대락 난감한 모양이 된다.
바로 이렇게... 대체 어디에 붙어있는거니;;
말줄임.. 너란 녀석 ㅜ
그래서 상황을 잘 봐가면서 써야 한다.
1. 말줄임하려는 태그 주위로 블럭 태그를 추가해야함.
<div class="ellipsis">
<div>
<p>말줄임하자!</p><!--원래 있던 태그-->
</div>
</div>
그리고 맨 바깥쪽에 원하는 클래스 이름 붙이기. 나는 ellipsis 라고 붙임.
2. css 추가
.ellipsis {overflow:hidden}
.ellipsis:before {content:"";float:left;width:1px}
.ellipsis > *:first-child {float:right;width:100%;margin-left:-1px}
.ellipsis:after {content:"\02026";float:right;position:relative;top:21px;left:100%;width:2em;margin-left:-2em;text-align:right;color:#777777;
box-sizing:content-box;
-webkit-box-sizing:content-box;
-moz-box-sizing:content-box;
background:-webkit-gradient(linear, left top, right top,from(rgba(255, 255, 255, 0)), to(white), color-stop(50%, white));
background:-moz-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
background:-o-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
background:-ms-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
background:linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
}
빨간 부분은 수치를 마음껏 조절해서 쓰면 되는 부분.
.ellipsis:after 에 width, margin-left 의 속성값 (+/-)2em은 절대값이 같아야 함.
내가 사용한 코드는
only 파폭과 오페라 대응용이므로...
/* common ellipsis for firefox, opera */
html.firefox .ellipsis, html.opera .ellipsis {overflow:hidden;height:38px} /* 기본 2줄 */
html.firefox .ellipsis:before, html.opera .ellipsis:before {content:"";float:left;width:1px;height:38px}
html.firefox .ellipsis > *:first-child, html.opera .ellipsis > *:first-child {float:right;width:100%;margin-left:-1px}
html.firefox .ellipsis:after, html.opera .ellipsis:after {content:"\02026";float:right;position:relative;top:21px;left:100%;width:2em;margin-left:-2em;text-align:right;color:#777777;
box-sizing:content-box;
-webkit-box-sizing:content-box;
-moz-box-sizing:content-box;
background:-webkit-gradient(linear, left top, right top,from(rgba(255, 255, 255, 0)), to(white), color-stop(50%, white));
background:-moz-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
background:-o-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
background:-ms-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
background:linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
}
3. only 내가 추가적으로 쓴 코드
반응형 크기에 따라 아래 값을 자유롭게 조절해가며 말줄임의 위치를 바꿔준다.
html.firefox .ellipsis
, html.opera .ellipsis
, html.firefox .ellipsis:before
, html.opera .ellipsis:before {height:55px}
html.firefox .ellipsis:after
, html.opera .ellipsis:after {height:53px;top:33px}
-- IE 브라우저
골칫 덩어리.
before, after를 이용한 ellipsis도 안 먹는다.
그래서 넌 그냥 스크립트로... ㅜ
신경써야 할 부분이 늘었지만, 스크립트로만 말줄임을 해줄때보단 속도가 빨라져서 괜찮음!
안구정화용ㅋㅋㅋ
'개발' 카테고리의 다른 글
[intellij] 폰트/글씨 크기 바꾸기 (1) | 2013.12.11 |
---|---|
리눅스 로그 파일 삭제 (0) | 2013.10.11 |
vi 전체삭제 명령어 (0) | 2013.02.15 |
UTF-8 과 EUC-KR (0) | 2013.02.13 |
단축키를 이용하자 (0) | 2013.01.30 |