CSS기초│인라인스타일/내부스타일/외부스타일, 선택자

정(JJeong)·2022년 9월 8일
0
post-custom-banner

해당 글은 제가 예전에 다른 블로그에서 작성했던 글을 옮겨온 것입니다.
원문은 21.12.20 작성되었습니다.



CSS란? Cascading Style Sheet

CSS란 html을 통해 작성된 콘텐츠 내용에 색상, 폰트, 크기, 정렬방식, 테두리 등과 같은 스타일을 부여할 수 있는 코드들을 말한다.

또한 이러한 CSS의 적용방식에 따라 디자인과 콘텐츠 내용을 분리 시킬 수 있다는 장점이 있다.

CSS의 적용방식은 크게 세가지로 나뉘는데 아래 예시를 통해 살펴볼 것이다.
그리고 특정 태그만을 지정하여 스타일을 줄 수 있도록 만들어주는 선택자 기능에 대해서도 다뤄볼 것이다.

📌 CSS3 모듈이란?

CSS2의 기존 규약에 새로이 추가한게 " CSS3 "

  • CSS3는 CSS2가 이미 스타일 규약 크기가 크기 때문에 한번에 업데이트가 어려워서 스타일 기능별로 별도 규약을 만들고 있음
  • CSS3는 아직 개발이 계속 진행 중이기 때문에 표준모듈로 정해지지 않은 것도 있음
  • 표준이 아닌 모듈은 브라우저에 따라 다른 방식으로 지원됨 → 때문에 속성 이름 앞에 접두사(prefix)를 붙여 지원하는 브라우저를 구분함
  • 표준모듈이 완성되어도 사용자를 고려하기 위해 접두사를 붙이기도 함

css모듈


📌 CSS 스타일 작업방식

▶ 작업방식

  1. 인라인스타일: html태그 안에 직접 입력하는 방식
  2. 내부스타일: <style>태그 안에 작성하는 방식
  3. 외부스타일: 실무에서 사용되는 방식으로 별도의 파일을 따로 들어 분리시키는 방식

예시를 통해 살펴보기

1. 인라인스타일

인라인 스타일<body>안에 작성되는 '태그 안'에 CSS코드를 작성하게 되는 방식이다.

아래의 sheet에서 볼 수 있는 방식으로, <태그 이름 style="width: 너비값, height: 높이값"> 과 같이 작성한다.

인라인스타일

※ 윗 내용의 간단 풀이

  • 제목박스크기, 배경색설정, 글자 가운데정렬, 글자라인 높이 설정
  • 링크의 글자색상설정, 밑줄제거, 폰트크기 설정, 글자간격 설정

2. 내부스타일

내부 스타일

내부 스타일<head>태그 안에 style태그를 만들어 정리하는 방식으로써 html작성 sheet안에서 내부에 따로 공간을 구분해 CSS코드들만 모아둘 수 있다는 특징이 있다.

내부 스타일

내부스타일방식으로 {}안에 작성할 경우엔, 각 스타일 정보를 다 다른 줄로 정리해도 오류는 발생하지 않는다.

단, 하나의 스타일 타이핑은 한줄안에 이뤄져야하며, 각 스타일 정보는 세미콜론으로 구분되어야 한다.

내부 스타일

※ 인라인스타일과 내부스타일을 중복 작성할 경우 인라인스타일이 우선순위로 적용된다.

  • 대상과 가장 가까이 있는 스타일이 적용되는 것 때문에 내부스타일 안에서도 같은 스타일태그를 중복입력하면 대상과 가장 가까운 스타일의 값이 적용된다.
  • 이를 이해하면 내부스타일의 수정할 태그 부분을 찾기 어려울 때 급하면 인라인스타일을 적용시켜서 반영시킬 수 있다.

3. 외부스타일

외부 스타일 방식은 작성 방식은 내부스타일과 똑같이 작성되지만 <style>코드 안에 넣는 것이 아니라 css파일을 생성해서 그 안에 코드를 작성한 후, <link>태그를 이용해 html파일과 연결하는 방식을 취한다.

외부 스타일

  • 외부스타일 연결 코드는 link입력후 tab누르면 자동 입력
  • css파일을 따로 생성한 후 연결하고자 하는 css파일의 경로를 href=” ”안에 설명

※ 스타일 적용 우선순위: 내부스타일과 외부스타일 중 대상에 가까운 것이 우선적용
※ css태그는 무조건 js(javascript)태그보다 위에 있어야함

Cf) 스타일태그의 주석 단축키는 동일하지만 주석 코드는 / 태그 /이다.

태그의 스타일을 주석처리할 때 { }안의 정보만 주석처리 혹은 태그 통째로 해야 오류가 안 난다.


📌 태그의 선택자 지정

스타일을 개별적으로 특정지어 주기 위한 기능인 선택자 기능에 대해 알아보자.
이 기능을 이용하면 내가 부여한 선택자에게만 특정한 CSS코드를 줄 수 있다.

1. 지정선택자: id와 class

  • #id는 하나의 태그만 사용 가능, 중복 지정x
  • .class는 여러 개의 태그 중복 사용 가능

지정선택자

  • 여기서 id는 first와 second가 각각 가리키는 태그가 정해지고 중복으로 다른 태그를 같이 지정할 수 없다.
    - 또한 하나의 태그엔 하나의 id만 부여가능
  • class는 'pink'와 'brown'이 각각의 태그를 지정하기도 하지만, 'font30'이라는 class는 두개의 div태그를 모두 가르키고 있음
    → 즉, 하나의 class를 여러 개의 태그에 부여하는 것이 가능하고, 하나의 태그가 여러 class를 갖는 것이 가능하다(중복지정).

2. 전체선택자(*)와 그룹선택자(,)

전체선택자: * { }

  • 모든 태그에 적용할 수 있지만 우선순위는 가장 낮다.

그룹선택자: 쉼표(,) 사용

그룹선택자

  • h1과 p태그를 한번에 묶어서 적용

※참고: border의 경우 세가지 속성을 지님, 세미콜론이 아니라 띄어쓰기로 나눔

  • 선두께, 선모양, 색상

📌 선택자의 우선순위

지정 선택자를 사용할 때, 태그선택자보다 class선택자가 우선순위가 더 높다.
그리고 class보다는 id선택자가 더 높은 우선순위를 가진다.

∴ 우선순위: * < 태그 < .class < #id < 인라인 < !important

우선순위

  • P태그에 대한 내부스타일이 맨 아래에 있어서 대상에 가깝게 있지만, 실제로 반영되는 건 p태그보다 위에 있는 id스타일이 우선 적용됨.

→ 즉, green을 무시하고 각각 id스타일에 있는 blue와 red가 반영됨

우선순위


우선순위를 바꾸는 방법

내부스타일 태그 안에 !important를 입력하면 해당 태그의 스타일을 최우선 순위로 처리하게 된다.

우선순위

  • P태그 내부스타일의 우선순위가 id나 class보다 낮음에도 p태그의 내부스타일이 우선 적용됨

📌 부모/자식태그가 있을 시 규칙

  • 자식태그에 별도의 스타일 처리를 하지 않으면 부모태그의 스타일이 상속됨

css규칙

  • 이렇게 코딩을 하게 되면 a태그에 별도 설정하지 않은 속성들은 h1의 내부스타일을 따라 설정된다.
  • 폰트 크기의 경우 h1에 보이진 않지만 기본으로 설정된 사이즈가 32px이기 때문에 그대로 a태그에 적용됨
  • 만약 h1스타일 안에 color를 설정하면 마찬가지로 a태그에도 적용됨

→ 따라서 스타일 충돌이 생길 경우 우선순위에 따라 스타일이 적용된다.



잘못된 부분에 대한 지적은 얼마든지 환영입니다.
감사합니다.

profile
2년차 응애 FE 개발자입니다👶
post-custom-banner

0개의 댓글