728x90
CSS 문법
- 각각의 스타일 속성에 다양한 값을 입력
- 동일한 속성 중첩가능 ▶ 마지막 속성만 적용
css 적용방법 = 순서는 가장 가까운 순서부터
1. 인라인 시트
태그 style 속성
< tag style = ' ' >
{ } 중괄호 빼고 style만 적기, color:green;
따로 특별히 주고 싶을 때 사용
2. 내부 스타일 시트
<style> css 작성 </style>
3. 외부 스타일 시트
.css
가장 많이 사용
/* css를 하기 전 꼭 들어갈 기본 값 */
* {margin: 0; padding: 0; list-style: none;}
a {text-decoration: none;}
img {max-width: 100%; height: auto;} 가장 기본 속성
더보기
실습
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 외부 스타일 시트 -->
<!-- 속성은 link + tab, stylesheet 무조건 써주기 -->
<link rel="stylesheet" href="index01.css">
<!-- 내부 스타일 시트-->
<style>
p {color: blue;}
</style>
</head>
<body>
<p> 외부스타일시트 </p>
<p> 외부스타일시트 </p>
<p style="color: rgb(0, 255, 21);"> 외부스타일시트 </p>
</body>
</html>
css 단위
% | 부모태그에 대한 나의 비율 | 부모영역이 지정되어 있지 않으면 동작x |
em | 부모영역에 대한 나의 배수 단위 | 1em: 완전 똑같음 0.5em: 절반 같음 2em: 2배 |
px | 나의 고정크기 (화면넓이 1920px) | 가장 많이 사용 |
vh | 내가 보는 화면에 대한 비율 | 100vh: 내가 지금 보는 화면의 100% |
여러 이름을 가진 class
class= 이름1 (띄어쓰기) 이름2 (띄어쓰기) 이름3
- 여러 이름 사이에 띄어쓰기만 해주면 됨
선택자 [중요]
- 원하는 태그만 적절히 선택하여 사용하기 위해 이용
- html 문서 안의 모든 태그를 선택할 때는 전체 선택자를 사용
* | 모든 태그 선택 | 모든 태그에 기본으로 들어가야 할 사항 여백, 폰트 등 |
* { color: red; } - 모든 색이 다 red |
태그 (태그이름) | 특정 태그 선택 | h1 { color: red; } - 모든 h1태그에 적용 |
|
#아이디 | 아이디 속성을 가진 태그 선택 | 아이디 = 고유한 속성 (남이랑 식별 가능) |
#header { background: red; } - id가 header인 것, header태그 x |
.클래스 | 특정 클래스를 가진 태그 선택 | 클래스는 중복 가능 | .select { color: red; } - 클래스명이 select라는 것 |
li.m0 | li 태그의 m0이라는 클래스만 선택 | li.m0 - li랑 m0이 붙어있음 |
|
선택자A(띄어쓰기)선택자B | A의 후손에 위치하는 B 선택 | 선택자B 에 적용 | #header h1 { color: red; } - id가 header로 되어 있는 태그의 자식으로 있는 h1태그 모두 |
선택자A > 선택자B | A의 자손에 위치하는 B 선택 | 직속자식 한테만 = 바로 하위 자식한테만 |
#header > h1 { color: red; } - id가 header로 되어 있는 태그의 자식으로 있는 h1 태그인데 직속자식 한테만 |
선택자[속성] 선택자[속성=값][속성=값] |
특정한 속성이 있는 태그 선택 | input [type=password] { background: blue; } - 태그선택자(input) type 속성이 password 인것 만 - <input type = text > a [href = ], img [src = ], .box [id = x] 등 |
더보기
id와 class 차이
가상선택자
반응 선택자 | |
:active | 마우스로 클릭한 태그 선택 |
:hover | 마우스를 올린 태그 선택 |
상태 선택자 | |
:checked | input, checkbox, radio 체크상태인 아이들 |
:focus | input태그에 마우스가 올라갔을 때 |
:enabled | 사용가능한 input태그 선택 |
:disabled | 사용 불가능한 input태그 선택 |
실습
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* 주석: alt + shift + a 또는 ctrl + / */
/* * { } : 디자인 시작전에 전역으로 적용할 속성 margin and padding에 적용 */
b { color: blue;}
#a1 { color: greenyellow;} /* 아이디 */
.b1 { color: salmon;} /* 클래스 */
.box p {color: cornflowerblue;} /* 모든자식 */
.box > p {color: seagreen;} /* 바로 밑에 있는(직속,직계) 자식들에게 줌 */
.box2 li, /* .box li, p {}를 하면 모든 p태그를 말하는 것이라서 안 됨 */
.box2 p {color:purple;}
.forms input[type=text] {background-color: lightgrey;}
</style>
</head>
<body>
<p>선택자</p>
<b>선택자</b>
<p id="a1">아이디선택자</p>
<p class="b1">클래스선택자</p>
<p class="b1">클래스선택자</p>
<div class="box">
<p> 하위선택자 꺽쇠 </p>
<p> 하위선택자 꺽쇠 </p>
<form>
<p> 하위선택자 공백 </p>
</form>
</div>
<div class="box2">
<ul>
<li>목록</li>
<li>목록</li>
<li>목록</li>
</ul>
<div>
<p>내용...</p>
</div>
</div>
<form class="forms">
<input type="text">
<input type="submit">
</form>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* 마우스 닿을 때 */
/* .list ul li a {} 이렇게 해도 됨 */
.list > ul > li > a:hover {background-color: lightgreen;}
/* input에 포커스 될 때 */
.inner > input:hover{background-color: lightskyblue;}
/* 눌렀을 때 */
.title p:active{background-color: sienna;}
</style>
</head>
<body>
<div class="list">
<ul>
<li><a href="#">목록</a></li>
<li><a href="#">목록</a></li>
<li><a href="#">목록</a></li>
</ul>
</div>
<div class="inner">
<input type="text" placeholder="입력">
<input type="text" placeholder="하던지 말던지">
</div>
<div class="title">
<p>active</p>
</div>
</body>
</html>
font & text
폰트
- 폰트관련 잘 모를때 3schools - CSS font, backgound 같은 것들
- https://www.w3schools.com/css/css_font.asp
font-family | 폰트 | |
font-size | 크기 | small, medium, large, %, px |
font-style | 스타일 | normal, italic, obilique |
font-weight | 굵기 | |
font | font 관련된 속성 한꺼번에 설정 |
구글 웹폰트
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1. 웹폰트 링크-->
<!-- <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=East+Sea+Dokdo&family=Neucha&display=swap" rel="stylesheet">
-->
<!-- 2. 웹폰트 임포트 -->
<!-- css파일 안에도 링크로 폰트 선언 가능-->
<style>
@import url('https://fonts.googleapis.com/css2?family=East+Sea+Dokdo&family=Neucha&display=swap');
body, html {
font-family:'East Sea Dokdo', cursive;
font-size: 50px;
/* font-weight: 900; */
}
</style>
</head>
<body>
웹폰트
</body>
</html>
- 추가적으로 다운로드해서 적용하는 방법이 있으나 여기엔 적지 않음
border 속성
- 3가지 속성을 한번에 지정
1px solid #777
두께 선모양 색상
- border-radious: 윤곽의 테두리가 중근 사각형 또는 원 만들기
border-radius: 50px 40px 20px 10px;
100px 주면 사각형의 각이 둥글게 나옴
텍스트 속성
color | 텍스트 색 | |
line-height | 줄 간격 | |
letter-spacing | 문자 사이의 간격 | normal = 0px, -n px:겹쳐보임, 0.5px 등 |
text-align | 정렬 상태 지정 | block에서 사용 left, right, center, justify |
text-decoration | 텍스트에 줄 표시 | none 주로 사용 |
overflow | 일정 공간에 글들이 넘치는 것 방지 | hidden, visible, scroll, none |
white-space | 줄바꿈 할꺼냐, 줄바꿈 없이 쓸꺼냐? nowrap을 사용했을 경우에는 공백을 유지하며 줄바꿈 기능을 하지 않음 |
정렬
text-align | 텍스트(inline) 수평 정렬 부모의 block 태그에 적용 |
left, center, right |
vertical-align | 수직정렬 기준 (나란히 배치된 요소에 적용) 비교된 대상이 있어야 함 |
top, middle, bottom |
coding 404 텍스트 정렬 팁 기준 정렬할게 없을 때, height와 line-height를 동일하게 맞추면 위, 아래에서 가운데 정렬 큰 박스의 너비 지정 후, margin: 0 auto; 수평 가운데 정렬 |
margin: 0 auto; 안될 때
- <!Doctype ~> 선언이 제대로 안 되었을 때
- 가로 사이즈의 설정이 되어있는지 확인
width 지정 필요 (auto가 자동으로 사이즈를 설정해주기 때문) - display 속성이 block인지 확인
inline은 자기 자신만큼만 영역값을 가지므로 - 차지하는 요소가 이미 해당 가로 공간을 차지하고 있는지 확인
블럭으로 끝까지 다 차지하고 있으면 auto 할 공간이 없으므로 - margin: 0 auto 한 후 margine: 30px 같이 전체 마진을 주면 제대로 나오지 않음, 위아래는 margin 가능
메뉴 만들기
- ul li는 block 태그라서 inline 요소로 바꿔줘야 옆으로 붙을 수 있음
- a 태그는 inline요소여서 너비, 높이를 잡아줄 수 없으므로
inline-block 요소로 바꿔 inline으로 배치하되 block의 성질을 갖게 함
.menu ul li {display: inline;}
.menu ul li a {
display: inline-block;
color: #777;
text-decoration: none;
width: 50px;
height: 50px;
line-height: 50px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.tx {color: cadetblue;
letter-spacing: -5px; /* 글자간격 */
text-align: right; /* 글자정렬: 블럭요소에서 사용 */
}
/* p태그에 정렬줘도 안 먹힘 */
.tx1 {vertical-align: top;}
/* 기준이 되는(img)! 나란히 배치된 요소에 들어감 */
.tx1 img{vertical-align: middle;}
/* 기준이 되는 요소가 없을 때 수직정렬 */
/* 한줄만 있을 때 height, line-height 맞춰주면 중앙으로 정렬됨 */
.tx2 {
border: 1px solid #777;
height: 100px;
line-height: 100px; /* 줄간간격 */
}
</style>
</head>
<body>
<p class="tx">
안녕하세요
</p>
<p class="tx1">
<img src="img/css.png" alt="이미지">
버티칼 얼라인
</p>
<p class="tx2">
기준이 되는 요소가 없을 때 수직정렬
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
p {
border: 1px solid#777;
height: 100px;
width: 300px;
}
.tx1 {overflow: hidden;} /* 숨김 */
.tx2 {overflow: scroll;} /* 무조건 스크롤 생성 */
.tx3 {overflow: auto;} /* 내용이 넘칠때만 스크롤로 바꿔줌 */
.tx4 {overflow: visible;} /* 기본값 */
</style>
</head>
<body>
<p class="tx1">
최근 강남 지역 스쿨존에서 교통사고가 잇따르고 또 어린이들이 목숨을 잃으면서 여러 가지 대책마련에 대한 목소리가 높아지고 있습니다.
여기에 일부 지자체에서어린이보호구역 속도 제한을 완화하려는 방침을 밝히고 있습니다. 이에 대한 찬반 논란도 이어지고 있는데요.
관련해서정경일 교통사고전문변호사와 짚어보겠습니다. 어서 오세요. 먼저 청담동 언북초등학교 앞에서 일어난 차량사고요.
초등학교 3학년 어린이가 음주운전 차량에 치여서 사망하는 사고가 일어났는데 먼저 그 사고는 어떻게 난 겁니까?
[정경일]
어린이보호구역 내에서 음주운전자가 이면도로에 있던 어린이를 충격하고 사망케하고 그 현장을 떠났습니다.
그러고 난 뒤에 자신의 집에 주차하고 난 뒤에 뒤늦게 나와서 사고 수습을 했다고 하는데 음주운전 교통사고, 어린이보호구역 내 교통사고, 그리고 또 뺑소니 교통사고 이 세 가지가 다 문제되는 사건이었습니다.
[앵커]
사고가 난 현장을 좀 봤으면 좋겠는데요. 사고가 난 현장을 보면 상당히 골목길인데 좁더라고요.
그런데 어린이보호구역이니까 당연히 속도를 줄여야 되는데 속도를 줄이지 않았나 보죠?
[정경일]
속도 부분은 제한속도 위반한 바는 없었습니다.
</p>
<p class="tx2">
최근 강남 지역 스쿨존에서 교통사고가 잇따르고 또 어린이들이 목숨을 잃으면서 여러 가지 대책마련에 대한 목소리가 높아지고 있습니다.
여기에 일부 지자체에서어린이보호구역 속도 제한을 완화하려는 방침을 밝히고 있습니다. 이에 대한 찬반 논란도 이어지고 있는데요.
관련해서정경일 교통사고전문변호사와 짚어보겠습니다. 어서 오세요. 먼저 청담동 언북초등학교 앞에서 일어난 차량사고요.
초등학교 3학년 어린이가 음주운전 차량에 치여서 사망하는 사고가 일어났는데 먼저 그 사고는 어떻게 난 겁니까?
[정경일]
어린이보호구역 내에서 음주운전자가 이면도로에 있던 어린이를 충격하고 사망케하고 그 현장을 떠났습니다.
그러고 난 뒤에 자신의 집에 주차하고 난 뒤에 뒤늦게 나와서 사고 수습을 했다고 하는데 음주운전 교통사고, 어린이보호구역 내 교통사고, 그리고 또 뺑소니 교통사고 이 세 가지가 다 문제되는 사건이었습니다.
[앵커]
사고가 난 현장을 좀 봤으면 좋겠는데요. 사고가 난 현장을 보면 상당히 골목길인데 좁더라고요.
그런데 어린이보호구역이니까 당연히 속도를 줄여야 되는데 속도를 줄이지 않았나 보죠?
[정경일]
속도 부분은 제한속도 위반한 바는 없었습니다.
</p>
<p class="tx3">
최근 강남 지역 스쿨존에서 교통사고가 잇따르고 또 어린이들이 목숨을 잃으면서 여러 가지 대책마련에 대한 목소리가 높아지고 있습니다.
</p>
<p class="tx4">
최근 강남 지역 스쿨존에서 교통사고가 잇따르고 또 어린이들이 목숨을 잃으면서 여러 가지 대책마련에 대한 목소리가 높아지고 있습니다.
여기에 일부 지자체에서어린이보호구역 속도 제한을 완화하려는 방침을 밝히고 있습니다. 이에 대한 찬반 논란도 이어지고 있는데요.
관련해서정경일 교통사고전문변호사와 짚어보겠습니다. 어서 오세요. 먼저 청담동 언북초등학교 앞에서 일어난 차량사고요.
초등학교 3학년 어린이가 음주운전 차량에 치여서 사망하는 사고가 일어났는데 먼저 그 사고는 어떻게 난 겁니까?
[정경일]
어린이보호구역 내에서 음주운전자가 이면도로에 있던 어린이를 충격하고 사망케하고 그 현장을 떠났습니다.
그러고 난 뒤에 자신의 집에 주차하고 난 뒤에 뒤늦게 나와서 사고 수습을 했다고 하는데 음주운전 교통사고, 어린이보호구역 내 교통사고, 그리고 또 뺑소니 교통사고 이 세 가지가 다 문제되는 사건이었습니다.
[앵커]
사고가 난 현장을 좀 봤으면 좋겠는데요. 사고가 난 현장을 보면 상당히 골목길인데 좁더라고요.
그런데 어린이보호구역이니까 당연히 속도를 줄여야 되는데 속도를 줄이지 않았나 보죠?
[정경일]
속도 부분은 제한속도 위반한 바는 없었습니다.
</p>
</body>
</html>
Layout
1. display
2. float
3. position
display [중요]
- 태그의 영역 표현 방식을 지정하는 속성
none | 태그를 화면에서 보이지 않게 만듦 | 너비, 높이 지정은 block에만 들어갈수 있음 |
block | block형식으로 지정 | |
inline | inline형식으로 지정 | |
inline-block | inline-block형식으로 지정 inline으로 배치하되 block의 성질을 갖게 함 |
2022.12.13 - [HTML/CSS] - [HTML] Visual Studio Code 설치 및 HTML 태그
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.list .inner {display: inline;} /* 인라인요소로 변경 */
.list2 span {display: block;} /* 블럭 요소로 변경 */
.list3 a {
display: inline-block;
height: 100px;
line-height: 100px;
width: 100px;
text-align: center;
} /* 인라인으로 배치, 블럭의 성질을 가지게 함 */
/* display: inline-block없이 inline만 사용하면 의미 없음(안먹힘) */
.box {display: none;} /* 숨기기 */
</style>
</head>
<body>
<div class="list">
<div class="inner">블럭</div>
<div class="inner">블럭</div>
<div class="inner">블럭</div>
</div>
<div class="list2">
<span>인라인</span>
<span>인라인</span>
<span>인라인</span>
</div>
<div class="list3">
<a href="#">인라인</a>
<a href="#">인라인</a>
<a href="#">인라인</a>
</div>
<div class="box">
<p>디스플레이 none</p>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {list-style: none; padding: 0; margin: 0;} /* list-style:none 주면 기존에 list가 가지고 있는 스타일을 지워줌 */
.nav {text-align: center;}
.nav li {display: inline;}
.nav li a {
display: inline-block;
height: 100px;
line-height: 100px;
width: 100px;
text-decoration: none; /* a태그 밑줄 없애기 */
}
</style>
</head>
<body>
<ul class="nav">
<li><a href="#">목록</a></li>
<li><a href="#">목록</a></li>
<li><a href="#">목록</a></li>
<li><a href="#">목록</a></li>
</ul>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {list-style: none; padding: 0; margin: 0;} /* list-style:none 주면 기존에 list가 가지고 있는 스타일을 지워줌 */
.title {text-align: center; background-color: rgb(32, 92, 141); color: white;}
.nav {text-align: center; background-color: rgb(32, 92, 141);}
.nav li {display: inline;}
.nav li a:hover {background-color: rgb(255, 96, 136);}
.nav li a {
display: inline-block;
color: white;
height: 100px;
line-height: 100px;
width: 100px;
text-decoration: none;
}
</style>
</head>
<body>
<header>
<h3 class="title">목록만들기</h3>
<nav>
<ul class="nav">
<li><a href="#">메뉴</a></li>
<li><a href="#">메뉴</a></li>
<li><a href="#">메뉴</a></li>
<li><a href="#">메뉴</a></li>
<li><a href="#">메뉴</a></li>
</ul>
</nav>
</header>
</body>
</html>
background
background | 배경 속성 한 번에 지정 (배경식, 배경이미지, 배경이미지의 반복여부, 스크롤시 배경이미지 고정여부, 배경이미지 위치) |
background-attachment | 페이지 스크롤시 배경의 이미지를 고정시킬 것인지 |
background-color | 배경색 지정 투명: transparent |
background-image | 배경의 이미지 지정 url('smile.gif') |
background-position | 위치 지정 top, bottom, center, left, right, px, % 등 |
background-repeat | 배경이미지의 반복여부 repeat-x, repeat-y, no-repeat |
- 웹페이지의 로고들을 background로 심어 놓고, 위치를 조정해서 사용
실습
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
p {
border: 1px solid #777;
width: 300px;
height: 300px;
}
.tx1 {
background-color: aliceblue;
background-image: url('img/1.png');
background-repeat: no-repeat; /* 디폴트 값 - reapeat; */
background-size: 100px;
background-position: -30px -30px; /*50% 50%; 50px 50px; */ /* 왼, 위 */
}
</style>
</head>
<body>
<p class="tx1">
우리집 강아지는 장군이 인데, 참 속을 많이 썪인다.<br>
정신차리자<br>
정신차리자<br>
정신차리자<br>
정신차리자<br>
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {padding: 0; margin: 0;}
header {height: 200px; background-color: darkseagreen;}
article {height: 400px;
background-image: url('img/2.jpg');
background-attachment: fixed; /* 디폴트값 scroll */
background-size: contain; /* 백그라운드가 잘리지 않도록 하고, 나버지는 비움 */
background-size: cover; /* 빈공간 없이 채워줌, 나머지는 자름 */
}
section {height: 100vh; background-color: cornsilk;} /* 화면에 딱 보이는 만큼을 너비로 잡음 */
footer {height: 200px; background-color: lightpink;}
</style>
</head>
<body>
<header>
헤더
</header>
<article>
글영역
</article>
<section>
본문
</section>
<footer>
푸터
</footer>
</body>
</html>
오늘 하루
더보기
기억에 남는 부분
-
-
어려운 부분
-
-
문제 해결 부분
-
-
728x90
'클라이언트 > HTML & CSS' 카테고리의 다른 글
[HTML] Flex 문법 (0) | 2022.12.27 |
---|---|
[HTML] Float, Position (Box layout) (0) | 2022.12.22 |
[HTML] padding(패딩), margine(마진), box-sizing(속성) (0) | 2022.12.21 |
[HTML] Visual Studio Code, HTML 태그 (0) | 2022.12.13 |
[JSP&HTML] 웹 프로그래밍, HTML 태그 (0) | 2022.11.28 |