CSS를 사용하여 긴 문장을 말줄임표로 처리하는방법을 공유하겠습니다.


<!DOCTYPE html>

<html lang="ko">

<head>

    <meta charset="UTF-8">

    <title>CSS로 말줄임표넣기</title>

    <style>

        .ellipsis{width:180px; white-space:nowrap; text-overflow:ellipsis; overflow:hidden;}

    </style>

</head>

<body>

    <h1>Hello world!</h1>

    <h1 class="ellipsis">Hello world!</h1>

</body>

</html>



동일한 <h1>태그안의 문장에 css를 설정하여 정해진 width길이를 넘어가는 글자는 말줄임표로 처리하였습니다.


게시판과 테이블에 유용하게 사용될 수 있습니다.




'CSS > CSS3' 카테고리의 다른 글

CSS를 이용한 리스트 넘버링 (순수CSS)  (0) 2018.01.25
SVG 파일의 CSS 애니메이션  (0) 2018.01.24

CSS의 counter-increment속성을 사용한 목록 번호 매기기


<!DOCTYPE html>

<html lang="ko">

<head>

    <meta charset="UTF-8">

    <title>counter-increment</title>

    <style>

        body{font-size:1.5em;}

        ul{list-style:none; margin:0; padding:0;}

    </style>

</head>

<body>

<h1>커피</h1>

    <ul>

        <li>첫번째 목록</li>

        <li>두번째 목록</li>

        <li>세번째 목록</li>

        <li>네번째 목록</li>

    </ul>

</body>

</html>


기본적인 형태의 ul목록입니다.



<!DOCTYPE html>

<html lang="ko">

<head>

    <meta charset="UTF-8">

    <title>counter-increment</title>

    <style>

        body{font-size:1.5em;}

        ul{list-style:none; margin:0; padding:0; counter-reset:list-number;}   /*list-number의 번호 초기화*/

        ul li{counter-increment:list-number;}   /*li선택자의 counter-increment명을 'list-number'라고 명명*/

        ul li:before{content:counter(list-number);}   /*list-number를 count하여 가상선택자before의 content로 담아준다.*/

    </style>

</head>

<body>

    <h1>커피</h1>

    <ul>

        <li>아메리카노</li>

        <li>카페라테</li>

        <li>카푸치노</li>

    </ul>

</body>

</html>


counter-increment를 통하여 위와같이 번호가 붙은 결과를 얻을 수 있습니다.

위의 예제를 활용하여 넘버링이 중첩된 형태의 커피숍 메뉴판을 만들어보겠습니다.





<!DOCTYPE html>

<html lang="ko">

<head>

    <meta charset="UTF-8">

    <title>counter-increment</title>

    <style>

        body{font-size:1.5em; counter-reset:title;}/*h1의 상위요소인 body에서 title의 번호 초기화*/

        h1{font-size:1.5em; counter-increment:title;}/*h1태그의 counter-increment명을 'title'이라고 명명*/

        h1:before{content:counter(title)"."; padding-right:5px; color:orange}/*쌍따옴표 " "안에 문자를 입력하면 "1."와같이 출력한다.*/

        ul{list-style:none; margin:0; padding:0; counter-reset:list-number;} /*list-number의 번호 초기화*/

        ul li{counter-increment:list-number; line-height:2} /*li선택자의 counter-increment명을 'list-number'라고 명명*/

        ul li:before{content:counter(list-number); /*list-number를 count하여 가상선택자before의 content로 담아준다.*/

            display:inline-block; text-align:center; line-height:1.2;  width:30px; height:30px; border-radius:50%; color:#fff; margin-right:10px; background:brown;} 

    </style>

</head>

<body>

    <h1>커피</h1>

    <ul>

        <li>아메리카노</li>

        <li>카페라테</li>

        <li>카푸치노</li>

    </ul>

     <h1>주스</h1>

    <ul>

        <li>딸기주스</li>

        <li>오렌지주스</li>

        <li>포도주스</li>

    </ul>

</body>

</html>


h1태그에도 counter-increment 요소를 적용하여 간단한 메뉴판 예시를 만들어보았습니다. 

위의 요소에서 중요한 포인트는 content:counter(title)"."와같이 쌍따옴표 영역에 문자를 입력하면 counter함수와 문자를 연결해서 쓸 수 있습니다. JS의 {함수+"문자"}와 유사한 형태입니다.



마지막으로 h1태그의 'title'함수와 li태그의 'list-number'함수를 중첩하여 사용하는 방법을 보여드리겠습니다.





<!DOCTYPE html>

<html lang="ko">

<head>

    <meta charset="UTF-8">

    <title>counter-increment</title>

    <style>

        body{font-size:1.5em; counter-reset:title;}/*h1의 상위요소인 body에서 title의 번호 초기화*/

        h1{font-size:1.5em; counter-increment:title;}/*h1태그의 counter-increment명을 'title'이라고 명명*/

        h1:before{content:counter(title)"."; padding-right:5px; color:orange}/*쌍따옴표 " "안에 문자를 입력하면 "1."와같이 출력한다.*/

        ul{list-style:none; margin:0; padding:0; counter-reset:list-number;} /*list-number의 번호 초기화*/

        ul li{counter-increment:list-number; line-height:2} /*li선택자의 counter-increment명을 'list-number'라고 명명*/

        ul li:before{content:counter(title)"-"counter(list-number);/*h1의 'title'과 문자"-" li의 'list-number'를 연결*/

            display:inline-block; text-align:center; line-height:1.2;  width:60px; height:30px; border-radius:50%; color:#fff; margin-right:10px; background:brown;} 

    </style>

</head>

<body>

    <h1>커피</h1>

    <ul>

        <li>아메리카노</li>

        <li>카페라테</li>

        <li>카푸치노</li>

    </ul>

     <h1>주스</h1>

    <ul>

        <li>딸기주스</li>

        <li>오렌지주스</li>

        <li>포도주스</li>

    </ul>

</body>

</html>




위와같이 content영역에 'title'함수와 'list-number'함수를 동시에 넣어 중첩할 수 있습니다.




첨부한 예제를 분석해보면 이해하기 쉬울거라고 생각됩니다.



'CSS > CSS3' 카테고리의 다른 글

CSS 말줄임표 (순수 CSS)  (0) 2018.01.26
SVG 파일의 CSS 애니메이션  (0) 2018.01.24

다양한 해상도를 제공하는 기기의 등장으로 인하여 SVG이미지의 사용도가 높아지고 있습니다.



아직 IE에서 SVG 애니메이션을 지원하지 않지만 차차 개선되면  GIF이미지의 색상의 한계점을 극복하며 더욱 자연스러운 움직임을 보여줄 수 있을거라 생각합니다.



애니메이션이 적용되지않은 SVG파일을 준비합니다.



<style>

      .cls-1 {

        stroke: #b00e0f;

        stroke-linejoin: round;

        stroke-width: 2px;

        filter: url(#filter);

      }


      .cls-1, .cls-2 {

        fill-rule: evenodd;

      }


      .cls-2 {

        fill: #fff;

      }

    </style>


SVG파일내에 위와같이 <style>영역이 지정되어있습니다.




<style>

      .cls-1 {

        stroke: #b00e0f;

        stroke-linejoin: round;

        stroke-width: 2px;

        filter: url(#filter);

      }


      .cls-1, .cls-2 {

        fill-rule: evenodd;

      }


      .cls-2 {

        fill: #fff;

      }

     

      #filter feFlood{flood-opacity:0.3; opacity:0; animation:glow 2s ease-in-out infinite;}

     

@keyframes glow{

0%{flood-opacity:0.1;}

50%{flood-opacity:0.3;}

100%{flood-opacity:0.1}

}

#Rounded_Rectangle_961{transform-origin:center; width:100%; animation:mark 1.5s ease-in-out infinite; }

  @keyframes mark{

  0%{opacity:1; transform:scale(1);}

50%{opacity:0.5; transform:scale(0.9);}

100%{opacity:1; transform:scale(1);}

  }

 

 

    </style>


SVG파일 <style>영역 내에 애니메이션을 추가해줍니다. 저는 SVG파일에 지정되어있는 ID값을 그대로 사용했습니다.




애니메이션을 적용한 최종 결과물입니다.(ie를제외한 브라우저에서 확인해주세요)



***SVG의 애니메이션은 아직 IE에서 "not supported"단계입니다. 



'CSS > CSS3' 카테고리의 다른 글

CSS 말줄임표 (순수 CSS)  (0) 2018.01.26
CSS를 이용한 리스트 넘버링 (순수CSS)  (0) 2018.01.25

+ Recent posts