::before와 ::after는 CSS에서 사용되는 가상 요소 선택자입니다. 이 두 가상 요소 선택자는 요소의 내용(content)의 앞(::before) 또는 뒤(::after)에 가상 요소를 생성하여 스타일을 적용할 수 있도록 합니다.
차이점은 다음과 같습니다:
1. 위치
::before
: 요소의 내용(content)의 앞에 가상 요소를 생성::after
: 요소의 내용(content)의 뒤에 가상 요소를 생성합니다.2. 생성 순서
::before
: 요소의 내용(content)의 앞에 생성되므로, 생성된 가상 요소는 실제 내용(content) 이전에 오게 됩니다. ::after
: 요소의 내용(content)의 뒤에 생성되므로, 생성된 가상 요소는 실제 내용(content) 이후에 위치합니다.3. 스타일 적용 : ::before
와 ::after
는 생성된 가상 요소에 스타일을 적용할 수 있습니다. 예를 들어, content, position, display, background, border, padding, margin, width, height, color, font-size 등의 CSS 속성을 사용하여 가상 요소의 스타일을 지정할 수 있습니다.
.dropDown_List:first-child {
/* 첫 번째 요소에 상단만 border-radius 적용 */
border-radius: 12px 12px 0 0;
position: relative;
}
.dropDown_List:first-child::after {
/* 가상요소에 삽입될 콘텐츠 정의 */
content: "";
position: absolute;
top: -10px;
left: 57%;
transform: translateX(-50%);
border-width: 0 10px 10px; /* 삼각형의 크기에 따라 조정합니다 */
border-style: solid;
border-color: transparent transparent #000; /* 삼각형의 색상을 설정합니다 */
}
1. position: relative:
2. position: absolute:
// 이미지 안에 별 아이콘 넣을때 사용
.product_profile {
/* 별 아이콘을 이미지 안에 넣어주기 위해 아이콘의 부모요소에 relative 추가 */
position:relative;
}
.star_icon {
position: absolute;
top: 5px;
right: 5px;
}
: 요소의 쌓임 순서를 결정
.box1 {
z-index: 2;
}
.box2 {
z-index: 1;
}
z-index
를 주어 드롭다운이 잘 표시되도록 해줌.dropDown_container{
display: flex;
flex-direction: column;
position: absolute;
/* 햄버거 아래로 맞추기 위한 코드 */
top: 90%;
right: 0%;
background-color: white;
border-radius: 12px;
z-index: 2; // 추가
}
.product_profile {
/* 별 아이콘을 이미지 안에 넣어주기 위해 아이콘의 부모요소에 relative 추가 */
/* relative: 요소를 기본 문서 흐름에 따라 배치한 다음,
해당 요소의 위치를 기준으로 자신을 이동시키는것을 의미 */
position:relative;
}