html,css

CSS 기초 문법들

kimjy 2021. 12. 6. 10:52

CSS(Cascading Style Sheets)

  • CSS를 사용하면 HTML 태그에 디자인 적용이 가능.
  • 아래와 같이 3가지 스타일로 적용이 가능함
<h1 style="color: red;">CSS 적용</h1>
  • 빠르고 편함.
  • 그러나 스타일을 변경할 때마다 일일히 변경하여야 하기 때문에 추후 유지보수가 좋지 못함.
<style>
  h2 {
    color: #408090;
  }
</style>
  • html 파일 안에 style 태그를 추가하는 방법(주로 헤더에 하는 듯 함)
  • 이 방법 역시 여러 파일에 적용이 불가능하고, 이 때문에 유지보수에 적합하지 않음.
<link href="style.css" rel="stylesheet" type="text/css" />
  • html 파일과 css 파일을 따로 분리하여 작성하는 방법
  • css만 단독으로 변경이 가능하고 이를 통해 여러 html파일을 수정할 수 있으므로 유지보수에 편리
  • link: link태그로 사용할 css파일을 링크
  • href: href 속성에 css 파일 경로를 작성
  • type: link 태그로 연결되는 파일을 명시, css 파일은 항상 text/css
  • rel: HTML파일과 CSS파일의 관계를 설명, CSS파일은 항상 stylesheet를 작성

CSS 적용 방법

p{
  font-size: 12px;
}
  • p태그의 폰트 크기를 12픽셀로 변경하는 태그
  • 이를 통해 모든 태그에 일괄적으로 적용이 가능함
.className{
    font-size: 12px;
}
  • class 이름을 지정(className 클래스)하여 스타일을 변경
  • 이 때는 .을 붙여야 함
#idName{
  font-size: 12px;
}
  • id를 지정하여 스타일을 변경
  • 이 때는 #을 붙여야 함

주요 CSS 스타일들

폰트 스타일

#title{
  font-family: Georgia, "Times New Roman", Times, serif;
}

font-family는 폰트를 지정하는 역할
Georgia, "Times New Roman", Times, serif는,

  • 브라우저가 Georgia를 지원하지 않으면 "Times New Roman"을 사용
  • 순서대로 브라우저가 지원하는 폰트를 사용
  • "Times new Roman"만 쌍따옴표로 감싸져있는데, 폰트 이름에 띄워쓰기가 있으면 꼭 붙여줘야 함
#title{
  font-size: 50px;
  font-weight: bold;
  font-style: italic;
  color: red;
  /*
  color: rgb(255, 192, 203);
  color: hsl(4, 82%, 57%);
  color: #eb4639;
  */
}
  • font-size는 폰트 사이즈를 지정
  • font-weight는 글씨 두께를 조절
  • font-style은 글씨 스타일(이탤릭체)을 설정
  • color는 글자 색상을 변경

텍스트 스타일

.center{
  text-align: center;
  text-indent: 50px;
}
  • text-align로 텍스트 정렬 가능
  • text-indent로 들여쓰기 가능

margin, padding, border

p.example{
    width: 273px;
    height: 90px;
    margin: 50px;
    border: 5px solid black;
    padding: 50px;
}
p.center{
  margin: 50px auto;
}

마진 패딩 보더의 개념은 아래와 같음

  • margin은 border 외부에 생기는 여백
  • border는 테두리
  • padding은 border 내부에 생기는 영역
  • p.center와 같이 설정하면 위아래는 50px의 마진, 좌 우는 가운데 정렬을 할 수 있음
  • margin이나 padding은 아래의 순서대로 적용됨
    (margin: top right bottom left;)
* {
  box-sizing: border-box;
}
  • padding 값에 영향을 받지 않고 width만으로 box의 사이즈를 결정하는 방법
body {
  color: red;
  font-size: 14px;
}
<body>
  <p></p>
</body>
  • 이 경우에는 body의 CSS값이 P에도 상속되어 P의 글자색은 빨간색, 글자크기는 14px가 됨.
  • 이 때 p가 본인의 CSS값을 갖고 있으면, p 태그의 CSS가 적용이 됨
p.p-tag {
  color: gray;
}
p#third-line {
  color: red;
}
  • p.p-tag는 p태그이면서 p-tag 클래스를 지정
  • p#third-line은 p태그이면서 third-line id를 지정
.pre span {
  background-color: red;
}
<div class="pre">
   <span>pre 안의 span 태그 입니다.</span>
</div>
  • .pre span은 pre 클래스를 갖는 div안의 span을 지정
  • 이와 같이 클래스 내부의 태그를 지정하여 CSS를 적용할 수 있음

CSS 우선순위

CSS의 selector는 우선순위가 존재, 이는 점수로 계산되어짐.

  • inline styling: 1000 point
  • id: 100 point
  • class: 10 point
  • tag: 1 point

이미지 넣기

img {
  width: 300px;
}
<img alt="HTML" src="https://파일의주소/img.png">
  • alt: 이미지가 로딩되지 않을 때 대신 로딩할 텍스트
  • src: 이미지 파일 경로 혹은 주소
  • img의 width를 변경하면 비율에 맞춰서 height도 변경됨

block vs inline

  • block 요소는 좌우측에 다른 요소를 붙여넣을 수 없음
    (header, footer, p li 태그등이 이에 해당함)
  • inline요소는 block 요소와 반대되는 개념
    (span, a, img 등이 해당)
.inline-p {
  display: inline-block;
}
.block-span{
  display: block;
}
.hide{
  display: none;
}
  • inline-p class는 block인 요소가 inline으로 변경
  • block-span class는 inline요소가 block으로 변경
  • hide class는 보이지 않음

position

  • position은 총 4개의 값이 있음.
    (static, relative, absolute, fixed)
.search {
  position: relative;
  width: 300px;
}
.search img{
  position: absolute;
  width: 17px;
  top: 10px;
  right: 12px;
}
  • absolute는 부모에 relative가 있어야 적용 가능
    (top, bottom, left, right로 위치를 조정할 수 있음)
  • 예제와 같이 search class의 img의 포지션은 absolute로 설정되어 위로 10px, 오른쪽에서 12px만큼 조정됨

.coupon {
  position: fixed;
  right: 0;
  bottom: 0;
  background-color: red;
}
  • fix는 스크롤 여부와 관계 없이 브라우저 화면 크기만큼 화면 내에서 이동함.
  • 쇼핑몰의 쿠폰 기능이 이와 유사함.

display: flex

.wrapper {
  display: flex;
  justify-content: flex-start; //flex-end
  align-items: flex-start; //flex-end
  flex-direction: row; //row-reverse column column-reverse
}

.wrapper .yellow{
  order: 3;
}
  • 가로정렬을 수행하는데 flex는 굉장히 유용함.
  • justify-content에서 flex-start를 설정하면 오른쪽에, flex-end는 왼쪽으로 정렬을 수행하도록 함(center는 가운데정렬)
  • justfy-content: space-around는 자식들의 좌우 마진을 동일하게 설정
  • justfy-content: space-between는 끝 여백은 없이 좌우 마진 동일하게 설정
  • justfy-content: space-evenly는 짝수값 자식의 여백만 설정
  • align-items는 세로 정렬 기준을 정할 때 사용(justfy-content와 유사)
  • flex-direction은 요소들을 정렬할 때 사용.
  • .wrapper .yellow에 CSS를 부여한 것 처럼 정렬순서를 임의로 변경할 수 있음

'html,css' 카테고리의 다른 글

HTML 기초 및 여러 태그들  (0) 2021.12.06