Super Kawaii Cute Cat Kaoani
본문 바로가기
🖥 Front-end/HTML| CSS

css 핵심 개념 정리

by wonee1 2024. 6. 12.
728x90

* 코드잇 css 핵심 개념을 보고 정리한 글입니다 

 

 

📌 css 핵심 개념 정리

 

 

 

<기본 개념>

 

css 규칙 

 

선택자 {
  속성: 속성값;
  속성: 속성값;
}

 

 

 

css 선택자 

 

규칙에서 요소를 선택하는 데 사용하는 부분 

 

 

• 태그 이름

 

h3 {
  font-size: 24px;
}

 

 

• 아이디(id)

 

#을 붙여서 사용한다

아이디는 한 페이지 안에서 중복으로 쓰면 안된다 

 

<h3>우도</h3>
<h3 id="hallasan">한라산 국립공원</h3>
<h3>성산 일출봉</h3>
<h3>군산 오름</h3>


#hallasan {
  color: #f56513;
}

 

 

• 클래스(class)

 

아이디는 여러 개의 요소에 중복해서 쓸 수 없기 때문에 클래스를 사용한다.

맨 앞에 마침표를 붙여서 .클래스이름 과 같은 문법으로 사용한다 

 

<h3 class="place">우도</h3>
<h3 class="place" id="hallasan">한라산 국립공원</h3>
<h3 class="place">성산 일출봉</h3>
<h3 class="place">군산 오름</h3>


.place {
  font-size: 16px;
  font-weight: 400;
}

 

 

색상 단위 

 

색상 코드

#FFFF00

 

RGB 

빨강,초록,파랑 순

rgb(255, 255, 0)

 

RGBA 

불투명도를 추가한 코드  1에 가까울수록 불투명해짐 

rgba(255, 255, 0, 0.5)

 

 

• 크기

 

절대적인 크기 단위: 픽셸(px)

상대적인 크기 단위: 퍼센트(%), em, rem 

 

퍼센트

-> 부모태그의 크기에 상대적으로 지정할 태 사용 

 

em

-> 부모태그 글자크기 기준 

 

rem

-> 최상위태그 글자크기 기준 

 

 

• 기본 코드 

 

글자 색 color

 

글자 크기 font-size

 

글꼴 font-family

 

글자 굵기 font-wegiht

 

줄 높이 line-height

 

텍스트 꾸미기 text-decoration 

 

* 텍스트에 밑줄을 넣거나 취소선을 넣거나 하는데 사용하는 속성 

 

 


<추가적인 css 속성>

 

• 배경 이미지 background-image

 

url(...)이라는 문법으로 배경 이미지를 넣는다 

 

background-image: url('flowers.png');

 

 

배경 이미지는 여러 개 넣을 수 있다

a,png아래에 b.png가 깔리고 맨 밑에 c.png가 깔린다 

background-image:
  url('a.png'), /* 제일 위에 보이는 이미지 */
  url('b.png'),
  url('c.png');

 

 

• 배경의 반복 background-repeat

 

기본값은 repeat이고 no-repeat으로 하면 반복되지 않게 할 수 있다 

 

background-repeat: repeat; /* 반복하기 (지정하지 않았을 때 기본값) */
background-repeat: no-repeat; /* 반복 안 함 */

 

 

배경의 크기 background-size

 

직접 가로 세로 크기를 정할 수 있고 비율을 유지하면서 영역에 꽉 차게(cover)하거나, 영역 안에서 최대한 크게(contain)할

수도 있다

 

background-size: cover; /* 비율 유지하면서 꽉 차게. 이미지 잘릴 수 있음 */
background-size: contain; /* 비율 유지하면서 최대한 크게. 이미지 잘리지 않음 */
background-size: 40px 30px; /* 가로 40px 세로 30px */

 

 

그라디언트 linear-gradient()

 

기본적으로 시작 색상과 종료 색상으로 사용할 수 있다 

 

 background-image: linear-gradient(#000000, #ffffff);

 

기본 방향의 각도는 180도(위에서 아래로 내려오는 방향)

각도를 바꾸고 싶으면 맨 앞에다가 각도를 써주면 된다 (단위는 deg)

 

background-image:
linear-gradient(45deg, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.2));

 

 

그림자 box-shadow

 

가로,세로 위치, 흐린 정도(Blur), 퍼지는 정도(Spread) 색상의 순서로 쓴다 

box-shadow: 5px 10px 15px 8px rgba(0, 0, 0, 0.6);
/*
  가로: 5px
  세로: 10px
  흐린 정도(Blur): 15px
  퍼지는 정도(Spread): 8px
  색상: rgba(0, 0, 0, 0.6)
*/

 

 

• 불투명도 opacity 

 

요소 전체의 불투명도를 조절할 때 사용한다

opacity: 0; /* 투명 */
opacity: 0.6;
opacity: 1; /* 불투명 */

 

 

📌gradient랑 box shadow는 코드를 만들어주는 사이트가 따로 있음 

 

https://cssgradient.io/

 

CSS Gradient — Generator, Maker, and Background

As a free css gradient generator tool, this website lets you create a colorful gradient background for your website, blog, or social media profile.

cssgradient.io

https://cssgenerator.org/box-shadow-css-generator.html

 

Box Shadow CSS Generator

A box-shadow CSS Generator tool to quickly generate box-shadow CSS declarations.

cssgenerator.org

 


 

< 박스 모델 >

 

 

밖에서부터 차례대로 바깥 여백 마진, 테두리인 보더, 테두리와 실제 내용사이의 여백인 패딩, 실제 내용이 들어있는 콘테트 박스로 이루어져있다

 

 

• border 속성

 

주로 굵기 , 테두리  종류, 색상 순서로 쓴다 

 

border: 2px solid #ededed;

 

 

• border-radius 속성

 

박스 모델의 모서리를 둥글게 만들 때 사용한다

 

9999px로 하면 알약모양이 되고 50%로 하면 타원이된다

border-radius: 16px;

 

 

• box-sizing 속성

 

테투리까지 합친 영역의 크기를 구하고 싶으면 border-box를 사용하면 된다 

 

#box {
  margin: 20px;
  padding: 30px;
  width: 100px;
  box-sizing: border-box;
}

 

 

• overflow 속성

 

박스의 크기보다 내용이 많아서 넘칠 때 설정한다

 

hidden: 넘친 내용을 감춘다

auto: 넘치면 스크롤하게 만든다

scroll: 항상 스크롤 하게 만든다 

 

 


 

<Display>

 

 

 

 

• block

<h1..6>, <p> ,<div>

위에서부터 아래로 배치됨

너비와 높이를 지정할 수 있다

 

 

 

inline

<a>,<span>

평소에 글 쓰는 방향 

화면에 꽉 차면 다음 줄로 넘어감

너비나 높이를 지정할 수 없음

(예외적으로 <img>같은 건 가능)

여백은 가로로(글 쓰는 방향)만 가능 

 

 inline-block 

인라인처럼 배치되지만 블록처럼 크기를 가지고 싶을 때 사용하는 display 속성

 

 

 

float 

요소를 왼쪽이나 오른쪽에 삽화처럼 배치하고 그 주변을 인라인 요소들로 배치할 수 있다 

 

 

 

블록 ,인라인 블록, 인라인 비교 

 

  블록  인라인 블록  인라인
기본 크기  좌우로 꽉 참  콘텐트에 딱 맞게  콘텐트에 딱 맞게
배치  위에서 아래로  글 쓰는 방향 글 쓰는 방향 
width와 height x
margin과 padding 인라인 진행 방향(=가로)만 제대로 사용 가능 

 

 

 


 

<선택자> 

 

CSS 선택자

 

CSS 규칙에서 맨 앞에 적어주는 걸 CSS 선택자라고 부른다

선택자를 사용해서 이 규칙을 어떤 요소들에 적용할 지 선택할 수 있다 

선택자 {
  선언;
  선언;
  선언;
}

 

 

 

선택자 목록 

 

콤마로 선택자를 연결하면 여러 선택자에 같은 규칙을 적용할 수 있다 

 

선택자1,
선택자2 {
  ...
}

 

 

 

선택자 붙여쓰기 

 

여러 조건을 동시에 만족하는 요소를 선택하고 싶을 땐 선택자를 붙여서 사용한다 

 

 

• 아이디+클래스 

#mongolia.title

 

 

• 클래스+클래스 

.large.title

 

 

• 태그+아이디+클래스

h2#mongolia.large.title

 

 

 

자식 결합자 

 

오른쪽 꺾쇠 > 로 선택자를 이어준다 

 

 

.article > img {
  width: 100%;
}

 

 

자손 결합자

 

스페이스로 선택자를 이어준다 

 

.article img {
  width: 100%;
}

 

 

 

 

가상 클래스 

 

:hover (마우스 올렸을 때)

:active(클릭한 상태)

:visited(방문한 적이 있는 링크)

:focus(포커싱 됐을 때)

 

 

a {
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

 

 

 

전체 선택자

* 로 모든 요소를 선택할 수 있다 

* {
  box-sizing: border-box;
}

 

 

n번째 자식선택자 

 

:nth-child()를 사용한다 

(1부터 시작한다) 

 

.gallery :nth-child(3) { ... } 
.gallery :nth-child(even) { ... }
.gallery :nth-child(2n) { ... }
.gallery :nth-child(odd) { ... }
.gallery :nth-child(2n+1) { ... }

.gallery :first-child { ... }
.gallery :last-child { ... }

 

 

 

 

모든 곳에서 border-box를 쓰고 싶을 때 

박스 모델의 크기는 기본적으로 content-box를 기준으로 정해지나 모든 요소의 크기를 테두리(border-box)를 기준으로 하고 싶을 때 * 선택자를 사용한다 

 

* {
  box-sizing: border-box;
}

 

 

클래스를 넣어 줄 태그가 너무 많을 때

 

자손 조합자는 적용해야할 태그가 많아서 일일이 적용하기 어려울 때 사용하면 좋다 

 

 

<div class="info">
  부엉이는
  <a href="/wiki/%EC%98%AC%EB%B9%BC%EB%AF%B8%EB%AA%A9" title="올빼미목">올빼미목</a>
  <a href="/wiki/%EC%98%AC%EB%B9%BC%EB%AF%B8%EA%B3%BC" title="올빼미과">올빼미과</a>의
  <a href="/wiki/%ED%95%9C%EA%B5%AD" title="한국">한국</a>에 서식하는
  <a href="/wiki/%EB%A7%B9%EA%B8%88%EB%A5%98" title="맹금류">맹금류</a> 중
  <a href="/wiki/%EC%86%94%EB%B6%80%EC%97%89%EC%9D%B4" title="솔부엉이">솔부엉이</a>,
  <a href="/wiki/%EC%88%98%EB%A6%AC%EB%B6%80%EC%97%89%EC%9D%B4" title="수리부엉이">수리부엉이</a>,
  <a href="/wiki/%EC%B9%A1%EB%B6%80%EC%97%89%EC%9D%B4" title="칡부엉이">칡부엉이</a>,
  <a href="/wiki/%EC%87%A0%EB%B6%80%EC%97%89%EC%9D%B4" title="쇠부엉이">쇠부엉이</a> 등을 통틀어 이르는 통칭이다.
  <a href="/wiki/%EA%B7%80%EA%B9%83" title="귀깃">귀깃</a>(우각)의 차이로
  <a href="/wiki/%EC%98%AC%EB%B9%BC%EB%AF%B8" title="올빼미">올빼미</a>와
  구분한다고도 하지만 솔부엉이와 쇠부엉이는 귀깃이 없기 때문에 이는 정확한 구분법은 아니다.
  주로 밤에 활동하는 야행성이다.
</div>
.info a {
  color: #379379;
  text-decoration: none;
}

 

 

가로 마진을 일정하게 하고 싶을 때 

세로 마진은 겹친다 (가로 마진은 안 겹친다)

 

chip과 chip사이에 일정하게 가로 마진을 주고 싶다면 margin-right 와 margin-left를 활용하면 된다 

 

<span class="chip">섬</span>
<span class="chip">해변</span>
<span class="chip">오두막</span>

 

.chip {
  background-color: #dedede;
  text-align: center;
  display: inline-block;
  width: 100px;
  padding: 16px;
  margin-right: 24px;
  border-radius: 9999px;
}

.chip:first-child {
  margin-left: 24px;
}

 

 

 

 

 

 


 

 

<스타일 계산하기 > 

 

캐스케이드(Casecade)

 

  최종적으로 적용할 css 속성들을 결정할 때 계단식 폭포처럼 css 규칙을 순서에 따라 합쳐서 적용하는 것을 말함

  우선순위가 높은 규칙일 수록 우선적으로 속성을 적용 

•  브라우저에서 기본으로 제공하는 스타일시트는 똑같은 선택자를 쓰고 있다면 직접 작성한 코드보다 우선순위가 낮다 

 

코드 상의 순서

  코드에서 아래 쪽에 쓴 코드일 수록 우선순위가 높다 

 

 

명시도 

선택자마다 명시도 점수가 있다

아이디 개수, 클래스 개수, 태그 개수를 적어서 점수를 비교 

 

a.order { /* 아이디 0, 클래스 1, 태그 1 = 명시도 0 1 1 */
  ...
}

a#info { /* 아이디 1, 클래스 0, 태그 1 = 명시도 1 0 1 */
  ...
}

 

 

상속 

부모 태그에 적용된 CSS 규칙은 자손에게도 상속된다 (다만 모든 속성이 상속 되는 것은 아니다) 

 

a.order { /* 아이디 0, 클래스 1, 태그 1 = 명시도 0 1 1 */
  ...
}

a#info { /* 아이디 1, 클래스 0, 태그 1 = 명시도 1 0 1 */
  ...
}

 

 

상속된 속성의 우선순위 

가까운 조상에게 물려받은 속성일 수록 우선순위가 높다 

<body>
    <div id="info">
      <p class="description">
        ...<a class="order" ...>주문</a>
      </p>
    </div>
</body>
body {
  color: #000000;
}

#info {
  color: #aaaaaa;
}

.description {
  color: #bbbbbb;
}

.order {
  color: #cccccc;
}

 

a.order 태그에 적용되는 속성들은 캐스케이딩의 우선순위가 높은 순으로 나열

.order {
  color: #cccccc;
}


/* p.description 태그(부모 태그)에서 상속받은 속성 */
{
  color: #bbbbbb;
}

/* div#info 태그(조부모 태그)에서 상속받은 속성 */
{
  color: #aaaaaa;
}

/* body 태그(증조부모 태그)에서 상속받은 속성 */
{
  color: #000000;
}

 

 

 

 

728x90

'🖥 Front-end > HTML| CSS' 카테고리의 다른 글

웹프로그래밍 과제  (0) 2023.02.26