우리 모두는 margin:auto를 사용하면 요소를 수평으로 중앙에 배치할 수 있다는 것을 알고 있습니다. 하지만 margin:auto를 사용하여 요소를 수평으로 가운데에 배치할 수 있는 이유에 대해 생각해 본 적이 있습니까? 이 질문에 대답하려면 먼저 margin:auto가 어떻게 작동하는지 살펴봐야 합니다. 자동이 수직 센터링에 적합하다면 구체적인 내용을 살펴보겠습니다.
우선 자동은 무슨 일을 하나요?
요소 유형과 상황에 따라 달라지는 자동 요소를 정의하세요. 여백에서 자동은 사용 가능한 공간을 차지하거나 0픽셀을 차지한다는 두 가지 의미를 가질 수 있습니다. 이 두 가지는 요소에 대해 서로 다른 레이아웃을 정의합니다.
"자동으로" 사용 가능한 공간을 차지합니다
이것은 우리가 자동을 사용하는 가장 일반적인 방법입니다. 자동 요소의 왼쪽 및 오른쪽 여백을 할당하면 요소 컨테이너에서 사용 가능한 수평 공간을 동일하게 차지하므로 요소가 중앙에 배치됩니다.
<div id="outer"> <div id="inner"></div> </div>
#inner {
margin: auto;
width: 250px;
height: 125px;
background-image: linear-gradient(45deg, #84ECEF 10%, #F8F62F 60%, #FDC018);
}
#outer {
height: 500px;
width: 500px;
background: #1F1D20;
background-image: linear-gradient(#757575 1px, transparent 1px), linear-gradient(90deg, #757575 1px, transparent 1px);
background-size: 25px 25px;
}효과는 다음과 같습니다.

그러나 이것은 수평 여백에서만 작동하고 부동 및 인라인 요소에서는 작동하지 않으며 절대 및 고정 위치 요소에서는 자체적으로 작동하지 않습니다.
추천 매뉴얼: CSS 온라인 매뉴얼
자동 왼쪽 및 오른쪽 여백이 "사용 가능한" 공간을 균등하게 차지하므로, 그 중 하나만 자동으로 제공하면 어떻게 될 것이라고 생각하시나요?
왼쪽 또는 오른쪽 여백 자동은 "사용 가능한" 공간을 모두 차지하므로 요소가 오른쪽이나 왼쪽으로 오프셋된 것처럼 보입니다.
<div id="outer"> <div id="inner"></div> </div>
#inner {
margin-right: auto;
width: 250px;
height: 125px;
background-image: linear-gradient(45deg, #84ECEF 10%, #F8F62F 60%, #FDC018);
}
#outer {
height: 500px;
width: 500px;
background: #1F1D20;
background-image: linear-gradient(#757575 1px, transparent 1px), linear-gradient(90deg, #757575 1px, transparent 1px);
background-size: 25px 25px;
}효과는 다음과 같습니다.

"auto"는 0px입니다
앞서 언급했듯이 auto는 부동, 인라인 및 절대 요소에서는 작동하지 않습니다. 이러한 모든 요소에는 이미 레이아웃이 결정되어 있으므로 여백에 대한 자동이 없으며 이렇게 중앙에 배치될 것으로 예상됩니다.
이렇게 하면 float와 같은 것을 사용하는 원래 목적이 무산됩니다. 따라서 이러한 요소의 자동 값을 0px로 설정하십시오.
auto는 너비가 없는 일반적인 블록 요소에서도 작동하지 않습니다. 지금까지 보여드린 모든 예에는 너비가 있습니다.
값의 너비 자동은 0px 여백을 갖습니다. 블록 요소의 너비는 일반적으로 전체 컨테이너를 포함하며 자동 또는 100%이므로 margin:auto는 0px로 설정됩니다.
자동을 세로로 설정하면 어떤 모습일까요?
auto는 항상 위쪽 및 아래쪽 여백을 0px로 계산합니다(절대 요소 제외). W3C 사양에서는 다음과 같이 말합니다.
""margin-top" 또는 "margin-bottom"이 "auto"인 경우 사용 값은 0입니다."
지금까지 이것이 언급되지 않은 이유. 이는 아마도 페이지 크기가 높이 증가하는 일반적인 수직 페이지 흐름 때문일 것입니다. 따라서 페이지 자체를 기준으로 컨테이너에서 요소를 수직으로 중앙에 배치하면 수평으로 수행하는 것과 달리(대부분의 경우) 중앙에 표시되지 않습니다.
아마도 같은 이유로 페이지 전체 높이에서 세로 중앙에 배치될 수 있는 절대 요소에 대한 예외를 추가하기로 결정했습니다.
이는 수직 여백의 또 다른 예외인 가장자리 붕괴 효과(인접 요소의 "가장자리" 붕괴) 때문일 수도 있습니다.
그러나 후자는 가능성이 낮은 시나리오인 것 같습니다. 요소가 마진을 축소하지 않고 플로트처럼 표시되고 다른 요소가 오버플로되어 표시되지만 여전히 0px 수직 여백이 자동으로 할당되어 있습니다.
추천 관련 글:
1.CSS에서 여백이 작동하지 않는 이유와 해결책
추천 동영상:
1.CSS 동영상 튜토리얼-옥소녀심경편
절대 위치 요소 센터
절대 위치에 있는 요소에 이상이 있는 경우가 있으므로 자동 값을 사용하여 수직 및 수평 중앙에 배치하겠습니다. 하지만 그 전에 우리는 절대 위치에 있는 요소에서 우리가 원하는 대로 margin:auto가 실제로 작동하는지 알아내야 합니다.
또 다른 W3C 사양이 들어오는 곳은 다음과 같습니다.
""왼쪽", "너비" 및 "오른쪽" 세 개가 모두 "자동"인 경우: 먼저 "margin-left" 및 "margin- "auto" 값을 변경합니다. right"는 0으로 설정됩니다... 세 가지 중 어느 것도 "auto"가 아닌 경우 "
": "margin-left" 및 "margin-right"가 모두 "auto"인 경우 추가로 제약 조건 하에서 방정식을 풉니다. 두 여백이 동일한 값을 얻습니다."
이것은 수평 자동 여백의 경우 간격을 잡는 것이 동일하면 왼쪽, 너비 및 오른쪽 값이 기본값인 자동이 아니어야 한다는 것을 의미합니다. 따라서 우리가 해야 할 일은 절대 위치에 있는 요소에 값을 부여하는 것뿐입니다. 완벽한 센터링을 위해서는 왼쪽과 오른쪽의 값이 동일해야 합니다.
사양에는 수직 여백과 같은 내용도 언급되어 있습니다.
""상단", "높이", "하단" 3개가 모두 자동이면 "상단"을 고정 위치로 설정하세요..."
“如果三者中没有一个是”自动“:如果”margin-top“和”margin-bottom“都是”auto“,则在额外约束下解决方程式,即两个边距得到相等的值......”
因此,对于一个绝对元件被垂直居中,其top,height和bottom值不应该auto。
现在结合所有这些,这是我们将得到的:
<div id="outer"> <div id="inner"></div> </div>
HTML
CSS
Result
EDIT ON#inner {
margin: auto;
position: absolute;
left: 0px;
right: 0px;
bottom: 0px;
top: 0px;
width: 250px;
height: 125px;
background-image: linear-gradient(45deg, #84ECEF 10%, #F8F62F 60%, #FDC018);
}
#outer {
position: relative;
height: 500px;
width: 500px;
background: #1F1D20;
background-image: linear-gradient(#757575 1px, transparent 1px), linear-gradient(90deg, #757575 1px, transparent 1px);
background-size: 25px 25px;
}效果如下:

最后
如果您想要将页面上的元素向右或向左偏移而没有包含它的其他元素(就像浮点数一样),请记住有auto用于边距的选项。
将元素转换为绝对定位只是为了使它可以垂直居中可能不是一个好主意。还有其他选项,如flexbox和CSS变换,更适合那些。
위 내용은 CSS에서 margin:auto는 무엇을 의미하나요? margin:auto 속성 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
'Border-Radius'와 'Border-Image'의 차이점은 무엇입니까?Jul 21, 2025 am 03:47 AMBorder-Radius는 둥근 코너 디자인에 사용되며 Border-Image는 이미지 테두리에 사용됩니다. 1. Border-Radius는 둥근 모서리의 반경을 설정하여 요소 코너의 부드러운 처리를 깨닫습니다. 버튼 및 카드와 같은 현대적이고 간단한 디자인에 적합합니다. 2. Border-Image는 이미지와 절단 방법을 지정하여 복잡한 경계를 만듭니다. 이는 장식용 또는 불균일 한 경계가 필요한 디자인에 적합합니다. 3. 두 사람은 결합하여 사용될 수 있으며 먼저 Border-Radius를 사용하여 둥근 모서리를 만들고 Border-Image를 사용하여 장식 테두리를 추가하십시오.
CSS` 변형 '속성은 무엇입니까?Jul 21, 2025 am 03:46 AMCSStrAnsform은 문서 흐름에 영향을 미치지 않고 요소의 모양, 위치 또는 방향을 시각적으로 변경하는 데 사용됩니다. 1. Translate () 함수는 재정렬을 유발하지 않고 요소를 움직일 수 있으며 종종 부드러운 애니메이션에 사용됩니다. 2. 회전 (), scale () 및 skew ()는 회전, 스케일 및 기울기 요소를 호버링 효과 및 레이아웃 설계에 적합 할 수 있습니다. 3. 전환과 함께 변환을 사용하여 부드러운 반응 형 애니메이션을 만들어 대화식 경험을 향상시킵니다. 4. 3D 애니메이션 효과는 TransLateZ (), rotatex () 및 perspective ()를 통해 달성 할 수 있지만 과도한 복잡성을 피하기 위해 합리적인 사용에주의를 기울여야합니다.
CSS로 반응 형 레이아웃을 만드는 방법은 무엇입니까?Jul 21, 2025 am 03:45 AM반응 형 레이아웃의 핵심은 주로 미디어 쿼리, Flexbox 및 그리드를 통해 다양한 화면 크기에 자동으로 적응하는 것입니다. 1. 미디어 쿼리를 사용하여 화면 너비 (768px, 480px)에 따라 중단 점을 설정하면 최소 폭 및 최대 폭 간격을 사용하여 스타일을 제어하는 것이 좋습니다. 2. Flexbox는 1 차원 레이아웃에 적합하며 Flex-Wrap 라인 브레이크 및 정당화에 의해 정렬되며, 하위 요소는 Flex : 11300px로 설정되어 탄성을 달성합니다. 3. CSSGRID는 복잡한 2 차원 레이아웃에 사용되며 Auto-Fit 및 MinMax ()를 사용하여 열의 숫자와 너비를 자동으로 조정하고 간격을 제어하기 위해 간격을 사용합니다. 4. 사진에서 최대 세기를 설정하십시오
CSS로 원을 만드는 방법Jul 21, 2025 am 03:44 AMCSS를 사용하여 원을 그리려면 1. 폭과 높이의 동일한 블록 요소를 설정합니다. 2. Border-Radius : 50%를 사용하여 원을 형성합니다. 3. 플렉스 레이아웃 또는 라인 높이를 중앙 컨텐츠와 결합 할 수 있습니다. 4. 스타일이 적용되도록 요소가 블록 레벨 또는 인라인 블록 레벨인지 확인하십시오. 이러한 단계를 통해 표준 및 확장 가능한 원이 달성 될 수 있습니다.
외부 CSS 파일을 어떻게 포함시킬 수 있습니까?Jul 21, 2025 am 03:41 AM웹 개발에서 외부 CSS 파일을 도입하는 올바른 방법은 태그를 사용하는 것입니다. 1. HTML 파일 부분에 추가하십시오. 2. 파일 이름 케이스, 디렉토리 레벨 및 파일이 존재하는지 포함하여 경로가 올바른지 확인하십시오. 3. 브라우저 개발자 도구를 통해로드 상태를 확인할 수 있습니다. 4. 여러 CSS 파일을 순서대로 소개 할 수 있으며 나중에 소개 된 스타일은 동일한 이름의 이전 규칙을 덮어 쓰므로 일반적인 스타일을 먼저로드해야합니다. 일반적인 문제를 피하기 위해 경로와 구문에주의하십시오.
CSS calc () 기능 예제Jul 21, 2025 am 03:41 AMcalc () 함수는 CSS의 스타일 값을 동적으로 계산하는 데 사용됩니다. 폭과 같은 연산자 전후에 공백이 있어야한다는 점에 유의해야합니다. calc (100%-20px); 1. 구문의 주요 포인트 : calc (표현), 추가, 뺄셈, 곱셈 및 분할 연산자 전후의 공간이 있어야합니다. 그렇지 않으면 브라우저가 무시합니다. 2. 픽셀, 백분율 등과 같은 다양한 장치의 혼합 작업을 지원하며 브라우저는 자동으로 변환을 처리합니다. 3. 일반적인 응용 시나리오 시나리오는 .container {width : calc (100%-30px);}와 같은 반응 형 레이아웃의 유연한 폭 설정이 포함됩니다. 4. 래스터 시스템에서 요소를 동일하게하고 .Box {width : calc ((100%-40px)/3);}; 5.
CSS 그리드로 그리드 레이아웃을 만드는 방법은 무엇입니까?Jul 21, 2025 am 03:31 AMCSSGRID 레이아웃을 구현하려면 5 가지 핵심 단계를 마스터해야합니다. 1. 컨테이너를 정의하고 행 및 열 구조를 설정하고 디스플레이를 사용하여 그리드-테드 플레이트-컬럼과 그리드 테드 플레이트 열을 결합하여 열과 행을 정의하고 반복 ()로 단순화 할 수 있습니다. 2. 간격 및 정렬을 제어하고, GAP, 정당화 항목 및 정렬 항목을 통해 전반적인 정렬, 정당화 및 정렬-스펠을 별도로 제어하기 위해 간격 및 열 간격을 제어합니다. 3. 영역 이름 지정을 사용하여 직관성을 향상시키고, 영역을 지명하고, 그리드-템플릿 영역을 통해 어린이를 할당하십시오. 4. 어린이의 유연한 위치
CSS에서 중요한 이유는 무엇입니까?Jul 21, 2025 am 03:26 AMCSS에서 중요한 사용은 CSS의 계단식 메커니즘을 깨고 특정 전쟁을 유발하기 때문에 유지 관리 및 디버깅 어려움을 유발할 수 있습니다. 문제는 다음과 같습니다. 1. 정상적인 특정 규칙을 덮어 쓰고 스타일 응용 프로그램을 예측할 수 없게합니다. 2. 후속 개발자가 더 많은 것을 사용하여 중요하며 스타일 혼란을 유발합니다. 3. 커버리지 선택기 또는 클래스 구조를 최적화하여 해결해야 할 기본 문제. 대안은 다음과 같습니다. 1.보다 구체적인 선택기를 사용하십시오. 2. CSS 순서를 조정하십시오. 3. 도구 우선 프레임 워크를 사용하십시오. 4. 모듈 식 CSS를 유지하십시오.


핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.







