첫주는 심화과정에 대비하여 패스트캠퍼스 온라인 강의로 html, css의 기초를 수강한다.
단 현재 html과 css의 기본적인 내용을 숙지하고 있으므로 복습위주로 공부한다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>콘텐츠 구분 예제</title>
<link rel="stylesheet" href="main.css" />
</head>
<body>
<header>
<h1>header</h1>
<nav>
<h2>nav</h2>
</nav>
</header>
<main>
<section>
<h1>Section</h1>
<article>
<h2>article1</h2>
<p>Contents...</p>
</article>
<article>
<h2>article2</h2>
<p>Contents...</p>
</article>
<article>
<h2>article3</h2>
<p>Contents...</p>
</article>
</section>
<aside>
Aside
</aside>
</main>
<footer>
<address>
<a href="mailto:ghkdxogus71@naver.com">ghkdxogus71@naver.com</a>
<a href="tel:+82101012345678">010-1234-5678</a>
</address>
</footer>
</body>
</html>
header {
background: tomato;
margin: 10px;
padding: 20px;
}
header nav {
}
header nav ul {
display: flex;
}
header nav ul li {
list-style: none;
margin: 10px;
}
section {
width : 70%;
background : tomato;
margin : 10px;
padding: 10px;
box-sizing: border-box;
}
section h1 {
}
main{
display: flex;
}
article {
background-color: yellowgreen;
margin-bottom: 10px;
padding: 10px;
}
article h2 {
}
article p {
}
aside {
width: 30%;
background-color: tomato;
margin: 10px;
padding: 20px;
box-sizing: border-box;
}
footer {
margin : 10px;
padding: 20px;
background-color: tomato;
}
footer address {
}
footer address a{
display: block;
}
브라우저에서 제공하는 스타일이 표준화 되지 않았기 때문에 많은 브라우저에서 동일한 결과를 얻기 위해서 브라우저를 초기화 시켜야한다.
직접 작성하여도 상관없지만 페이지가 많아질수록 불편하기 때문에 자동적으로 만들어진 라이브러리를 사용하는게 편하다.
내가 사용하였을때 가장 편했던 사이트 2가지를 소개한다.
내가 사용하는 vscode에서 사용하는 플러그인
- Auto Close Tag : 태그를 자동으로 닫아줌
- Auto Rename Tag : 짝태그를 수정
- Bracket Pair Colorizer : 괄호마다 색상 다르게 표시
- ESLint : JavaScript 코드에서 발견 된 문제 패턴을 식별하기위한 정적 코드 분석 도구
- IntelliSense for CSS class names in HTML : 작성된 css 파일을 로드하여 css class를 자동 완성 함
- Korean Language Pack for Visual Studio Code : vscode의 설정들을 한국어로 만들어줌
- Live Server : 수정된 코드를 바로바로 반영하여 보여줌
- Prettier - Code formatter : 코드를 설정대로 정렬해줌
- vscode-icons : vscode의 확장자마다 보기 좋은 아이콘으로 보여줌
가로너비 : width, max-width, min-width
세로너비 : height, max-height, min-height
요소의 바깥 여백 : margin(margin-top, margin-bottom, margin-right, margin-left)
음수의 값 사용가능
단축속성으로
마진을 사용할 때 마진 중복이라는 현상이 일어난다.
요소의 내부 여백 : padding, 나머지 요소는 margin와 같다.
추가된 padding 값만큼 요소의 크기가 커진다.
/*크기가 120px 120px가 되어버린다.*/
width: 100px;
height: 100px;
padding: 20px;
위처럼 계산이 꼬이거나 하지 않기 위해 box-sizing: border-box;속성을 사용한다.
/*크기가 100px 100px으로 고정된다.*/
width: 100px;
height: 100px;
padding: 20px;
box-sizing: border-box;
요소의 테두리 선 : border(border-width, border-style, border-color)
border-style
padding처럼 요소의 크기가 증가할 수 있다.
요소의 크기 계산 기준 설정 : box-sizing
요소의 박스 타입을 설정 : display
요소의 크기 이상으로 자식요소가 넘쳤을대 내용의 보여짐을 제어
요소의 투명도를 지정 : opacity
글자 관련 속성 : font
요소를 좌우 방향으로 띄움(수평 정렬) : float
원래는 좌우 방향을 띄우지만 그걸 이용하여 수평 정렬이 가능
정렬과 다르게 left는 좌측부터 쌓기 시작 right는 우측부터 쌓기 시작한다.
단 요즘은 flax-box로 한다.
요소는 수직으로 쌓인다. float를 적용하면 적용된 요소 주변으로 문자가 흐르게 된다.
clear로 float를 제거할 수 있다.
clear로 적절한 곳에서 해제하지 않으면 아래쳐럼 짤린다.
위의 현상을 방지할려면 속성을 해제해야 한다.
형제요소에 clear:(left, right, both) 추가
부모요소에 overflow: (hidden, auto)
부모요소에 clearfix 클래스 추가(추천)
/*float부모 요소에 지정*/
.clearfix::after{
content: "";
clear: both;
display: block; /*or 'table'*/
}
float 속성이 추가된 요소는 display 속성값이 대부분 block로 바뀐다.
float 속성이 적용되지 않도록 지정 : clear
요소의 위치 지정 방법의 유형(기준)을 설정 : position
배경의 단축 : background
배경 색상 : background-color
배경 이미지 : background-image
다중 이미지 속성
.box1{
/*개별속성*/
background-image: url('../li1.jpg'),
url('../li2.jpg'),
url('../li3.jpg');
}
.box2{
/*단축속성*/
background: url('../li1.jpg') no-repeat,
url('../li2.jpg') no-repeat 100px 50px,
url('../li3.jpg') repeat-x;
}
배경 이미지 반복 : background-repeat
배경 이미지 위치 : background-position
배경 이미지의 스크롤 여부 : background-attachment
배경 이미지의 크기를 지정 : background-size
요소의 애니메이션을 설정/제어 : animation
animation : 애니메이션이름 지속시간 [타이밍함수 대기시간 반복횟수 반복방향 전후상태 재생/정지];
.box{
width: 100px;
height: 100px;
background: tomato;
animation: hello 2s linear infinite both;
}
@ketframes hello{
0% {width: 200px; }
100% { width: 50px; }
}
2개 이상의 애니메이션 중간 상태(프레임)을 지정 : @ketframes
@ketframes 애니메이션이름{
0% {속성: 값; }
50% {속성: 값; }
100% {속성: 값; }
}
애니메이션 반복 방향 : animation-direction
애니메이션의 전후 상태(위치)를 설정
애니메이션의 재생과 정지를 설정 : animation-play-state
수평 정렬을 하기 위해 나온 개념 예전에 많은 방법들이 있었지만 이제는 display:flex;로 쉽게 설정한다.
flex는 2개의 개념으로 나뉜다. container은 items를 감싸는 부모요소, item을 정렬하기 위해서는 container이 필요하다
container
display, flex-flow, justify-content 등이 있다.
flex-flow : flex items의 주 축을 설정하고 items의 줄바꿈도 설정한다.
.flex-container{
flex-flow: row-reverse wrap
}
주 축으로는 row(수평축), row-reverse, column(수직축), column-reverse
줄바꿈은 : nowrap, wrap, wrap-reverse
기본적으로 items는 한 줄에서만 표시되고 줄 바꿈 되지 않는다. 그렇기 때문에 부모요소에 따라 크기가 변할 수 있다.
justify-content
align-content : 교차축일떄 items의 정렬
align-items : 교차축일떄 items의 정렬
items
부모요소에 display: grid;를 사용한다. 자식요소는 grid-item이 된다.
열과 행의 크기를 정할 수 있다.
grid-column, grid-row
특정 아이템을 위치시키기
.item{
grid-row: grid-row-start: 열 위치 / grid-row-end: 열 위치;
grid-column: grid-column-start: 행 위치 / grid-column-end: 행 위치;
}
.item:nth-child(1) {
grid-column: 1 / 3;
grid-row: 1 / 3;
}
.item:nth-child(2) {
grid-row: 1 / 3;
}
.item:nth-child(4) {
grid-row: 4 / 5;
grid-column: -1 / -3;
}
grid는 맨 위는 row의 1번 선 맨 왼쪽은 column의 1번 선이다.
음수값은 각각 맨 아래 맨 오른쪽이 시작점이다.
grid-template-areas
3X3의 grid일때
.container{
display:grid;
grid-template-rows: repeat(3, 100px);
grid-template-columns: repeat(3, 1fr);
grid-template-areas:
"header header header"
"main main aside"
"footer footer footer";
}
.item{
border: 10px solid red;
}
.item:nth-child(1){
grid-area: header;
}
.item:nth-child(2){
grid-area: main;
}
.item:nth-child(3){
grid-area: aside;
}
.item:nth-child(4){
grid-area: footer;
}
row-gap, column-gap
gird-auto-rows, gird-auto-column
gird-auto-flow
sass(SCSS) (0) | 2020.03.30 |
---|
댓글 영역