position: relative;
position: absolute;
CSS의 position
속성은 요소의 위치를 지정하는 데 사용된다. position
속성은 다음과 같이 다섯 가지 값으로 설정할 수 있다:
static
position: static
은 요소의 기본값이며, 일반적인 문서 흐름(flow)에 따라 배치된다.top
, right
, bottom
, left
, z-index
와 같은 추가적인 위치 조정 속성을 사용할 수 없다.relative
position: relative
은 요소를 일반적인 문서 흐름에 따라 배치한 후, 자기 자신을 기준으로 위치를 상대적으로 조정한다.top
, right
, bottom
, left
, z-index
등의 속성을 사용하여 위치를 조정할 수 있다.absolute
position: absolute
는 요소를 가장 가까운 부모 요소 중 position: static
이 아닌 첫 번째 부모 요소를 기준으로 위치를 설정한다.position: relative
, position: absolute
, 또는 position: fixed
등이 지정되어야 자식 요소의 absolute
위치가 올바르게 동작한다.top
, right
, bottom
, left
, z-index
등의 속성을 사용하여 위치를 조정할 수 있다.fixed
position: fixed
는 요소를 뷰포트(화면)에 상대적으로 고정된 위치에 배치한다.top
, right
, bottom
, left
, z-index
등의 속성을 사용하여 위치를 조정할 수 있다.sticky
position: sticky
는 요소를 일반적인 문서 흐름에 따라 배치하며, 스크롤이 특정 임계점에 도달할 때까지 상대적인 위치에 고정된다.top
, right
, bottom
, left
, z-index
등의 속성을 사용하여 위치를 조정할 수 있다.pseudo class는 콜론 하나 만을 사용했고, pseudo element는 콜론 두 개를 사용한다.
pseudo element는 html에 존재하는 element는 아니며 CSS에서 선택하고 스타일링 할 수 있다.
(예) 단락의 첫 글자, 단락의 첫 줄, …
h1::first-letter{
font-style: normal;
margin-right: 5px;
}
h2::first-letter{
font-size:80px;
}
HTML에 새로운 요소를 추가하지 않고, 특정 요소의 내용(content) 앞과 뒤에 가상의 요소를 생성하여 스타일을 적용할 수 있게 해준다.
::before
::before
는 선택한 요소의 첫 번째 자식 요소로 생성되는 가상 요소이다.
content
속성을 사용하여 생성된 가상 요소의 콘텐츠를 정의할 수 있다.
가상 요소에 스타일을 적용하여 요소의 앞쪽에 임의의 콘텐츠를 추가할 수 있다.
예시:
h2{
position: relative;
}
h2::before{
content:"TOP";
background-color: #ffe70e;
color: #000;
font-size: 16px;
font-weight: bold;
display: inline-block;
padding: 5px 10px;
position: absolute;
top: -10px;
right: -25px;
}
::after
::after
는 선택한 요소의 마지막 자식 요소로 생성되는 가상 요소이다.
content
속성을 사용하여 생성된 가상 요소의 콘텐츠를 정의할 수 있다.
가상 요소에 스타일을 적용하여 요소의 뒤쪽에 임의의 콘텐츠를 추가할 수 있다.
예시:
h2{
position: relative;
}
h2::after{
content:"TOP";
background-color: #ffe70e;
color: #000;
font-size: 16px;
font-weight: bold;
display: inline-block;
padding: 5px 10px;
position: absolute;
top: -10px;
right: -25px;
}
대표적인 예시
::before
, ::after
: display: inline
::first-letter
: display: inline
::first-line
: display: block
가상 요소는 일반적으로 inline으로 처리되지만, CSS를 사용하여 가상 요소에 직접 display
속성을 지정할 수도 있다.
모든 CSS property를 외울 필요 없다. ‘css + 원하는 기능’ 구글링해서 찾아보면 된다.
이 때,
W3schools → ❌ (좋지 않은 레퍼런스)
stackoverflow → ⭕ (개발자들의 많은 질문이 올라오는 곳. Q&A 사이트)
CSS-Tricks → ⭕
mdn → ⭕ (mdn documentation 제공
예시
border은 한 번에 여러 값을 적을 수 있는 shorthand 이고, 그 값은 border-width, border-style, 그리고 border-color이다.
text-align은 블록 요소 내에서 적용된다. 따라서 <a>
와 같은 요소에 text-align을 적용해도 변화가 없고, <a>
를 감싸는 block-box인 부모 요소에 text-align을 적용해야 가운데 정렬된다.
레이아웃에는 Page Layout 과 Component Layout이 존재한다.
flexbox나 grid로 대체되는 부동 소수점 옛날 방식
💡 html에서 lorem을 쓰고 엔터를 누르면 가짜 텍스트들이 입력된다./* FLOATS */
.author-img{
float: left;
margin-bottom: 20px;
}
.author{
float: left;
margin-top: 10px;
margin-left: 20px;
}
float
는 CSS 속성 중 하나로, 요소를 좌우 방향으로 띄워서 텍스트나 다른 요소가 주위를 감쌀 수 있게 하는 역할을 한다. float
속성을 사용하면 요소가 일반적인 문서 흐름에서 빠져서 주위 요소의 주변으로 이동하게 된다.float
속성은 주로 다음과 같이 사용된다.float
를 사용하여 이미지를 텍스트와 나란히 띄워 정렬할 수 있다. 예를 들어, 이미지를 왼쪽으로 float: left;
설정하면 텍스트가 이미지의 오른쪽에 흐르게 된다.float
를 사용하여 다단 컬럼 레이아웃을 생성할 수 있습니다. 여러 개의 컬럼을 만들어 요소들을 나란히 배치할 수 있다.float
를 사용하여 특정 요소를 다른 요소의 왼쪽이나 오른쪽에 배치하여 레이아웃을 구성할 수 있다.float
속성은 주의할 점이 있다. float
된 요소는 일반적인 문서 흐름에서 빠져나오기 때문에, 부모 요소의 높이가 사라지는 문제가 발생할 수 있다. 이를 해결하기 위해 clear
속성을 사용하여 부모 요소를 float
된 요소 아래로 밀어내는 것이 일반적입니다.최근에는 float
속성보다는 Flexbox나 Grid와 같은 레이아웃 기술을 사용하여 더 강력하고 유연한 레이아웃을 구성하는 것이 권장되고 있다.
<header class="main-header">
<h1>📘 The Code Magazine</h1>
<nav>
<a href="blog.html">Blog</a>
<a href="#">Challenges</a>
<a href="#">Flexbox</a>
<a href="#">CSS Grid</a>
</nav>
<div class="clear"></div>
</header>
h1{
float: left;
}
nav{
float: right;
}
.clear{
clear: both;
}
<header class="main-header clearfix">
<h1>📘 The Code Magazine</h1>
<nav
<a href="blog.html">Blog</a>
<a href="#">Challenges</a>
<a href="#">Flexbox</a>
<a href="#">CSS Grid</a>
</nav>
</header>
h1{
float: left;
}
nav{
float: right;
}
.clearfix::after{
clear: both;
content: '';
display: block;
}