목차
5.3 优缺点:
웹 프론트엔드 CSS 튜토리얼 CSS의 수직 및 수평 센터링 구현 방법 요약(코드 포함)

CSS의 수직 및 수평 센터링 구현 방법 요약(코드 포함)

Oct 17, 2018 pm 03:26 PM
css html

이 글은 CSS의 수직 및 수평 센터링 구현 방법을 요약한 것입니다(코드 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

최근 저는 다음과 같은 인터뷰 질문을 많이 보았습니다. CSS를 사용하여 수직 및 수평 센터링을 달성하는 몇 가지 방법을 알려주십시오. CSS의 기초를 읽다가 완전 센터링에 대해 이야기하는 기사를 봤습니다. 기사 내용을 요약하면 다음과 같습니다.

1. 절대(Absolute Centering) 사용

1.1 구체적인 코드는 다음과 같습니다.

.container {
    position: relative;
}

.absolute_center {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 50%;
    height: 50%;
    margin: auto;
    padding: 20px;
    overflow: auto;
}
로그인 후 복사
<div>
    <div>
        <ul>
            <li>
                该方法的核心思想是是使用绝对定位布局,使当前元素脱离正常的流体特性,而使用absolute的流体特性
            </li>
        </ul>
    </div>
</div>
로그인 후 복사

CSS의 수직 및 수평 센터링 구현 방법 요약(코드 포함)

1.2 이 방법의 핵심 아이디어는 다음과 같습니다.

위치 지정 및 레이아웃에 절대값을 사용하고, 블록 요소의 일반적인 유동적 특성에서 벗어나 블록 요소의 유동적 특성을 사용합니다. 절대 수직 및 수평 센터링을 완료합니다.

다음은 알아야 할 두 가지 기본 지식입니다.

1. 유체 특성:
div 요소와 같은 블록형 수평 요소는 기본적으로 자동으로 수평 방향을 채웁니다(비부동, 절대 위치 지정, 등) 전체 외부 컨테이너, 왼쪽 여백/오른쪽 여백, 왼쪽 여백/오른쪽 여백, 테두리 왼쪽 너비/테두리 오른쪽 너비 등이 있는 경우 실제 콘텐츠 영역은 축소에 반응합니다.
2.절대 유체 특성 :
기본적으로 유체 특성을 갖지 않고 특정 조건에서만 가능하며 이 조건은 "반대 방향의 위치 지정이 동시에 발생하는 경우", 즉 왼쪽과 오른쪽이 수평 방향, 상하 방향이 수직 방향으로 위치하게 되면 서로 반대 방향이 동시에 포지셔닝 값을 가지게 되면 절대적인 유체 특성이 발생하게 됩니다.

1.3 장점 및 단점:

장점:

1. 우수한 호환성, 완벽한 유동 특성은 모든 최신 브라우저와 호환됩니다.
2. . 콘텐츠 너비 및 높이 쓰기 방법은
4. 이미지 파일도 지원됩니다.

1. 콘텐츠의 높이를 정의해야 합니다. . 콘텐츠의 텍스트 높이가 외부 컨테이너를 초과하는 경우 오버플로를 방지하기 위해 속성을 늘려야 합니다.

two

, 음수 여백

이것은 요소의 높이와 시기에서 현재 가장 일반적으로 사용되는 방법일 수 있습니다. 너비는 고정 값이고, 문서 흐름에서 벗어나도록 요소를 상대 레이아웃으로 설정하고, 위쪽: 50%, 왼쪽: 50%;를 설정하고, margin-left 및 margin-top을 사용하여 요소를 완전히 중앙에 배치합니다.

2.1 구체적인 코드는 다음과 같습니다.

.container {
    position: relative;
    width: 100%;
    height: 100%;
    background-color: aliceblue;
}

.is-Negative {
    position: absolute;
    width: 300px;
    height: 200px;
    padding: 20px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-left: -170px;
    margin-top: -120px;
    background-color: cornsilk;
}
로그인 후 복사
<div>
    <div>
    </div>
</div>
로그인 후 복사

CSS의 수직 및 수평 센터링 구현 방법 요약(코드 포함)2.2 이 방법의 핵심 아이디어는 다음과 같습니다.

상대 레이아웃을 사용하고 위쪽과 왼쪽을 사용하여 콘텐츠를 중앙에 배치합니다. 그런 다음 여백을 사용하여 오프셋을 제어합니다.

여기에 참고 사항이 있습니다:


box-sizing:border-box 속성을 사용할 때 오프셋은 테두리와 패딩을 계산할 필요가 없습니다.

2.3 장점 및 단점:

장점: 1. IE6-IE7을 포함한 우수한 호환성

2. 추가 마크업 HTML 요소가 없고 코드가 적습니다.

단점:


1.

2. 콘텐츠의 텍스트 높이가 외부 컨테이너를 초과하는 경우 오버플로를 방지하기 위해 오버플로 속성을 추가해야 합니다.

3. box 기본 콘텐츠 상자 오프셋을 사용하는 것과 다르며 다시 계산해야 합니다.


3. 변환 사용

3.1 구체적인 코드는 다음과 같습니다.

.container {
    position: relative;
    width: 100%;
    height: 100%;
    background-color: aliceblue;
}

.is-Transformed { 
    width: 50%;
    margin: auto;
    position: absolute;
    top: 50%; 
    left: 50%;
    padding: 20px;
    -webkit-transform: translate(-50%,-50%);
        -ms-transform: translate(-50%,-50%);
            transform: translate(-50%,-50%);
    background-color: darkseagreen;
}
로그인 후 복사
<div>
    <div>
        <ul>
            <li>
                该方法的核心思想是使用相对布局,并使用top以及left使内容置于容器中心部位,再使用translate来控制偏移量
            </li>
        </ul>
    </div>
</div>
로그인 후 복사

CSS의 수직 및 수평 센터링 구현 방법 요약(코드 포함)3.2 이 방법의 아이디어는 다음과 같습니다.

상대 레이아웃을 사용하고 위쪽과 왼쪽을 사용하여 콘텐츠를 컨테이너 중앙에 배치한 다음 변환을 사용하여 오프셋을 제어합니다.

3.3 장점과 단점:

장점: 1. 콘텐츠의 너비와 높이는 조정 가능하며, 콘텐츠의 너비와 높이는 지정할 필요가 없습니다.

. 단점:

1. 호환성이 좋지 않습니다. 변환은 IE8과 호환되지 않으므로 IE9 이상의 최신 브라우저만 지원합니다.
2. 다양한 브라우저와 호환하려면 몇 가지 추가 CSS 접두사가 필요합니다. 요소가 변형 속성을 사용하는 경우 다른 변형 효과에 영향을 미칠 수 있습니다.

4. 특히 변형 스타일: 보존-3d 속성을 사용할 때 브라우저 렌더링 문제인 가장자리가 흐려질 수 있습니다. . Table-Cell 사용

이것은 최고의 수직 센터링 솔루션일 수 있지만 가장 큰 문제가 있습니다. 수직 센터링 효과를 완성하려면 추가 html 요소가 필요합니다.


4.1 구체적인 코드는 다음과 같습니다.

.container {
  position: relative;
  width: 100%;
  height: 100%;
  background-color: aliceblue;
}

.container.is-Table { 
  display: table; 
}

.is-Table .Table-Cell {
  display: table-cell;
  vertical-align: middle;
}

.is-Table .Center-Block {
  width: 50%;
  margin: 0 auto;
  padding: 20px;
  background-color: deepskyblue;
}
로그인 후 복사
<div>
    <div>
        <div>
            使用table-cell完成垂直水平居中
        </div>
    </div>
</div>
로그인 후 복사

@import "./absolute_center4.png"{width="50%"}

4.2 该方法的核心思想是:

使用表格来实现垂直居中,再使用margin: 0 auto;来实现水平居中。

具体操作步骤如下:

1.设置父元素为块级表格;
2.设置子元素为表格单元格;
3.给子元素添加vertical-align:middle属性,此单元格已实现垂直居中;
4.设置子元素中的内容的宽度,添加margin: 0 auto;属性,使子元素水平居中。

4.3 优缺点:

优点:

1.内容高度自适应;
2.如果子元素的内容溢出,会拉伸父元素的高度;
3.兼容性好,兼容到IE8;

缺点:

1.完成一个垂直居中效果,需要3个html元素;

五、使用Inline-block

这也是一种常用的垂直水平居中的方法,但会存在一个问题:当内容的宽度大于容器宽度-0.25em的时候,会发生内容上移到顶部的方法,所以需要一些小的技巧来避免这样的问题。

5.1 具体代码如下:

.container {
  position: relative;
  width: 100%;
  height: 100%;
  background-color: aliceblue;
}

.container.is-Inline { 
  text-align: center;
  overflow: auto;
}

.container.is-Inline:after,
.is-Inline .Center-Block {
  display: inline-block;
  vertical-align: middle;
}

.container.is-Inline:after {
  content: '';
  height: 100%;
  margin-left: -0.25em; /* To offset spacing. May vary by font */
}

.is-Inline .Center-Block {
  background-color: greenyellow;
  padding: 20px;
  max-width: 99%; /* Prevents issues with long content causes the content block to be pushed to the top */
  /* max-width: calc(100% - 0.25em) /* Only for IE9+ */ 
}
로그인 후 복사
<div>
    <div>
        使用inline-block完成水平垂直居中
    </div>
</div>
로그인 후 복사

CSS의 수직 및 수평 센터링 구현 방법 요약(코드 포함)

5.2 该方法的核心思想是:

和table有点类似,设置内容为inline-block块,设置vertical-align: middle;属性使元素垂直方向居中,再父容器设置text-align:center;使子元素水平方向居中;

5.3 优缺点:

优:

1、内容高度自适应;
2.如果子元素的内容溢出,会拉伸父元素的高度;
3.兼容性好,兼容到IE7;

缺:

1.依赖margin-left:-0.25em来矫正水平方向居中的误差;
2.内容的宽度必须小于容器的宽度减去0.25em。

六、使用Flexbox

弹性布局是当前移动端比较流行的布局方式,它可以很优雅的完成垂直水平居中效果。

6.1 具体代码如下:

.container {
  position: relative;
  width: 100%;
  height: 100%;
  background-color: aliceblue;
}

.container.is-Flexbox {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
      -moz-box-align: center;
      -ms-flex-align: center;
  -webkit-align-items: center;
          align-items: center;
  -webkit-box-pack: center;
      -moz-box-pack: center;
      -ms-flex-pack: center;
  -webkit-justify-content: center;
          justify-content: center;
}

.center_block {
  background-color: wheat;
  padding: 20px;
}
로그인 후 복사
<div>
  <div>
    使用flexbox完成水平垂直居中
  </div>
</div>
로그인 후 복사

CSS의 수직 및 수평 센터링 구현 방법 요약(코드 포함)

6.2 该方法的核心思想是:

使用弹性布局,align-items: center;使元素在侧轴方向居中(默认是垂直方向),justify-content: center;使元素在主轴方向居中(默认是水平方向);

6.3 优缺点:

优:

1.内容宽度、高度自适应,即便文本溢出也很优雅;
2.可以使用很多弹性布局的新特性;

缺:

1.兼容性比较差,目前只有IE10以上兼容;
2.需要写额外的兼容性前缀;
3.各个浏览器的表现可能会有一些差异;

위 내용은 CSS의 수직 및 수평 센터링 구현 방법 요약(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vue에서 부트 스트랩을 사용하는 방법 Vue에서 부트 스트랩을 사용하는 방법 Apr 07, 2025 pm 11:33 PM

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML, CSS 및 JavaScript의 역할 : 핵심 책임 HTML, CSS 및 JavaScript의 역할 : 핵심 책임 Apr 08, 2025 pm 07:05 PM

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

HTML에서 React의 역할 : 사용자 경험 향상 HTML에서 React의 역할 : 사용자 경험 향상 Apr 09, 2025 am 12:11 AM

React는 JSX와 HTML을 결합하여 사용자 경험을 향상시킵니다. 1) JSX는 개발을보다 직관적으로 만들기 위해 HTML을 포함시킨다. 2) 가상 DOM 메커니즘은 성능을 최적화하고 DOM 운영을 줄입니다. 3) 유지 보수성을 향상시키기위한 구성 요소 기반 관리 UI. 4) 상태 관리 및 이벤트 처리는 상호 작용을 향상시킵니다.

부트 스트랩에 분할 라인을 작성하는 방법 부트 스트랩에 분할 라인을 작성하는 방법 Apr 07, 2025 pm 03:12 PM

부트 스트랩 분할 라인을 만드는 두 가지 방법이 있습니다 : 태그를 사용하여 수평 분할 라인이 생성됩니다. CSS 테두리 속성을 사용하여 사용자 정의 스타일 분할 라인을 만듭니다.

HTML, CSS 및 JavaScript 이해 : 초보자 안내서 HTML, CSS 및 JavaScript 이해 : 초보자 안내서 Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

부트 스트랩을위한 프레임 워크를 설정하는 방법 부트 스트랩을위한 프레임 워크를 설정하는 방법 Apr 07, 2025 pm 03:27 PM

부트 스트랩 프레임 워크를 설정하려면 다음 단계를 따라야합니다. 1. CDN을 통해 부트 스트랩 파일 참조; 2. 자신의 서버에서 파일을 다운로드하여 호스팅하십시오. 3. HTML에 부트 스트랩 파일을 포함; 4. 필요에 따라 Sass/Less를 컴파일하십시오. 5. 사용자 정의 파일을 가져옵니다 (선택 사항). 설정이 완료되면 Bootstrap의 그리드 시스템, 구성 요소 및 스타일을 사용하여 반응 형 웹 사이트 및 응용 프로그램을 만들 수 있습니다.

부트 스트랩에 사진을 삽입하는 방법 부트 스트랩에 사진을 삽입하는 방법 Apr 07, 2025 pm 03:30 PM

Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

부트 스트랩 버튼을 사용하는 방법 부트 스트랩 버튼을 사용하는 방법 Apr 07, 2025 pm 03:09 PM

부트 스트랩 버튼을 사용하는 방법? 부트 스트랩 CSS를 소개하여 버튼 요소를 만들고 부트 스트랩 버튼 클래스를 추가하여 버튼 텍스트를 추가하십시오.

See all articles