웹/html & css
css semantic tag, position, float
쵠몽
2024. 11. 4. 17:46
시맨틱 태그(Semantic Tag)
- 문서의 구조와 콘텐츠 의미를 나타내는 역할을 하는 div 태그
- 검색 엔진 접근성을 개선하고 코드 가독성을 높이는 데 도움을 줌
- 태그의 이름만 다를 뿐 div 태그와 기능은 동일
- <header>: 페이지의 머리글로 내비게이션 메뉴 등을 포함한다.
- <footer>: 페이지의 꼬리글로 저작권 정보, 연락처, 링크 등을 포함한다.
- <nav>: 메뉴를 구성한다.
- <aside>: 콘텐츠와 관련성이 적은 보조 콘텐트
- <section>: 주제별로 콘텐츠의 구역을 나눌 때 사용한다.
- <article>: 독립적으로 구분되는 기사나 포스트, 배포 가능하거나 재사용할 수 있는 콘텐츠
- <main>: 문서의 주요 콘텐츠 부분
위치 지정 방식(Position)
1. 정적 위치 지정 방식 (position: static)
- position 속성의 초깃값
- HTML 문서에 작성된 순서대로 요소들의 위치가 결정된다.
- 요소가 겹치지 않는다.
2. 상대 위치 지정 방식 (position: relative)
- 원래 위치인 static position을 기준으로 위치를 재설정하는 방식
- top, left, right, bottom 속성을 사용한다.
- 요소가 겹쳐질 수 있다.
/* CSS */
div{ width: 200px; padding: 20px; }
.static{ background-color: darkcyan; }
.relative{
background-color: tomato;
position: relative;
left: 100px;
top: 50px;
}
<!-- HTML -->
<div class="static">static</div>
<div class="relative">relative</div>
3. 고정 위치 지정 방식 (position: fixed)
- 스크롤하여도 요소가 항상 지정된 위치에 고정되어 배치한다.
- top, left, right, bottom 속성을 사용한다.
/* CSS */
.fixed{
background-color: goldenrod;
position: fixed;
width: 100px;
height: 200px;
right: 10px;
bottom: 10px;
}
<!-- HTML -->
<div class="fixed">fixed</div>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptate, officiis ducimus. Sed, excepturi dignissimos? Sit, debitis! Placeat temporibus sed quidem reiciendis iusto, quam repellendus perferendis quisquam itaque tempore dolores odit.</p>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptate, officiis ducimus. Sed, excepturi dignissimos? Sit, debitis! Placeat temporibus sed quidem reiciendis iusto, quam repellendus perferendis quisquam itaque tempore dolores odit.</p>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptate, officiis ducimus. Sed, excepturi dignissimos? Sit, debitis! Placeat temporibus sed quidem reiciendis iusto, quam repellendus perferendis quisquam itaque tempore dolores odit.</p>
<!-- ... -->
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptate, officiis ducimus. Sed, excepturi dignissimos? Sit, debitis! Placeat temporibus sed quidem reiciendis iusto, quam repellendus perferendis quisquam itaque tempore dolores odit.</p>
4. 스티키 지정 방식 (position: sticky)
- 부모 요소 기준으로 relative 위치를 가지면서 기준점을 넘게 될 경우 fixed 성질을 가지는 지정 방식
- top, left, right, bottom 속성을 사용한다.
/* CSS */
html, body { margin: 0; padding: 0;}
.header { height: 80px; background-color: burlywood;}
.container { display: flex; flex-flow: row nowrap;}
.content { width: 80%; height: 800px; background-color: darkcyan;}
.sidebar{
position: sticky;
top: 30px;
width: 20%;
background-color: brown;
height: 400px;
}
.footer {
background-color: yellowgreen;
height: 100px;
}
<!-- HTML -->
<div class="header">헤더</div>
<div class="container">
<div class="content">메인 컨텐트</div>
<div class="sidebar">sticky 적용</div>
</div>
<div class="footer">푸터</div>
5. 절대 위치 지정 방식 (position: absolute)
- 속성이 부여된 부모를 기준으로 위치를 설정한다.
- 부모 요소가 없는 경우 body 기준으로 위치가 설정된다.
- 이때 absoute position의 부모 속성은 static position이 아니어야 한다.
/* CSS */
#wrap {
position: relative;
width: 500px;
height: 400px;
border: 3px solid red;
}
.box {
position: absolute;
width: 100px;
height: 100px;
background-color: deepskyblue;
}
#ab1 { top: 0; right: 0;}
#ab2 { bottom: 0; left: 0;}
#ab3 { bottom: 0; right: 0;}
#ab4 { top: 100px; left: 200px;}
<!-- HTML -->
<div id="wrap">
<div class="box" id="ab1"></div>
<div class="box" id="ab2"></div>
<div class="box" id="ab3"></div>
<div class="box" id="ab4"></div>
<div class="box" id="ab5"></div>
</div>
6. float, clear
float
- div와 같은 세로로 나열되는 HTML 요소를 가로 수평으로 나열되도록 해 주는 속성
- 보통은 float 속성보다 float과 비슷한 flex 속성을 주로 사용한다.
- float를 적용 받은 요소의 다음 요소는 끌어올려지며 left, right로 다음 요소의 방향을 설정할 수 있다.
clear
- float 속성이 적용된 이후 다음 요소가 float 속성에 영향을 받지 않도록 설정하고 싶을 때 사용한다.
- left, right, both
/* CSS */
img { float: left; margin-right: 20px; margin-bottom: 20px;}
hr { clear: both;}
div { padding: 20px; }
#box1 {
background-color: gold;
float: left;
margin-right: 20px;
}
#box2 {
background-color: gray;
float: left;
margin-right: 20px;
}
#box3 {
background-color: rosybrown;
float: left;
margin-right: 20px;
}
#box4 {
background-color: royalblue;
float: left;
margin-bottom: 20px;
}
p{
padding: 10px;
text-align: center;
font-size: 20px;
}
#p1 {
width: 38%;
background-color: cornflowerblue;
float: left;
margin-bottom: 20px;
}
#p2{
width: 53%;
background-color: khaki;
float: right;
}
#p3{
clear: both;
background-color: sienna;
}
<!-- HTML -->
<img src="./winter1.png" alt="겨울">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Fugiat omnis dolore porro minus nesciunt dolorum odit cumque doloremque id, illo est tenetur ducimus molestias ullam obcaecati? Quasi nemo voluptas velit?
<hr>
<div id="box1">박스1</div>
<div id="box2">박스2</div>
<div id="box3">박스3</div>
<div id="box4">박스4</div>
<hr>
<div id="p1">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusantium tempora iure exercitationem nam doloribus consectetur at, blanditiis modi laboriosam sapiente saepe deserunt, quasi suscipit perferendis nemo esse maxime placeat quam!</p>
</div>
<div id="p2">
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Doloribus, suscipit illo? Praesentium nam iusto vel dolor molestias facilis dicta voluptate neque harum cupiditate, enim minima. Tempora a vero dolores placeat!</p>
</div>
<div id="p3">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestias nemo voluptas voluptates hic. Illo, voluptates cum. Praesentium, temporibus iure voluptate perspiciatis explicabo deserunt, pariatur, non magni est consectetur distinctio nobis?</p>
</div>