필수 조건은 아래 두개를 만족해야 합니다.
1. 블록 레벨 요소여야 함 (display: block, grid, flex 등)
2. 너비가 지정되어 있어야 함 (width, max-width)
대표적으로 작동하지 않는 케이스들입니다
1. position: absolute 또는 fixed 가 아니여야 합니다.
(일반적인 문서 흐름에서 요소를 제거하기 때문)
<style>
/* 방법 1: left, transform 사용 */
.element1 {
position: absolute;
width: 200px;
left: 50%;
transform: translateX(-50%);
}
/* 방법 2: left, right 사용 */
.element2 {
position: absolute;
width: 200px;
left: 0;
right: 0;
margin: 0 auto;
}
</style>
2.float 속성이 적용된 경우
<style>
.element {
float: left; /* 또는 right */
width: 200px;
margin: 0 auto; /* 작동하지 않음 */
}
</style>
3.부모 요소에 display: flex가 적용된 경우
<style>
.parent {
display: flex;
}
.child {
width: 200px;
margin: 0 auto; /* 작동하지 않음 */
}
/* 대신 부모에 justify-content: center; 사용 */
</style>
4.transform 속성이 적용된 경우
<style>
.element {
width: 200px;
transform: scale(1.2);
margin: 0 auto; /* 예상대로 작동하지 않을 수 있음 */
}
</style>
5. calc()로 동적 너비가 설정된 경우
<style>
.element {
width: calc(100% - 20px);
margin: 0 auto; /* 의도한대로 작동하지 않을 수 있음 */
}
</style>
'TroubleShooting > CSS' 카테고리의 다른 글
[tailwind 4] Tailwind CSS에서 배경 이미지와 그라디언트 효과 동시 적용하기 (0) | 2025.01.31 |
---|---|
CSS에서 max-width 설정 시 반응형 중앙 정렬 문제 해결하기 (tailwind : max-w-screen-sm) (0) | 2025.01.31 |
[CSS] Grid의 Subgrid 속성 이해하기 - 별점 레이아웃 예제 (0) | 2025.01.25 |
[TroubleShooting / CSS] button border ( border: none ) (0) | 2024.09.30 |