본문 바로가기
Udemy - The web developer camp

CSS

by Hanachoi 2022. 6. 29.

#스타일을 설정하는 법

  • Inline styles : You can write your styles directly inline on each element. but this is NOT a good idea most of the time.인라인 스타일을 일일히 입히려면 모든 태그에 복사를 해서 입혀줘야되기 때문.
  • The <STYLE> element. : you can write your styles inside of a <style> element. This is easy, but it makes it impossible to share styles between documents. NOT RECOMMANDED either.
  • External stylesheet : write your styles in a .css file and then include the using a <link> in the head of your html document. Recommnaded.  <link> element를 이용해서 시트를 각각연결해준다.  attribute로 href =" "부분에 연결할 시트를 적어준다. rel은 딱히 필요한 요소는 아님. <link>는 언제나 <head>로 들어가야 한다. 
<link rel = "stylesheet" href = "my_styles.css">

#색 및 배경색 속성

  • .css 파일을 만들었으면 이제 그 파일에서 스타일을 정할 수 있음.
  • 만약 <h2>태그가 걸린 모든 부분을 바꾸고 싶다면,  h2{}를 만들고 그 안에 바꾸고 싶은 속성들을 넣어주면 된다. 
h2{
	color : green;
}
  • background-color를 설정하면 배경색을 바꿀 수 있음.
  • <h2>같은 태그는 블록태그라서 전체영역을 차지한다. 

  • backgorund-color대신 background만 써서 배경을 바꿀수도 있다. 하지만 background는 엄연히 다르게 작동하는 것! 

 

#RGB와 알려진 색상

  • css에서 정해진 색은 140가지정도 됨. 
  • RGB를 바탕으로 색이 구성되는 것임. 
  • Each channel ranges from 0 to 255
  • rgb를 순서대로 작성 후 그 안에 세가지 채널 RGB를 차례대로 표시한다. 괄호 안에는 순서대로 red, green, blue로 표시된다. 
rgb(255,0,0)
rgb(0,0,255)
rgb(173,20,219) //여러가지 색의 배합이 있는 경우에는 온라인색 선택기나 컬러팔레트에서 찾아야함
rgb(0,0,0)

 

#16진법

  • 16진법을 이용해서 컬러를 표시할수도 있음. hex 컬러라고 부름. 
  • Hex : still red, green and blue channles. Each ragnes from 0 - 255 BUT represented with hexadecimal(16진법)
  • 0~9까지의 숫자와 A, B, C, D, E, F 까지 알파벳을 사용한다. 
  • 가장큰 16진법 숫자는 15인 F 이다. 
  • 이렇게 hexadecimal 컬러를 사용하는 이유는 좀 더 짜임새 있는 색상명과 색상 차트를 만들기 위해서다. 
  • #ffff00 이라는 컬러를 보자. 16진법을 이용할때는 #표시는 꼭 앞에 나와야 한다. 두글자씩 순서대로 red, gree, blue인것이다. 지금 red와 green은 모두 f로 작성되어 있으니까 최고치이고, blue는 최소인 0인 것
  • #0f5679 라는 컬러는 어두운 청록색을 띄는 컬러. 
  • rgb보다 hex컬러 체계를 더 많이 사용함. 
  • 각각의 red, green, blue 컬러의 숫자가 동일하게 들어간다면 하나씩만 써도 작동한다. ex) #000000 -> #000 으로 써도 동일한 효과 / #33cc00 -> #3c0으로 써도 동일한 효과가 나타난다. 

 

#일반 텍스트 속성

  • text-align : 텍스트의 위치를 정할 수 있음 // center , right, left 등으로 값을 주면 됨. text-align으로 텍스트의 위치를 바꿀 수는 없다. 이 태그는 h1이 내용의 한도 내에서만 작용한다. 
  • width : 요소의 너비를 지정할 수 있음. length / percentage / 키워드 / 전역값 으로 설정 가능.  
  • font-weight : 폰트의 굵기를 설정하는 태그. 키워드/ 숫자로 설정할수 있다. 보통 400정도면 normal , 700정도면 bold 정도로 폰트 굵기가 정해진다. 하지만 모든 폰트의 굵기조절이 가능한 것은 아니다.  그럼 브라우저는 가장 비슷한 크기의 폰트로 설정을 알아서 함. 
  • text-decoration : 텍스트 주위로 선을 그을 수 있음 underline / overline/ line-through(가운데 긋기)로 설정이 됨. 색을 넣으면 같이 색도 바꿀 수 있다. hex컬러로도 설정 가능함. 
  • 폰트스타일도 설정 가능함. wavy / solid/ double line etc. 합쳐서 한줄에 써도 되고 text-decoration-style : 을 넣어서 여기에서 설정도 가능하다. 
  • line-height : 줄 간격 설정 가능. 텍스트이 크기나 폰트는 건드리지 않고 줄 간격만 조절한다. 마우스로 하이라이트를 쳐보면 하이라이트의 간격도 동일하게 넓어지거나 좁아지는걸 볼 수 있다.  
 text-decoration : blue overline;
  • letter-spacing : 글자간 간격 설정 

# 픽셀로 글꼴 크기 지정하기 

  • px로 글꼴크기를 지정하는건 가장 흔한 방법이다. 1px does not necessarily equal the width of exactly one pixel! Not recommanded for responsive websites.

#글꼴집합

  • 폰트는 해당 운영체제에 따라 지원이 안되는 경우도 있고 흔하게 사용되는 경우도 있다. 해당 폰트가 지원되지 않는다고 해서 글이 안뜨는건 아니지만, 그냥 다른 기본 글씨체로 뜨는 경우가 생긴다.
  • font-family 를 사용해서 폰트를 설정해줄 수 있음. 폰트는 여러가지를 , 로 넣어줄수가 있다. 첫번째 폰트가 없다면 다음 폰트로 설정되도록 만들어 주는 것. [font-family : arial, verdana]  보통 백업폰트로 2-3개를 더 넣어준다. 항상 제네릭 대체 폰트로 타입을 지정해서 백업을 넣는게 좋다. 
  • 아니면 이미 지정되어있는 font-family의 이름을 넣어주면 그 안에 들어있는 폰트중에서 브라우저가 알아서 하나 정해서 설정을 해줄 수 도 있다. 

 

#CSS Selectors(★★★★★)

  • Css rules : everything you do in css follows this basic pattern
selector {
	property: value; 
}
  • Universal Selector : select everything ! 모든 요소를 선택해서 동일한 스타일을 입힐 수 있다. 하지만 크기가 큰 문서에서는 사용하는게 그닥 좋진 않고,  이것 말고도 다른 방법으로 스타일을 설정할 수 있기때문에 추천되진 않는다. 
*{
	color : black;
}
  • Element selector  : 지정된 타입의 모든 항목을 선택한다. 아래처럼 같은 태그들은 모두 동일한 스타일을 적용시켜 준다. 
img{
	width : 50%;
}

button{
	color : red;
}
  • Selector list : select all h1's and h2's. 콤마로 연결해서 해당 태그들을 같은 스타일을 입힌다. 
h1,h2{
	color : magenta;
}
  • ID selector : select the element with id of 'longout'. id 값은 html 파일에서 중복되지 않게 한 요소만 딱 찝어서 쓸 수 있는 요소다. 만약에 버튼이 많이 있지만 로그아웃 버튼만 다르게 스타일링하고 싶다면, id값을 설정해 id 값으로 스타일을 정하면 된다. 
#logout{    //id 값을 부를때는 #를 붙여서 불러야함 
	color : orange;
    height : 200px;
}
  • id 값을 설정할때는 되도록이면 짧으면서 의미가 담긴게 좋다. 그리고 한 id 값은 꼭 페이지 내에서 한번 만 나와야 한다! 
  • 하지만 id 값도 한페이지에 너무 많이 나오는건 좋지 않다. 한 페이지에 10개 이내로 사용하는게 좋음. 

https://coolors.co/palettes/trending

  • 컬러조합 볼 수 있는 사이트
 

Trending Color Palettes - Coolors

Get inspired by thousands of beautiful color schemes and make something cool!

coolors.co

  • class selector : Select elements with class of 'complete' class는 같은 이름을 여러번 쓸 수 있음. id보다 class를 쓰는 경우가 더 많이 생길 것. 
.class{ //class를 부를때는 .을 찍어야한다
	color : black;
}

 

#자손선택자

  • Descendant selector : select all <a>'s that are nested inside an <li>
  • ,콤마로 연결하게 되면 <li>, <a> 이렇게 두개를 선택하는 경우가 되는거지만, <li>에 종속되어 있는 <a>태그를 고르려면 꼭 띄어쓰기로 연결을 해야한다. 
li a {  // space(띄어쓰기)가 매우 중요함!
	color : teal;
}
  • 큰 태그들을 연결연결 해서 자손을 선택하는 경우도 있지만, 그냥 영역별로 class를 줘서 그 class안에 있는 태그가 종속되도록 하는게 좋다
.post a{ //class를 준 뒤 그 안에 있는 <a>태그에 효과를 넣는다 
  color : #0081A7;
}

 

 

#인접선택자와 직계자손 선택자

  • Adjacent  selector : select only the paragraphs that are immediately preceded by an <h1>.  It is so called combinator.  얘는 부모자식관계라기보다 형제의 관계처럼 연결되는 선택자다. 
  • <h1>태그 다음에 오는 <p>태그의 스타일을 바꾸는 것이다. 
  • 만약 <h1> 태그 다음에 오는 <p>태그가 여러개라면 모두 동시에 적용된다. 
h1 + p{
	color : red;
}
  • Direct child : select only the <li>'s that are direct children of a <div>element. just one level down, not choose all <li>tags.  
div > li {
	color : white;
}
  <footer>
    <nav>
      <ul>
        <li><a href="">home</a></li>  // 얘네는 자식의 자식태그라 적용이 안됨
        <li><a href="">About</a></li>
        <li><a href="">contact</a></li>
        <li><a href="">puppies</a></li>
      </ul>
    </nav>
    <a href="">google.</a>  //footer태그안에 바로 나오는 자식태그라 해당됨
  </footer>

 

#속성 선택자

  • Attribute selector : Select all input elements where the type attribute is set to 'text'. 
  • <input>태그 중에서도 type별로 설정해서 스타일링할 수 있음. 
input[type="text"]{
	width : 300px;
    color : yellow;
}
section[class="post"]{
	backgorund-color : purple;
}
  • post라는 class가 있는 section만 고를 수도 있다 
section.post{
  background-color: #be95c4;
}
  • 특정단어가 들어간 태그만 골라서 스타일을 설정하거나 할수도 있음. 자주 쓰지는 않으니 필요하면 MDN 문서를 찾아보고 활용하자 

 

#유사클래스

  • Pseudo classes : keyword added to a selector that specifies a special state of the selected element(s).
  • 가상클래스는 선택자 끝에 붙여 상태를 특정하는 키워드다.  : 표시와 함께 사용한다. 
  • 가장 흔하게 볼 수 있는건 : hover  -> 얘를 적용하면 특정 태그위에 마우스를 올려놨을 때 스타일을 변하게 할 수 있다. 가장 많이 볼 수 있는건 <a>태그 위에 마우스를 얹으면 색이 변하거나, 선이 생기는경우! 
  • 아래처럼 코드를 작성해주면 마우스를 올렸을 때, 버튼 색은 파랑색, 글자는 흰색으로 바뀐다. 
button:hover{
  background-color : blue;
  color : white;
}
  • 좀 더 구체적으로 태그를 지정할 수도 있다. 특정 class가 들어있는 태그에 hover를 입히면 됨.
.post button:hover{  //post라는 class를 가진 버튼에 hover 적용
  background-color : blue;
  color : white;
}

 

 

  • :active -> 무언가가 현재 활성화 되어있도록 만드는 것.  마우스로 버튼을 클릭하고 띄기 전에 클릭한 상태에서의 스타일링이 가능하다. 
.post button:active{
  background-color: green;
}

 

  • 여러가지의 동일한 태그들이 있다고 할때, (ex) 트위터처럼 여러개의 트윗이 연달아 나오는 경우) n번째 순서에 해당하는 부분만 스타일링 가능. 
  • 그냥 3만 입력하면 3번째에 있는 애만 변하지만, 3n으로 작성해주면 3의 배수에 맞게 변경된다. 
.post:nth-of-type(3n) {
  background-color : greenyellow;
}

 

#유사요소

  • Pseudo elements : Keyword added to a selector that lets you style a particular part of selected element(s). 
  • pseudo class와는 다른 개념. 유사요소는 어떤 요소의 첫 줄의 첫 글자에만 스타일을 넣을 수 있는 식으로 작동함. 
  • MDN페이지에서 pseudo elements를 검색해보면 flask 모양이 있는 애들이 있따. 시험용이라는 뜻으로, 개발코드로 사용하지 말라고 알려주는 것.
  • 또 MDN문서에는 세미콜론을 두개쓰라고 되어있지만, 사실 한개만 써도 작동함. (크롬에서는.. 다른 브라우저는 한번 확인해봐야함 )
  • : first-letter : 모든 단락이나 모든 스팬의 첫 글자를 선택할 수 있는 것. 
h2:first-letter{
  font-size: 50px;
}
  • :first-line : 첫 줄 전체를 스타일링 할 수 있음
p::first-line{
  color: purple;
}
  • : selection : 마우스로 선택을 했을 때 부분을 스타일링 할 수 있음
p::selection{
  background-color: yellow;
}
  • 문서 전체에 스타일을 적용하고 싶으면 유사요소만 넣으면 됨
::selection{
  background-color: yellow;
}

 

#계단식 CSS

  • The cascade : The order your styles are declared in and linked to matters !
  • 최상단에서 흐른 물이 아래로 흘러가듯이, CSS에서는 선언된 순서가 중요함. css 파일 가장 하단에 선언된 스타일이 브라우저에 반영된다.
  • 만약 <link>에 걸려있는 css 파일이 두 개라면, 더 밑에 걸려있는 css파일의 스타일이 우선 적용됨. 

 

#우선순위 CSS

  • What happens when conflicting styles target the same elements?  Here specificity comes out
  • Specificity : Specificity is how the browser decides which rules to apply when multiple rules could apply to the same element. 
  • 여러개의 css 스타일이 쓰여진다면, 브라우저는 더 구체적인 선택자를 우선적으로 적용한다. 
p{
	color: yellow;
}

section p{
	color : teal;
}

// 아래에 적힌 코드가 더 구체적으로 section의 p를 선택하라고 되어 있다. 이 상황에선 더 구체적은 아래의 코드가 적용된다
  • Id > class > element 순으로 specificity가 정해진다. 어떤 클래스 보다도 id가 제일 구체적인 것.
  • https://specificity.keegan.st/ 를 통해서 특이도를 계산해 볼 수 있다.
  • 이건 충돌하는 요소가 있을때만 우선순위가 적용된다, 만약 두 태그 모두 백그라운드 컬러를 바꾼다면 우선순위를 따져서 더 우위에 있는 애가 적용될 것이고, 하나는 폰트컬러를 바꾸지만, 다른건 폰트컬러를 건드리지 않는다면 폰트컬러는 우선순위와 상관없이 그대로 적용된다. 

 

#인라인 스타일과 중요도(얘네는 쓰지 말자)

  • id 값이 가장 우위에 있는 값이라고 배웠지만, 사실 가장 우위에 올라가는건 인라인 스타일이다. 
  • 인라인 스타일은 html 파일에서 바로 스타일을 입히는 것
<button style="color:coral">+view</button>
  • 이런 인라인 스타일은 안쓰는게 가장 좋음. css파일과 분리되어 있기 때문에 혼란을 일으키기 쉽다.
  •  !important : 얘를 코드 뒤에 써주면 모든 우선순위는 다 사라지고 얘가 제일 첫번째 우선순위에 들어가게 된다. 
::selection{
  background-color: yellow !important;
}

 

 

#상속 CSS

  • 태그가 여러개 중첩되어 있을 때, 상위태그에만 css 스타일링이 적용되어 있다면 그 스타일 요소가 상속되어서 안에 종속되어 있는 태그에도 스타일이 적용될 수 있다. 
  • 개발자도구로 inspect해보면 상속되어 있는걸 찾을 수 있음 .
  • 하지만 몇가지 요소들은 상속을 받지 않는게 디폴트로 되어있는 경우도 있다.
  • 상속받지 못한 요소에도 상속을 받게 만들고 싶다면, inherit로 상속시켜 줄 수 있다. 
button{
	color : inherit;
}
  • 하지만 모든 요소가 상속을 받을 수 있는건 아님. MDN문서를 보면 inherited 부분에서 상속여부를 확인할 수 있음. 

'Udemy - The web developer camp' 카테고리의 다른 글

JavaScript  (0) 2022.07.30
가격표만들기  (0) 2022.07.26
css 3 (flexbox)  (0) 2022.07.21
CSS 2  (0) 2022.07.08
HTML  (0) 2022.06.19

댓글