TLDR
디자인 요구 사항 중 speech bubble ui가 있어서 이를 CSS 로 어떻게 구현하는지 원리를 파악해보았다. css 속성 중 :after, :before, position: absolute가 활용되며 해당 속성에 대한 이해가 있어야 이 글을 소화할 수 있다.
관련 Codepen 정리
Speech Bubble 에서 꼭지(triangle) 그리는 법
- speech bubble 의 div 의 position을 relative 로 설정한다. (
:after,:before영역의 기준점을 speech bubble 박스로 하기 위함이다.) :before선택자에position: absolute속성을 설정한다. 이때 기준은div.speech-bubble이다.:before선택자에border: <pixel> solid,border-color: color(top), transperent(right) transparent(bottom) transparent(left)로 triangle을 그린다.- 삼각형이 그려지는 원리를 이해하기 위해서는 widht, height 가 0 인 상태에서 boder값이 있는 경우 어떤 모양을 취하는지 알아야 한다. 어떤 형태를 띄는지는 위 codepen에서 확인할 수 있다.
top, left속성을 활용해 꼭지(triangle)의 위치를 정한다.
:after, :before 선택자 내부에서 %
div:after,div:before 의 경우 div의 width(left, right), height(top, bottom)가 %의 기준이 됨
Speech Bubble Box에 border 가 있는 경우
:before선택자를 통해triangle을 그린 뒤:after선택자로 더 작은 triangle 을 그려서:beforetriangle을 덮어써서 구현할 수 있다. 이때:aftertriangle 의 높이는:beforetriangle 크기 보다 작아야 border보다 작아야 한다.