태그의 출력 방식을 조작
태그의 원래 영역도 사라진다.
키워드 | 설명 |
---|---|
none | 화면에 보이지 않음 |
block | block 형식 |
inline | inline 형식 |
inline-block | inline-block 형식 |
💭 div태그 block 형식, span태그 inline 형식
width, height 적용 됨, margin 상하좌우로 적용됨
inline 형식
inline-block 형식
💭 inline 태그가 연속으로 나열되면 태그와 태그의 공백때문에 출력 결과에 빈틈이 발생한다.
보통은 눈에 안 띄지만, 이미지같은 경우는 눈에 잘 띈다.
💭 이미지를 세로로 출력하기
1. <br> 사용
2. <div> 블럭태그 사용 -> 객체간에 공백이 있음
3. display: block 속성 사용 -> 객체간에 공백이 없음 (블럭태그는 기본 margin값이 0이기 때문)
💭 인접한 inline 태그 사이의 공백을 없애는 방법
1. font-size: 0; 사용
2. float 사용
#mainmenu > img {
float: left;
}
#mainmenu::after{
content: '';
display: block;
clear: both;
}
💭 한줄로 적는 방법
- (float: left|right) + (::after|::before) 사용
.box {
width: 100px;
height: 100px;
float: left;
}
#list::after {
content: '';
/* 문자열은 인라인성질*/
display: block;
clear: both;
}
태그를 보이거나 보이지 않게 지정
태그의 원래 영역은 그대로 유지된다.
(눈에 보이지 않을뿐)
키워드 | 설명 |
---|---|
visible | 태그 보임 |
hidden | 태그 안 보임 |
collapse | table 태그 안 보임 |
collapse 키워드
hidden 키워드
💭 table 태그의 collapse vs hidden
글자(content)를 감싸는 영역의 크기
를 지정테두리 바깥쪽 여백
테두리 안쪽 여백
1. padding 방향(위, 오른쪽, 아래, 왼쪽)
- padding-top: 0px; -> 위
- padding-right: 0px; -> 오른쪽
- padding-bottom: 0px; -> 아래
- padding-left: 0px; -> 왼쪽
2. top -> right -> bottom -> left
- padding: 0px 0px 0px 0px;
3. top -> (right+left) -> bottom
- padding: 0px 0px 0px;
4. top(bottom) - right(left)
- padding: 0px 0px;
5. top(right, left, bottom)
- padding: 0px;
/* margin 속성도 동일함 */
default
content + padding + border
영역의 크기 (진짜 눈에 보이는 상자의 크기를 width + height로 지정하는 정책)사각형
으로 랜더링(출력) 된다.모든 태그는 자신의 영역을 가진다.
테두리의 형태
width, style, color 속성을 띄어쓰기로 구분해서 입력하면 된다. (순서는 상관없다)
부분 스타일 지정 가능하다.
#box1{
border-color: pink;
border-width: 7px;
border-style: solid;
}
#box2 { border: 5px dashed coral; }
#box3 {
border-top: 2px solid red;
border-bottom: 2px solid blue;
border-right: 2px solid green;
border-left: 2px solid yellow;
}
/* 왼쪽위 오른쪽위 오른쪽아래 왼쪽아래 */
border-radius : 50px 40px 20px 10px;
body {
background-image: url(images/dog01.jpg);
}
💭 이미지 잘림 없음, 여백 있음 - contain
#box2 {
background-image: url(images/wall01.jpg);
/* background-size: 400px auto; */
background-size: contain
}
💭 이미지 잘림, 여백 없음 - cover
#box1 {
background-image: url(images/cat05.jpg);
/* background-size: auto 400px; */
background-size: cover;
}
default
default
background-position: bottom;
background-position: 50%;
background-position: 0px 50%;
font-family 속성을 여러개 사용한다.
font-family 속성의 가장 마지막 폰트에는 generic-name 폰트를 적용한다.
폰트를 서버로부터 다운로드
받아서 사용하는 기술부모 요소에 text-align: center;
를 지정한다..container {
text-align: center;
}
정렬 대상 요소에 너비를 명시적으로 지정하고 margin-right와 margin-left 프로퍼티에 auto
를 지정한다.
정렬 대상 요소에 너비를 명시적으로 지정하지 않으면 너비는 full width가 되므로 중앙 정렬이 필요없다.
block 태그는 너비가 100%가 아니어도 나머지 공간을 자신의 영역이라고 인식한다.
.item {
width: 200px;
margin: 20px auto;
}
복수의 block 요소는 기본적으로 수직 정렬된다. 이것을 수평정렬하기 위해서는 정렬 대상 block 요소를 inline-block 요소로 변경
한 후 부모 요소에 text-align: center;
를 지정한다.
정렬 대상 요소에 width를 지정하지 않으면 콘텐츠에 너비에 맞추어 너비가 결정되므로 명시적으로 너비를 지정한다.
.container {
text-align: center;
}
.item {
width: 150px;
display: inline-block;
}
static
정적 좌표
태그가 코딩 순서대로 출력되는 방식
좌표 지정 불가능
: left, top Xrelative
초기 위치 상태에서 상하좌우로 위치를 이동
원래 있는 공간은 그대로 유지
된다.absolute
절대 좌표
조상
중 가장 처음으로 만나는 태그 중 position이 static이 아닌 태그를 원점
으로 한다.좌측 상단 꼭지점
fixed
브라우저 창의 좌측 상단을 원점으로 한다.
#box1 { position:static }
#box2 { position:absolute }
#box3 { position:relative }
#box4 { position:fixed }
💭 기본적인 쌓임 순서
1. 부모 요소의 배경과 테두리
2. 자식 요소들(HTML 코드 등장 순서대로)
3. position이 지정된 자식 요소들
기본 흐름을 벗어나 다른 쌓임 순서를 지정하고 싶을 때
이때 주의해야할 점은 z-index 속성을 지정하고자 하는 요소에는 반드시 position도 지정
해주어야 한다.
position이 static인 요소는 z-index 속성을 추가해도 적용이 되지 않는다.
z-index를 지정하지 않았을 때의 기본 속성값은 0이다.
z-index값은 정수로 지정할 수 있는데, 값이 클수록 위쪽
에 렌더링 되어 사용자로부터 가까워지고 값이 작을수록 아래쪽에 렌더링 되어 사용자로부터 멀어진다.
위의 실행 결과에 2가지 문제가 있다.
문제1) h1 태그 2개가 붙어 있다. (div 태그가 영역을 차지하지 않는다)
문제2) 색상이 적용된 상자가 자신의 부모를 기준으로 위치를 잡지 않는다.
자손의 position 속성에 absolute 키워드를 적용할 경우는 부모 태그에 몇 가지 처리를 해야 한다.
문제1 해결)
자손의 position 속성에 absolute 키워드를 적용하면 부모는 height 속성을 사용한다.
문제2 해결)
자손의 position 속성에 absolute 키워드를 적용하면 부모의 position 속성에 relative 키워드를 적용한다.
💭 크기
1. 기본: 너비는 100%, 높이는 내용물만큼
2. 너비만: 너비는 px고정, 높이는 내용물만큼
3. 높이만: 상황에 따라 'overflow'
why? 브라우저 창크기에 따라 다름
4. 너비 + 높이 : heigth 넘으면 'overflow'
기존의 출력 방식을 따르지 않고, 혼자 자신의 위치에서 벗어나 현재 라인의 좌측(우측) 끝으로 이동한다.
속성 키워드 |
left
right
💭 주의
- 첫 번째에 위치한 div 태그가 오른쪽에 붙고 두 번째에 위치한 div 태그가 오른쪽에 이어서 붙는다.
#box1 {
text-shadow: 3px 3px 1px #999;
}
#box1 {
box-shadow: 3px 3px 1px #999;
}
💭 흐림도와 색상 사이에 inset 키워드를 적용하면 태그 안쪽에 생성된다.
linear-gradient(진행방향, 색상지정점1, 색상지정점2, ...)
진행방향 |
defalut
radial-gradient(모양 크기 at 중심점, 색상지정점1, 색상지정점2, ...)
기본적으로 모양은 ellipse(타원), 크기는 farthest-corner, 중심좌표는 center로 설정된다.
모양 : 타원 모양 ellipse
, 원 모양 circle
벤더 프리픽스(vendor prefix)는 웹 브라우저 공급 업체(익스플로러, 크롬, 파이어폭스, 사파리, 오페라)에서 제공하며, 새로운 실험적인 기능을 제공할 때 이전 버전의 웹 브라우저에 그 사실을 알려주기 위해 사용하는 접두사(prefix)를 의미
한다.
과거에는 CSS3 자체가 매우 실험적인 기능이라 벤더 프리픽스를 굉장히 많이 사용해야 했다. 하지만 현재는 대부분의 실험적인 기능이 실제 표준으로 들어가면서 벤더 프리픽스를 많이 사용하지 않아도 되게 바뀌었다.
하지만 현재도 추가되고 있는 새로운 실험적인 기능들에는 벤더 프리픽스를 사용해야 한다. .
.button {
background: -webkit-linear-gradient(red, yellow); <!-- 크롬과 사파리 4.0 이상을 위한 코드 -->
background: -moz-linear-gradient(red, yellow); <!-- 파이어폭스 3.6 이상을 위한 코드 -->
background: -ms-linear-gradient(red, yellow); <!-- 익스플로러 10.0 이상을 위한 코드 -->
background: -o-linear-gradient(red, yellow); <!-- 오페라 10.0 이상을 위한 코드 -->
}