display: table 속성

요즘은 float css, flex css, grid css 사용하기에 잘 사용하진 않음

...


💨Position CSS

static을 준 곳에 top이랑 left 지정해줘도 위치 변하지 않음( 임의로 바꿀 수❌ )

'자기 자신을 기준'으로 움직이는 걸 볼 수 있음

absolute는 부모에 아무런 포지션을 안 줘서 최상단 기준으로 움직임

만약, div 여기다 relative 줬다면 부모인 div 기준으로 움직일거임

fixed는 그 자리에 고정되면서 스크롤을 따라다님

첨에 상태는 static이다가 스크롤 할 때 되면 그때는 fixed가 되는 것
🤩 sticky➡static➕fixed


🔍Z-index

앞과 뒤에 나타나는 요소를 결정

  • z-index 더 높은 요소는 더 낮은 요소 앞에 나타남 ( ➖음수 가능⭕ )
  • 기본 값 0
  • 순서 값 없을 경우 코드상 순서에 따라 쌓임
  • position: static; 스타일 가진 요소는 항상 뒤에 나타남( z-index 효과❌ )
  • z-index 같거나 두 요소가 position: static이면
    코드에서 나중에 작성된 요소가 앞으로
    나타남
  • 부모에게 z-index 줄 경우 부모끼리 먼저 순위 정한 뒤 자식이 적용
    즉, 자식이 아무리 높다 하여도 부모가 낮으면 위로 올라올 수 없음
  • z-index➡position 속성 지정하고 z-index 속성 지정해야함

DIV #5는 포지션 안 줬음
👉 z-index 가장 높게 8 줬는데도 맨 뒤에 있는걸 볼 수 있음

DIV #1은 absolute 포지션 줘서 다음으로 높은 5로 지정했으므로 맨 앞으로 나온거임


🔮Media Query

751px 보다 크고 999px 보다 작을 때

✍기본 문법


🎨CSS 적용 우선순위


🖱스크롤바 스타일링


💼Viewport 메타 태그

1.0이면 현재 디바이스 100%에 맞게 body에 있는 텍스트들이 들어간다는 것

2.0으로 하면 침범한 걸 볼 수 있음( 기계 사이즈의 두 배로 커진 것 )


🪁Media Query Range

min -width: 600px➡600이상 크기일 때 적용되는건데 헷갈리니까
밑에 처럼 써도 됨( 훨씬 알아보기 쉬워짐👏 )

👉 width가 400px 이상이면서 1000px 이하일 때


🎈Container Query

media query➡일반적으로 viewport의 너비를 기준으로 적용
conatainer query➡viewport 대신 영역을 감싼 container를 기준으로 적용

컨테이너 크기에 따라 스타일링을 다르게 줄 수 있는거임


🔍Dialog Element

open 이라는 속성을 안 주면 dialog가 보이지 않음

어떠한 버튼을 눌렀을 때 dialog가 나올 수 있게 구현할거임

버튼을 눌렀을 때니까 누르는 요소에 접근을 해줘야함

button1 non-modal dialog 열기
버튼을 클릭했을 때 어떤걸 해주고 싶으면 이 안에 작성해주면 됨

dialog.show( ) 하니까 non-modal dialog 열기
버튼 클릭 시 모달창이 나오는 걸 볼 수 있음

::backdrop➡모달(dialog)의 뒷배경을 스타일링할 때 쓰는 가상 요소❗

여기서 외부 클릭했을 때 모달창이 닫아지게 하고 싶으면❓
현재는 Cancel 버튼을 눌러야 모달창 닫아짐

이코드 집어넣으면 됨 🆗


🎡반응형 이미지 최적화 하기

width: 100vw;➡veiwport(화면) 너비 전체 차지한다는 뜻

화면이 큰 사이즈 일 땐 이 이미지를 사용하는게 좋겠지만

브라우저 사이즈가 이정도일 때
혹은 모바일 화면일 때 이렇게 큰 이미지가 필요할까❓

작은 화면일 땐 굳이 큰 이미지를 보여줄 필요없음🙅‍♀️
왜냐, 큰 이미지 가져오기 위해서 로드 하는 시간 오래걸림(이미지 사이지 빅빅)⌚
이럴 때 사용하는 속성➡srcset 사용하면 됨🔥

srcset

✅ w 유닛 : srcset에서 이미지의 실제 너비(px)를 나타내는
단위처럼 쓰이는 값 (예: 400w = 400px 너비 이미지)

✅ 브라우저가 알아서 이미지 선택하는 이유 : 브라우저가 디바이스 해상도,
화면 크기, sizes 값을 보고 가장 적절한 이미지를 자동으로 골라서 보여줌
(데이터 절약 + 선명함 유지!)

sizes 넣어줘야 올바르게 가져와짐✔


📸picture

600px 이하일 땐 2.jpg 이미지가 보이고 아닐 땐 1.jpg 이미지가 보이게 함

img에서 srcset & picture 어떤 차이일까❓


:is( ) 가상클래스

셀렉터를 그룹화할 때 간단하게 처리할 수 있게 해줌

이럴 때 사용하는 것( 잘 안 씀 )


:has( ) 가상클래스

:hover 및 :focus와 유사한 가상클래스지만
:is 및 :not 가상 클래스와도 매우 유사하게 작동

:has 선택자 사용하려면 상위 요소에 적용될 :has 선택자에
선택자( 또는 선택자 목록 )를 전달해야 함

heading 클래스에서 subtitle 클래스를 가지고(has) 있으므로
color: lightblue; 색상이 적용이 됨

첫번째는 body 안에 p와 h1이 둘 중 하나라도 있으면 적용됨
두번째는 p와 h1이 모두 있어야 적용됨

✅ HTML input type="email"에서 이메일 형식이 아니면 → invalid 상태가 됨

👉 outline: 4px solid red;랑 border: 2px solid red;가 적용 되는 것

div 안에 있는 input이 invalid 이면 label 색상을 crimson으로 변경 됨

label 뒤에 input이 있는거니까 ➕ 사용한거임
input이 invalid 이면 label 앞에(before) ❌(공백) 색상 crimson으로 해주겠다는 것


🐱‍💻 inline vs inline-block vs block


🥊 initial vs inherit vs unset vs revert

initial은 실제 원래 속성 값
div에 display: initial; 속성 주니까 블록으로 됐던게 inline으로 변경되었음
👉 이유 : initial의 실제 기본 값은 inline 이었기 때문❗

display 속성의 기본 값➡block❌ inline
첨에 block으로 된 건 '브라우저의 기본 값'을 사용하기 때문임✔
👉 브라우저 기본 값을 실제 원래 속성 값으로 변경 해주기 위해 initial을 쓴 것🔥

inherit은 👩‍🦱부모로부터 값을 상속받는 것
div에 font-size: 3rem을 줬는데 p에도 같이 적용된 것을 볼 수 있음
👉 font-size는 inherited가 기본적으로 yes이기에 상속 받아와 3rem 똑같이 적용😯

border 같은 경우엔 inherited가 no여서 상속 안 받아져서 p에 border가 적용❌

unset은 inherited가 yes인 경우랑 no인 경우로 나뉨
👉 yes(상속⭕)일 땐 inherit으로 처리하고,
no(상속❌)일 땐 initial(브라우저 기본 값)로 처리

profile
안녕하세요! 퍼블리싱 & 프론트엔드 개발 공부 블로그 입니다!

0개의 댓글