반응형

### 모든 요소는 딱 한 개의 display 값을 갖고 있다!

 

1. display 종류 

 

- inline display : 다른 요소들과 같은 줄에 머무르려고 하는 성향, 필요한 만큼의 가로 길이만 차지하는 성향

=> 기본 display : inline ==> <span> / <a> / <b> / <i> / <img> / <button>

 

-block display : 다른 요소들과 독단적인 줄에 가려고 하는 성향, 최대한 많은 가로 길이를 차지하는 성향

=> 기본 display : block ==> <div> / <h1> ~ <h6> /  <p> / <nav> /  <ul>  / <li> 

 

 

- display  바꾸기 (css 에서 바꿀 수 있음)

=> inline -> block

 

1
2
3
4
{
  display: block; /* <i> 태그를 block으로 바꾸기 */
  background-color: green;
}
cs

 

 

=> block -> inline

 

1
2
3
4
5
6
7
8
9
10
11
12
div {
  display: inline; /* <div> 태그를 inline으로 바꾸기 */
}
 
.div1 {
  background-color: green;
}
 
.div2 {
  background-color: blue;
}
 
cs

 

 

2. inline-block 

 

## block 요소에는 가로 , 세로 길이 직접 설정가능하지만 / inline 요소는 자동으로 설정 

 

- inline요소처럼 다른 요소와 같은 줄에 머물며 block 요소처럼 가로, 세로 길이도 설정해주고 싶다면? 

=> inline-block 사용

1
2
3
4
5
6
7
{
  display: inline-block;
  width: 200px;
  height: 200px;
  background-color: green;
}
 
cs

 

3. <img> 태그의 비밀

1
<div class="container">아이스크림<img src="images/ice_cream.png" height="100">먹고싶다!</div>
cs

 

## 사실 , <img>태그는 대체요소(replaced element)라고 함

    -> 가로, 세로를 정할 수 있는 특별한 inline

-> 텍스트처럼 다룰 수 있음 (vertical-align)

-> 상위 class 또한 text-align으로 사용 가능 

 

##다시 한번 이미지를 가운데 정렬하는 방법/부모에게 text-align을 줘도 가운데 정렬 가능하지만 조금 부적합함

1
2
3
4
5
img{
    display: block;
    margin-left: auto;
    margin-right: auto;
}
cs

 

4. 다양한 링크 

    

<html>

1
2
3
4
5
<a class="google-link" href="https://google.com" target="_blank">
<img src="images/google.png" width="200">
<h1>구글</h1>
<p>이걸 누르면 구글로 갑니다!</p>
</a>
cs

<css>
1
2
3
4
5
.google-link{
    display:block;
    color: black;
    text-decoration:none;
}
cs

 

5. Baseline

## text : 바로 밑이 baseline

## img : 사진 바로 밑이 baseline

 

6. vertical-align 

 

-base line : vertical-align의 조건들을 충족시키면서, 줄의 높이를 최소화시키는 곳에 위치

 

7. 세로 가운데 정렬 꿀팁

 

<가로 가운데 정렬>

- inline & inline-block 요소 : 부모 태그에 text-align:center;

1
2
3
4
.container {
  text-align: center;
  background-color: lime;
}
cs

 

-block 요소 : margin-left: auto; , margin-right: auto;

1
2
3
4
5
6
7
.block-element {
  width: 100px;
  height: 50px;
  margin-left: auto;
  margin-right: auto;
  background-color: lime;
}
cs

 

<세로 가운데 정렬>

#vertical-align 속성은 인라인, 인라인 블록에서만 적용 

-가짜 요소 더하기(세로 길이 100%인 요소 생성 -> 그 요소에 vertical-align: middle; -> 띄어쓰기 공간만큼 마이너스여백 주기)

<html>

1
2
3
4
5
6
7
8
<div class="container">
  <div class="helper"></div>
  <div class="info">
    <h1>Hello!</h1>
    <p>My name is young.</p>
  </div>
</div>
 
cs

<css>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
.container {
  width: 300px;
  height: 400px;
  background-color: gray;
  text-align: center;
}
 
.helper {
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}
 
.info {
  background-color: lime;
  display: inline-block;
  vertical-align: middle;
  width: 100%;
 
  /* 이 경우 띄어쓰기는 5px 정도였습니다! */
  margin-left: -5px;
}
cs

 

-line-height으로 해결(info를 인라인 블록으로 설정 -> 부모에 line height -> info에 line-height: normal;(자식들에게 상속되기에)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.container {
  width: 300px;
  height: 400px;
  background-color: gray;
  text-align: center;
  line-height: 400px;
}
 
.info {
  background-color: lime;
  display: inline-block;
  line-height: normal;
  vertical-align: middle;
}
 
cs

 

반응형

'Web > HTML & CSS' 카테고리의 다른 글

9. float  (0) 2019.03.21
8. Positioning  (0) 2019.03.21
6. CSS 활용  (0) 2019.03.12
5. BOX Model -(2)  (0) 2019.03.12
5. BOX Model -(1)  (0) 2019.03.03

+ Recent posts