배운것들

CSS before와 after

Chamy619 2021. 4. 10. 11:20

CSS before와 after

어제 CSS를 사용해 툴팁을 만들면서, ul 태그에 after 속성을 준 후 만들었는데, before와 after가 무슨 역할인지 정확히 몰라서 찾아보게 되었다.

간단히 말하면, before은 해당 엘리먼트의 첫 번째 자식을 만들고, 속성을 주는 것이다. after은 마지막 자식을 만들고 속성을 준다.

 

적용

실습을 하면서 before와 after를 적용해보았다.

인용구 만들기

q 태그 앞 뒤로 before와 after를 사용해 인용 문구를 추가해봤다.

 

HTML

<q>Hello</q> Chamy said <q>Hi!!</q>

CSS

q::before {
  content: "«";
  color: blue;
}

q::after {
  content: "»";
  color: red;
}

 

 

q::before 를 보면 content를 사용해 요소 내부에 넣을 값을 주고, 색은 파란색으로 지정해주었다. q:after 에서도 마찬가지로 content 요소를 사용해 내부에 넣을 값을 주고, 색은 빨간색으로 지정해주었다. 코드만으로 예측할 수 있다면 거의 이해한 것인데, Hello와 Hi가 아래 사진처럼 파란색과 빨간색의 인용문구로 채워질 것이다.

 

결과1

 

리스트 체크

이번에는 javascript도 사용해서, 완료한 리스트에 체크 표시를 하는 실습을 진행해봤다.

HTML

<ul>
    <li>Study</li>
    <li>Report</li>
    <li>Read</li>
</ul>

JS

const list = document.querySelector('ul');
list.addEventListener('click', (event) => {
    if (event.target.tagName === 'LI') {
        event.target.classList.toggle('done');
    }
}, false);

CSS

li {
  list-style-type: none;
  position: relative;
  margin: 2px;
  padding: 0.5em 0.5em 0.5em 2em;
  background: lightgrey;
  font-family: sans-serif;
}

li.done {
  background: #ccff99;
}

li.done::before {
  content: "";
  position: absolute;
  border-color: #009933;
  border-style: solid;
  border-width: 0 0.3em 0.25em 0;
  height: 1em;
  top: 1.3em;
  left: 0.6em;
  margin-top: -1em;
  transform: rotate(45deg);
  width: 0.5em;
}

JS를 사용해 클릭할 경우 done 클래스가 토글되도록 해두고, CSS를 사용해 done에 before를 걸어 앞에 체크 표시가 나타나도록 구현했다.

 

결과2