📦 CSS/CSS

[CSS] 디스플레이 속성

하나둘세현 2022. 11. 5. 18:37
728x90

디스플레이 속성은 많은 기능을 갔고 있다. 

h1 {
    background-color: palegoldenrod;
    border: 1px solid black;
}

요소가 알아서 최대한으로 길어졌다. 이런 경우는 전체가 바디인것이다. 

모든 헤딩 요소는 블록 레벨 요소가 되었다.

헤딩은 문단이나 디폴트 블록 레벨 같은 다른 요소이다. 

span {
    background-color: paleturquoise;
    border: 1px solid black;
}

span은 기본 값이 인라인이다. 줄 전체를 차지하지 않았기 때문이다. 다른 요소나 내용을 밀어내지 않는다. 

그러나 디스플레이 특성으로 이것을 바꿀 수 있다. 

h1의 디스플레이를 인라인으로 설정할 수 있다.

h1 {
    background-color: palegoldenrod;
    border: 1px solid black;
    display: inline;
}

크기는 조금 크지만 inline요소처럼 동작한다. 다른 라인으로 바뀌지 않고 스크린의 공간도 차지 하지 않았다. 

span태그 역시 block요소를 통해 헤딩태그처럼 할 수 있다. 

인라인이었던 span이 가로 공간 전체를 차지하고 있다. 블록 레벨 요소처럼 작동함으로 이 라인에 오면 못 오게 밀어낸다.

 

인라인 블록 레벨 요소가 여백, 패딩, 가로, 세로와 함께 가능하기 때문이다. 

span {
    background-color: palevioletred;
    border: 1px solid black;
    width: 500;
}

요소가 인라인 디스플레이라면 너비, 높이는 무시된다. 

span {
    background-color: palevioletred;
    border: 1px solid black;
    width: 500;
    padding: 10px;
}

이 패딩은 제대로 적용이 되었다. 내용을 밀어내지도 않았다. 그리고 공간도 차지하지 않았다. 그러나 내용을 덮고 있꺼나 내용 아래에 깔려있게 된다. 그러나 배경색이 없으면 겹쳐지는 걸 밀어내지 않는다. 패딩은 요소의 하나로서 존재하고 있지만 나머지 내용에 영향을 주지 않는다.

요소가 인라인 디스플레이이면 너비나 높이는 무시한다. 

 

span {
    background-color: palevioletred;
    border: 1px solid black;
    width: 500px;
    padding: 100px;

}

padding을 100px만큼 키워봤다. 배경색때문에 잘 안보이지만 매우 큰 블록이 되었다. 내용을 밀어내지도 않고 공간도 차지하지 않는다. 단지 내용을 덮거나 깔았다. 만일 padding에 배경색을 없애면 겹쳐진것을 밀어내지 않는게 보일것이다.

➡️padding은 요소의 하나로서 존재하지만 나머지 내용에 영향을 주지 않는다.

span {
    background-color: palevioletred;
    border: 1px solid black;
    width: 500px;
    padding: 100px;
    margin: 50px;

}

margin에 50px을 설정했더니 가로줄(I am span!) 하나에만 영향을 미쳤다.  이 줄은 인라인 줄이다. 

  Block(블록)

2개의 블록요소가 생겼다. 

h1 {
    background-color: paleturquoise;
    border: 1px solid black;
    width: 300px;
}

이제 300px의 가로가 생겼다. 

블록라인 같은 경우에는 다 밀어냈다.

Inline-Block(인라인 블록)

인라인 처럼 작동하지만 가로, 세로, 여백, 패딩이 제대로 적용된다.

div {
    height:200px;
    width: 200px;
    background-color: orange;
    border: 5px solid red;
}

일단 <body>에 3개의 div를 적어봤다. 그리고 css에는 가로, 세로, 배경색, 경계선을 넣어봤다. 그랬더니 

 

오렌지 컬러의 직사각형이 생겼다. 왜 직사각형일까?

블록레벨이어서 그렇다. 그래서 블록 전체가 차지한다는 것이다. 

보이는 대로 배경색은 오렌지색이 적게 표현되지만 인라인 요소가 아니여서 공간을 공유하지 않는것이다.

div {
    height:200px;
    width: 200px;
    background-color: orange;
    border: 5px solid red;
    display: inline;
}

display에 inline을 적었더니 

작은 정사각형이 생겼다. 도대체 왜?

왜냐하면 인라인 요소에는 가로와 세로가 적용되지 않는다.

div {
    height:200px;
    width: 200px;
    background-color: orange;
    border: 5px solid red;
    display: inline-block;
}

display: inline-block;으로 작성하면 인라인처럼 작동한다!

공간을 공유하며 같은 라인에 나란히 있다. but,박스모델과 관련된 모든 측성은 잘 작동한다. 가로, 세로 값도 적용되고 여백도 적용될것이다. 

div {
    height:200px;
    width: 200px;
    background-color: orange;
    border: 5px solid red;
    display: inline-block;
    margin: 50px;
}

여백을 설정하면? 잘 설정된다. 

 

 

디스플레이를 없음으로 설정해 요소를 쉽게 숨기는 방법이 있다. 기존에 div에 적었던 display 설정을 없애고 <h1>에 display를 적어 none으로 작성하면 ?

h1 {
    background-color: paleturquoise;
    border: 1px solid black;
    width: 300px;
    height: 200px;
    padding: 50px;
    margin: 100px;
    display: none;
}

h1박스가 사라진다. 요소 자체가 삭제되는 건아니다. 문서 내 여전히 존재한다. 즉 h1은 있지만 공간을 차지하지 않는다.

display없음으로 설정해 화면상에 보이지 않는 것이다.

 

모든 헤딩 요소는 블록 레벨 요소가 되었다.

헤딩은 문단이나 디폴트 블록 레벨 같은 다른 요소이다. 

span은 기본값이 인라인이다. 줄 전체를 차지 하지 않는다. 다른 요소나 내용을 다른 줄로 밀어내지도 않는다. 

h1의 블록 레벨 요소와는 다르다.

 


헤딩태그란?

heading은 단락의 제목(헤딩)을 표현할 대 사용되는 태그이다. 

728x90