<!DOCTYPE html>
<html lang="ko"> <!--이 부분이 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">
<!--에밋에서 이 부분이 없으면 실제 화소로 계산 -> 모바일 환경에서 pc레이아웃으로 넘어가버림-->
<title>Document</title>
</head>
<body>
</body>
</html>
src: html에게 의존, 무거우면 늦게 열린다
href: html과 독립
html은 src를 먼저 오픈시키고자 한 다음에 href 오픈
그래서 href 및 태그들 먼저 올리고 js src 나중에
(에러나면 너무 느려지니까 최대한 미뤄야)href는 내 중심으로 코딩해도 되지만 src는 html 효율성 고려해야
<script>
document.body
document.head
//document.get... (body나 head 밑의 태그 등의 요소를 잡아오는 용도)
document.getElementById("#box"); //단수를 잡는 넘
document.getElementsByTagName("div"); //복수를 잡는 넘
</script>
ID는 딱 하나밖에 없기 때문에 효율적
div는 여러 개이므로 어느 것인지 모르므로 스피드 떨어짐
innerHTML은 객체이므로 대입식으로 써야함 (메서드 아님!!)
(여기에는 id적을 때 ""안에 # 붙이면 안 돼 이미 id를 고를 예정이므로)
<script>
document.getElementById("box").innerHTML = "<h2>드디어 조작했다</h2>";
document.getElementById("box").innerHTML += "<h2>드디어 조작했다</h2>";
//이렇게하면 #box 안 기존 값에 innerHTML 값이 추가로 들어감
</script>
= : 다 초기화 시키고 들어감
+= : 추가적으로 값을 넣음
문자화 시키는 게 중요...
요소검사 가능
동적 사용 가능
CSS의 원본!인 Sass
이걸 컴파일해줄 Live Sass Compiler가 필요
서버 접속 위한 SFTP 설치
<!--header#hd>.container>h1>a>img^^ul#gnb>li.gnb$*4>a{대메뉴$}-->
<header id="hd">
<div class="container">
<h1><a href=""><img src="" alt=""></a></h1>
<ul id="gnb">
<li class="gnb1"><a href="">대메뉴1</a></li>
<li class="gnb2"><a href="">대메뉴2</a></li>
<li class="gnb3"><a href="">대메뉴3</a></li>
<li class="gnb4"><a href="">대메뉴4</a></li>
</ul>
</div>
</header>
$는 변수!
수직 수평 정렬을 내맘대로 할 수 있음
디폴트값은 수평 나열
justify x축
align y축
display: flex; 로 컨텐츠 수평나열
justify-content: space-between; 으로 좌우로 찢어줌 (x축 좌우로 찢음)
align-items: center;로 각 위치의 중간지점을 맞춰줌 (y축 정렬)
<!-- header#hd>.container>h1>a>img^^ul#gnb>li*4>a.d1{대메뉴}+ul.d2>li*4>a{소메뉴들} -->
<header id="hd">
<div class="container">
<h1><a href=""><img src="" alt=""></a></h1>
<ul id="gnb">
<li>
<a href="" class="d1">대메뉴</a>
<ul class="d2">
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
</ul>
</li>
<li>
<a href="" class="d1">대메뉴</a>
<ul class="d2">
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
</ul>
</li>
<li>
<a href="" class="d1">대메뉴</a>
<ul class="d2">
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
</ul>
</li>
<li>
<a href="" class="d1">대메뉴</a>
<ul class="d2">
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
<li><a href="">소메뉴들</a></li>
</ul>
</li>
</ul>
</div>
</header>
rem : 제일 많이 씀. 글자 크기 기준
반응형
vw : view width 화면 넓이
vh : view height 화면 높이
min-width : 최소 너비
max-width : 최대 너비
<style>
div {
position: fixed; /* fixed는 브라우저 화면 기준 */
width: 10vw; height: 10vh;
min-width: 80px; max-width: 130px;
background-color: black;
color: white;
border-radius: 50% 0;
}
#box1 {
left: 10rem;
top: 10rem;
}
#box2 {
right: 10px;
top: 10px;
}
#box3 {
left: 10px;
bottom: 10px;
}
#box4 {
right: 10px;
bottom: 10px;
}
</style>
or root 가상 클래스 사용
<style>
/* 변수들을 모아주는 용도 (자바스크립트처럼)*/
:root {
/* - 를 쓰는 것과 충돌 안 되도록 변수 이름 정해줄 때 앞에 -- 넣어줘야 좋음 */
--px-10 : 10px;
--box-wh : 10vw;
}
div{
position: fixed; /* fixed는 브라우저 화면 기준 */
width: var(--box-wh); height: 10vh;
min-width: 80px; max-width: 130px;
background-color: black;
color: white;
border-radius: 50% 0;
}
#box1 {
left: var(--px-10);
top: var(--px-10);
}
#box2 {
right: var(--px-10);
top: var(--px-10);
}
#box3 {
left: var(--px-10);
bottom: var(--px-10);
}
#box4 {
right: var(--px-10);
bottom: var(--px-10);
}
</style>
공통 클래스는 가장 높은 곳(가장 중요도 낮음)에 둬야 수정 굿
속성 값 4개일 경우 위부터 시계방향, 2개는 상하 좌우
<style>
* { /* *(벡셀)표는 전체 선택 */
margin: 0; padding: 0; /* 여백 없이 깔끔하게 */
}
</style>
하나만 찾고 싶을 때
<style>
#gnb li:nth-child(num) a{} /* > (n)번 째 li의 a */
#gnb li:nth-child(2n) a{} /* 2의 배수 */
</style>
하나만 빼고 고르고 싶을 때
<style>
#gnb li:not(.gnb3) a{} /* ex. (class gnb3)을 제외하고 */
#gnb li:not(.gnb3) a{}
</style>
이어서 css 결과물 전달할 때
기준: 같은 부모를 가지고 있어야 함
+: 일반 형제 선택자: A+B > A 바로 다음에 오는 B에만 적용
~: 인접 형제 선택자: A~B > A 뒤에 오는 모든 B에 적용
<style>
/* ex01 */
#gnb li + li{} /* 첫째의 것을 나머지애들이 다 물려 받음 */
/* = */
#gnb li:not(:first-child){} /* 그러므로 이 코드와 동일하다 */
#gnb li:first-child + li{} /* 자세하게 지정 > 고정되었으므로 둘째만 바뀜 */
#gnb li + li + li + li{} /* 계속 옮겨가므로 결국 마지막 애만 받음 */
#gnb li ~ li{} /* li 뒤에 오는 li에 모두 적용 */
</style>
Id는 #으로 표시
한 페이지 내에 하나만 사용 (중복되지 않도록)
스피드가 빠름
스타일 우선선위가 높음
자바스크립트 선택자로서 스피드가 빠름
단수명령
다중객체의 스타일 적용에 최적화 > 부트스트랩(프레임워크)
후손선택자 -> 공백으로 표기
자손선택자 ->ㅣ 에밋과 동일 '>'로 표기
- '+' 선택자 -> 바로 아래 동생
- '~' 선택자 -> 동생들 (나 빼고 모두)
:nth_child(순번) -> n번째 객체
:not(제외 객체)
fixed(화면), absolute(부모), relative(가장 가까이 있는 상위객체)
absolute는 상위 객체 명령듣고자 함
relative 상관없이 다 명령 고고 (유기적으로 움직이는 객체)top, left, right, bottom, x-index 도 있다~