**dialog 태그
transform
, translate
, rotate
, scale
, perspective
or filter
CSS 속성을 가지는 요소가 있으면 position: fixed
속성이 깨짐<dialog>
요소나 popover
속성을 가지는 요소는 영향 받지 않음portal
, Vue의 Teleport
가 <dialog>
나 popover
속성으로 완전히 대체 가능?Node
table 태그
<tr>
은 항상 <table>
, <thead>
, <tbody>
, <tfoot>
내부에서만 사용<td>
안에는 <tr>
을 직접 넣을 수 없음, <table>
를 넣는 것은 가능button 태그
type
속성의 기본 값은 submit
<button>
may only contain Phrasing content.colgroup
으로 지정 참고a태그
a, audio(controls 속성이 있는 경우), button, details, embed, iframe, img(usemap속성이 있는 경우), input(hidden 상태가 아닌 경우), keygen, label, menu(type속성값이 toolbar인 경우), object(usemap속성이 있는 경우), select, textarea, video(controls 속성이 있는 경우)
) 를 제외한 태그는 중첩 가능 <a><button></button></a>
형태가 동작은 가능 함button과 a의 구분
button
a
cursor:pointer
hidden 속성
속성 선택자
~=?
rel
속성
<link>
, <a>
, <area>
, <form>
에서 유효 / 각 요소에따라 사용할 수 있는 속성값 다름<a>
의 rel
속성noopener
_self
, _top
, _parent
도 ₩_blank₩처럼 새 탭으로 열림target="_blank"
를 통해 새 탭을 열면 기존 탭의 참조를 반환하기 때문에 window.opener.location
사용해 기존 탭의 URL 변경 가능 (기존 탭과 똑같이 생긴 피싱 사이트로 기존 탭을 변경해 사용자의 개인정보 빼가는 시나리오 가능)target="_blank"
사용 시 rel="noopener"
추가해 window.opener
API의 악의적인 사용 방지 권장 (최신브라우저 자동 적용)window.opener
로 부모 윈도우 참조할 수 없게, 링크된 페이지와 부모 윈도우 별개의 프로세스로 취급되어 서로 퍼포먼스에 영향 Xnoreferrer
box-decoration-break
slice
, clone
CSS pre-processor
.sass
-> .scss
로 변경 sticky
grid
화면전환
수직 정렬
vertical-align
적용 시 원하는 결과가 나타나지 않는다면clip-path
font-size
font-family
에 동일한 font-size
를 적용한 경우 각각 다른 높이값을 가짐content-area
background
값이 적용되는 영역line-box
content-area
높이는 폰트 매트릭스에 의해 정의 됨line-height
높이가 line-box
의 높이 계산에 사용 됨line-height
와 vertical-align
속성을 기반으로 계산됨em
font-size
를 기반으로 동작line-height
line-height : 1
을 설정하는 것은 나쁜 습관content-area
가 기준이 아닌 font-size
의 상대값, content-area
보다 line-height
값이 작아질 수 있음normal
font-family
에 따라 달라짐<number>
<length>
<percentage>
vertical-align
baseline
(기본값)sub
super
text-top
text-bottom
middle
baseline
에 부모의 x-height
의 절반(0.5ex)을 더한 지점에 박스의 수직 중간 점을 정렬 시킴top
bottom
<length>
<percentage>
inherit
initial
revert
revert-layer
unset
줄바꿈
word-wrap: break-word;
word-break: break-all;
word-wrap: break-word;
word-break: keep-all;
word-break
normal
(초깃값)break-all
keep-all
break-word
word-wrap
(=overflow-wrap
)word-wrap
으로 나왔고, 대부분 브라우저에서 똑같은 이름으로 구현되었다가 요즘은 overflow-wrap으로 다시 지어지고, word-wrap은 동의어가 됨normal
(초깃값)break-word
animation
transition
transform
box-shadow
box-shadow: 가로거리 세로거리 흐린정도 퍼지는정도 색상 inset여부;
checkbox
resize
letter-spacing
flex
flex: 1
은 Flex 아이템이 가능한 모든 공간을 차지하려고 하며 크기를 유지하려고 노력, Flex 컨테이너 내에서 사용 가능한 공간을 아이템들 사이에 동등하게 분배하려고 함flex: 0 1 auto
은 Flex 아이템이 축소 가능하며 초기 크기를 유지하려고 함scroll
불필요한 영역 노출 및 새로 고침 방지
body {
overscroll-behavior-y: none;
}
모달 외 스크롤 발생 막음
.modal {
overscroll-behavior-y: contain;
}
pointer-events
이벤트가 부여된 요소를 제어하기 위하여 여러가지 방법을 모색할 수 있다.
CSS 속성 중에서 강제로 이벤트를 제어 할 수 있는 방법 pointer-events 라는 속성을 사용할 수도 있다.
https://velog.io/@godud2604/CSS-CSS-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%A0%9C%EC%96%B4-pointer-events
상대단위
가상선택자
table
fixed
너비 고정, auto
콘텐츠 길이에 맞게 늘어남 but 성능 이슈https://velog.io/@gil0127/svg-vs-png-vs-jpg
svg
webp
svg vs webp
viewBox
svg로 원형로딩 애니메이션
: https://mong-blog.tistory.com/entry/svg%EA%B0%80-%EA%B7%B8%EB%A0%A4%EC%A7%80%EB%8A%94-%ED%9A%A8%EA%B3%BCwith-stroke-dasharray-stroke-dashoffset
width, height 값을 CSS에서 적용하는 법도 표준적이며 일반적으로 잘 동작하나, 일부 브라우저 또는 특정 상황에서는 width 및 height 속성을 사용하는 것이 더 안정적일 수 있음 (특히 외부에서 SVG를 불러오거나 처리할 때 크기가 정확하게 유지되기를 원할 때는 속성을 사용하는 것이 좋음)
웹폰트
https://d2.naver.com/helloworld/4969726
FOUT(=flash of unstyled text)
FOIT(=Flash of invisible text)
font-display
CSS 속성을 적용하면 웹폰트 파일 다운로드 전 까지 텍스트를 숨길 수 있지만, 콘텐츠가 아예 보이지 않게 되어 추천하지 않음웹폰트 최적화 방법
폰트 파일 용량 줄이기
unicode-range
속성 (유니코드로 지정한 글자에만 웹 폰트 적용, 등록된 글자가 텍스트에 없으면 웹 폰트 다운 요청 X)텍스트가 항상 보이게
font-display: swap
적용해 항상 FOUT 으로 처리폰트 간 차이 줄이기
preload
옵션으로 먼저 로딩하기
<link>
태그의 rel 속성에 preload 옵션 사용하면 해당 리소스를 다른 리소스보다 빨리 로딩CJK(중국어, 일본어, 한국어)
페이지 레이아웃 관련 속성
/* 페이지 나눔을 피하고자 할 때 */
.print-no-page-break {
page-break-before: avoid;
page-break-after: avoid;
page-break-inside: avoid;
}
/* .avoid-page-break 요소 앞/뒤 페이지 나눔 피함
해당 요소가 페이지의 경계를 넘어가는 것을 방지, 요소를 잘림 없이 한 페이지에 표시 */
.avoid-page-break {
page-break-before: avoid;
page-break-after: avoid;
}
/* .example 클래스가 지정된 요소의 내부에서 페이지 나눔 동작을 브라우저에게 자동으로 결정하도록 함
브라우저는 콘텐츠와 페이지 인쇄 설정을 기반으로 요소 내부에서의 페이지 나눔 처리 */
.example {
page-break-inside: auto;
}
page-break-after
page-break-before
page-break-inside
Chrome 개발자도구 - 프린트 화면 확인
Windos 11 에서는 더이상 IE 11 지원 X
나머지 Windows dㅔ서도 2022년 6월 25일부터는 데스크탑 인터넷 익스플로러 11 지원 종료 예정
하지만 익스플로러에서만 구동되는 사이트와 기타 문제때문에 'Internet Explorer 11 모드(Edge용)'라는 기능으로 여전히 Windows 11에서 지원하고 있음
Windows 11 에서 IE 11 사용하는 방법 참고 : https://oldnew.tistory.com/693
https://www.theverge.com/2021/5/19/22443997/microsoft-internet-explorer-end-of-support-date
window 브라우저는 모니터 크기+해상도에 따라 권장 비율이 달라짐 (100%, 125%, 150% 등)
단순히 해상도만으로 정해지는건 아니고 EDID(디스플레이 정보)에서 반환하는 화면크기 정보와 조합해서 권장 배율이 달라집니다.