수리하다 CSS 정렬에 관한 모든 것. HTML에서 페이지의 중앙, 너비, 가장자리에 텍스트 정렬을 만드는 방법

CSS 정렬에 관한 모든 것. HTML에서 페이지의 중앙, 너비, 가장자리에 텍스트 정렬을 만드는 방법

지금까지는 요소를 왼쪽으로만 정렬했습니다. 더 정확하게 말하면, 우리는 이것을 전혀 하지 않았고 브라우저 자체는 기본적으로 요소를 왼쪽에 정렬합니다. 물론 모든 것을 왼쪽으로 맞추는 것은 너무 지루할 것입니다. 따라서 다음이 있습니다. 다양한 방법중앙 및 오른쪽 정렬.

요소를 정렬하는 것은 언제 알아야 하는 것입니다. 가장 먼저 할 일은 가장 간단한 페이지를 입력하는 것입니다.

옛날 옛적에 태그가 있었다

더 많은 존재로 인해 지금 사용하지 않는 것이 좋습니다. 현대적인 방법하지만 언급하지 않을 수 없습니다. 그것을 사용하는 것은 매우 간단합니다. 중앙에 정렬하는 데 필요한 모든 것을 이 태그 안에 넣습니다. 예를 들어 여기에서는 1단계의 제목을 중앙에 정렬합니다.



중앙에 이미지를 추가할 수도 있습니다. 태그를 사용하여 다음 줄로 이동해 보겠습니다.
:


레벨 1 제목 중앙




태그였다

, 태그에 대한 귀하의 기대와 달리 이미 사용되지 않습니다. 그리고 그냥 존재하지 않습니다. 기본적으로 왼쪽 정렬, 태그를 사용하여 가운데 정렬이라고 가정해 보겠습니다.
, 하지만 오른쪽은 어떻습니까?

이 문제를 해결하기 위해 개발자는 요소를 정렬하는 보편적인 방법을 고안했습니다. HTML. 방법은 태그를 사용하여 생성된 소위 컨테이너를 사용하는 것입니다.

. 즉, 특정 컨테이너에 넣어야 하는 모든 것은 태그 내부에 배치됩니다.
. 그리고 이 태그에는 이미 " 맞추다", 이 값이 이 컨테이너의 위치를 ​​결정합니다. 세 가지 값이 있습니다. " 왼쪽", "센터", "오른쪽". 기본값은 " 왼쪽그러나 나는 이것이 당신을 놀라게 한다고 생각하지 않습니다.

이제 똑같이 쓰자 HTML 코드, 그러나 컨테이너를 사용하여 추가로 중앙이 아닌 오른쪽으로 정렬합시다.





보시다시피 모든 것이 작동합니다. 속성 값도 변경하는 것이 좋습니다. " 맞추다" 다른 종류의 컨테이너 콘텐츠 정렬을 살펴봅니다.

요소를 정렬하는 또 다른 방법 HTML- 이것은 표지만 이 주제는 별도로 논의할 가치가 있으므로 다음 기사 중 하나에서 이에 대해 이야기하겠습니다.

현재 페이지는 다음과 같아야 합니다.






레벨 1 제목 중앙






수준 1 제목, 오른쪽 정렬






진심으로, Mikhail Rusakov.

추신에 대해 더 알고 싶으시다면 HTML그럼 내 좀 봐 무료 코스에 사이트를 만드는 예와 함께 HTML:

18.02.15 21.4K

에 생성된 사이트를 잘라내면 HTML 기반, 당신은 특정 계층 구조를 볼 수 있습니다. 그리고 그들의 모습레이어 케이크와 비슷합니다. 그렇게 생각한다면 아마도 오랫동안 먹지 않았을 것입니다. 따라서 먼저 허기를 채우고 사이트에서 div 레이어를 중앙에 배치하는 방법을 보여드리겠습니다.

태그를 사용한 레이아웃의 이점

사이트 구조 구축에는 두 가지 주요 유형이 있습니다.

  • 표의;
  • 차단하다.

테이블 형식의 레이아웃은 인터넷의 시작부터 지배적이었습니다. 그것의 장점은 주어진 위치의 정확성을 포함합니다. 그러나 그럼에도 불구하고 명백한 단점이 있습니다. 가장 중요한 것은 코드의 양과 저속다운로드.

테이블 형식 레이아웃을 사용할 때 웹 페이지는 완전히 로드될 때까지 표시되지 않습니다. 반면 div 블록을 사용할 때 요소는 즉시 렌더링됩니다.

제외하고 고속사이트의 다운로드 블록 구성을 통해 볼륨을 여러 번 줄일 수 있습니다. HTML 코드. CSS 클래스 사용을 포함합니다.

그러나 페이지의 데이터 표시를 구조화하려면 테이블 형식 레이아웃을 사용해야 합니다. 사용의 고전적인 예는 테이블 표시입니다.

태그 기반 블록 빌딩

레이어라고도 하며 블록 자체가 레이어입니다. 이는 특정 속성 값을 사용할 때 Photoshop의 레이어와 유사하게 다른 속성 값 위에 하나를 배치할 수 있기 때문입니다.

포지셔닝 보조

블록 레이아웃에서 레이어 위치 지정은 CSS 스타일 시트를 사용하는 것이 가장 좋습니다. 위치를 담당하는 주요 CSS 속성

, 부동 소수점입니다.
속성 구문:
플로트: 왼쪽 | 오른쪽 | 없음 | 상속하다,
어디에:

  • 왼쪽 - 요소를 화면의 왼쪽 가장자리에 맞춥니다. 나머지 요소는 오른쪽으로 둘러싸입니다.
  • 오른쪽 - 오른쪽 정렬, 나머지 요소 래핑 - 왼쪽
  • 없음 - 래핑이 허용되지 않습니다.
  • 상속 - 값 상속 부모 요소.

이 속성을 사용하여 div를 배치하는 간단한 예를 고려하십시오.

왼쪽 블록


이제 동일한 속성을 사용하여 페이지 중앙에 세 번째 div를 배치해 보겠습니다. 그러나 불행히도 float에는 중심 값이 없습니다. 그리고 새 블록에 오른쪽 또는 왼쪽으로 정렬 값이 지정되면 지정된 방향으로 이동합니다. 따라서 세 블록을 모두 float로 설정하는 것만 남아 있습니다. left :


그러나 이것이 최선의 선택도 아닙니다. 창을 축소하면 모든 레이어가 세로로 한 줄로 늘어서고, 크기를 늘리면 창의 왼쪽 가장자리에 붙습니다. 따라서 div를 중앙에 배치하는 더 나은 방법이 필요합니다.

센터링 레이어

다음 예에서는 컨테이너 레이어를 사용하여 나머지 요소를 배치합니다. 이렇게 하면 창 크기가 조정될 때 블록이 서로 상대적으로 이동하는 문제가 해결됩니다. 여백 속성을 설정하여 컨테이너를 가운데에 배치합니다. 제로 값상단의 여백 및 측면의 자동 (여백: 0 auto ):

왼쪽 블록

중앙 블록


이 동일한 예는 div를 수평으로 가운데에 맞추는 방법을 보여줍니다. 그리고 위의 코드를 약간 수정하면 블록의 수직 정렬을 달성할 수 있습니다. 이렇게 하려면 컨테이너 레이어의 길이를 변경하기만 하면 됩니다(줄임). 즉, CSS를 편집한 후 클래스는 다음과 같아야 합니다.

변경 후에는 모든 블록이 중앙의 한 행에 엄격하게 정렬됩니다. 그리고 브라우저 창의 크기에 관계없이 위치가 변경되지 않습니다. 수직으로 가운데에 있는 div는 다음과 같습니다.


다음 예에서는 컨테이너 내부의 레이어를 중앙에 배치하기 위해 일련의 새로운 CSS 속성 :


우리가 사용한 CSS 속성과 그 값에 대한 간략한 설명 이 예 div 안에 div를 가운데에 맞추려면 다음을 수행하십시오.
  • display: inline-block - 블록 요소를 한 줄에 정렬하고 다른 요소로 래핑합니다.
  • vertical-align: middle - 부모를 기준으로 가운데에 있는 요소를 정렬합니다.
  • margin-left - 여백을 왼쪽으로 설정합니다.

레이어에서 링크를 만드는 방법

이상하게 들리겠지만 가능합니다. 때때로 div 블록을 링크로 사용할 때 레이아웃이 필요할 수 있습니다. 다양한 종류메뉴. 링크 계층 구현의 실제 예를 고려하십시오.

우리 사이트에 대한 링크


이 예에서 display: block 줄을 사용하여 링크를 블록 요소의 값으로 설정합니다. 그리고 div의 전체 높이를 링크로 만들려면 height : 100%로 설정합니다.

블록 요소 숨기기 및 표시

블록 요소는 오래된 표 형식 레이아웃보다 인터페이스의 기능을 확장하기 위한 더 많은 옵션을 제공합니다. 사이트 디자인이 독특하고 알아볼 수 있는 경우가 종종 있습니다. 그러나 이러한 독점적인 여유 공간 부족에 대한 비용을 지불해야 합니다.

특히 우려된다. 홈페이지, 가장 높은 광고 비용. 따라서 문제가 발생합니다. 어디에서 하나 더 "밀어"야합니다. 광고 배너. 그리고 여기서 div를 페이지 중앙에 정렬하는 것으로 벗어날 수 없습니다!

더 합리적인 해결책은 일부 블록을 숨기는 것입니다. 다음은 그러한 구현의 간단한 예입니다.

이것은 마법의 버튼입니다. 그것을 클릭하면 숨겨진 블록을 숨기거나 표시합니다.

CSS를 사용하여 요소를 세로로 중앙에 배치하는 것은 개발자에게 어려운 과제입니다. 그러나 이를 해결하는 몇 가지 방법이 있으며 이는 매우 간단합니다. 이 단원에서는 콘텐츠를 세로로 가운데에 맞추는 6가지 옵션을 제공합니다.

시작하자 일반적인 설명작업.

수직 센터링 문제

수평 센터링은 매우 간단하고 쉽습니다. 가운데에 있는 요소가 인라인인 경우 부모 요소를 기준으로 정렬 속성을 사용합니다. 요소가 블록 요소일 때 너비를 설정하고 자동 설치왼쪽 및 오른쪽 여백.

대부분의 사람들이 사용하는 텍스트 정렬 속성: , vertical-align 속성에 접근하여 세로로 가운데 정렬합니다. 모든 것이 매우 논리적으로 보입니다. 테이블 템플릿을 사용했다면 아마도 valign 속성을 광범위하게 사용했을 것입니다. 이는 vertical-align이 올바른 방법이라는 믿음을 강화시켜줍니다.

그러나 valign 속성은 테이블 셀에서만 작동합니다. 그리고 vertical-align 속성은 매우 유사합니다. 또한 테이블 셀과 일부 인라인 요소에도 영향을 줍니다.

vertical-align 속성의 값은 부모 인라인 요소를 기준으로 합니다.

  • 텍스트 줄에서 정렬은 줄 높이를 기준으로 합니다.
  • 테이블 셀은 특수 알고리즘에 의해 계산된 값에 대한 정렬을 사용합니다(일반적으로 라인 높이가 얻어짐).

그러나 불행히도 vertical-align 속성은 블록 수준 요소(예: div 요소 내부의 단락)에서 작동하지 않습니다. 이러한 상황은 수직 정렬 문제에 대한 해결책이 없다는 생각으로 이어질 수 있습니다.

그러나 블록 수준 요소를 중앙에 배치하는 다른 방법이 있으며, 선택은 외부 컨테이너와 관련하여 중앙에 배치되는 항목에 따라 다릅니다.

라인 높이 방법

이 방법한 줄의 텍스트를 세로로 가운데에 맞추고 싶을 때 작동합니다. 줄 높이를 글꼴 크기보다 크게 설정하기만 하면 됩니다.

기본적으로 여유 공간은 텍스트 위와 아래에 균등하게 분배됩니다. 그리고 선은 수직으로 중앙에 위치합니다. 종종 라인 높이는 요소의 높이와 동일하게 만들어집니다.

HTML:

원하는 텍스트

CSS:

#자식(줄 높이: 200px; )

이 방법은 모든 브라우저에서 작동하지만 한 줄에만 사용할 수 있습니다. 예제에서 200px의 값은 임의로 선택됩니다. 텍스트 글꼴 크기보다 큰 값을 사용할 수 있습니다.

라인 높이로 이미지 중앙에 맞추기

콘텐츠가 이미지라면? 위의 방법이 효과가 있을까요? 답은 CSS 코드의 다른 행에 있습니다.

HTML:

CSS:

#parent ( line-height: 200px; ) #parent img ( vertical-align: middle; )

line-height 속성의 값은 이미지의 높이보다 커야 합니다.

CSS 테이블 메서드

위에서 언급했듯이 vertical-align 속성은 잘 작동하는 테이블 셀에 적용됩니다. 요소를 테이블 셀로 렌더링하고 그 위에 vertical-align 속성을 사용하여 콘텐츠를 세로로 가운데에 맞출 수 있습니다.

메모: CSS 테이블은 HTML 테이블과 다릅니다.

HTML:

콘텐츠

CSS:

#parent (디스플레이: table;) #child ( display: table-cell; vertical-align: middle; )

테이블 출력을 부모 div로 설정하고 중첩된 div를 테이블 셀로 렌더링합니다. 이제 내부 컨테이너에서 vertical-align 속성을 사용할 수 있습니다. 그 안에 있는 모든 것이 수직으로 중앙에 위치합니다.

위의 방법과 달리 이 경우 div 요소가 콘텐츠에 맞게 크기가 조정되므로 콘텐츠가 동적일 수 있습니다.

이 방법의 단점은 이전 버전의 IE에서는 작동하지 않는다는 것입니다. 중첩된 컨테이너에 대해 display: inline-block 속성을 사용해야 합니다.

절대 위치 및 음수 마진

이 방법은 모든 브라우저에서도 작동합니다. 그러나 중심 요소에 높이가 지정되어야 합니다.

예제 코드는 수평 및 수직 센터링을 동시에 수행합니다.

HTML:

콘텐츠

CSS:

#parent(위치:상대;) #하위(위치:절대;상단:50%;왼쪽:50%;높이:30%;폭:50%;여백:-15% 0 0 -25%; )

먼저 요소의 위치 유형을 설정합니다. 그런 다음 중첩된 div에서 top 및 left 속성을 상위 요소의 중심인 50%로 설정합니다. 하지만 센터는 왼쪽을 친다. 상단 모서리중첩 요소. 따라서 위로 들어 올려(높이의 절반) 왼쪽(너비의 절반)으로 이동하면 중심이 상위 요소의 중심과 일치하게 됩니다. 따라서 이 경우 요소의 높이를 아는 것이 필요합니다. 그런 다음 요소에 음수 위쪽 및 왼쪽 여백을 각각 높이와 너비의 절반과 동일하게 지정합니다.

이 방법은 모든 브라우저에서 작동하지 않습니다.

절대 위치 및 스트레칭

예제 코드는 수직 및 수평 센터링을 수행합니다.

HTML:

콘텐츠

CSS:

#parent(위치:상대;) #하위(위치:절대;위:0;아래:0;왼쪽:0;오른쪽:0;너비:50%;높이:30%;여백:자동;)

이 방법의 이면에 있는 아이디어는 top, bottom, right 및 left 속성을 0으로 설정하여 중첩된 요소를 상위 요소의 경계 4개 모두로 늘리는 것입니다.

모든 면에 자동 여백 형성을 설정하면 작업이 완료됩니다. 동등한 가치 4면 모두에서 중첩된 div 요소를 상위 요소의 중앙으로 가져옵니다.

불행히도 이 방법은 IE7 이하에서는 작동하지 않습니다.

동일한 패딩 상단 및 하단

이 메서드는 부모 요소 위와 아래에 동일한 패딩을 명시적으로 설정합니다.

HTML:

콘텐츠

CSS:

#부모 ( 패딩: 5% 0; ) # 자식 ( 패딩: 10% 0; )

코드에서 CSS 예위쪽 및 아래쪽 여백은 두 요소 모두에 대해 설정됩니다. 중첩된 요소의 경우 패딩을 설정하면 수직으로 가운데에 배치됩니다. 그리고 부모 요소의 패딩은 중첩된 요소의 중앙에 위치합니다.

상대 단위는 요소의 크기를 동적으로 조정하는 데 사용됩니다. 그리고 절대 측정 단위의 경우 계산을 수행해야 합니다.

예를 들어 상위 요소의 높이가 400px이고 중첩된 요소의 높이가 100px인 경우 상단과 하단에 150px의 패딩이 필요합니다.

150 + 150 + 100 = 400

%를 사용하면 계산을 브라우저에 맡길 수 있습니다.

이 방법은 모든 곳에서 작동합니다. 단점은 계산이 필요하다는 것입니다.

메모:이 방법은 요소의 여백을 설정하여 작동합니다. 요소 내에서 여백을 사용할 수도 있습니다. 여백 또는 패딩 적용 여부는 프로젝트의 특성에 따라 결정해야 합니다.

부동 div

이 메서드는 문서에서 중첩된 요소의 위치를 ​​제어하는 ​​데 도움이 되는 빈 div 요소를 사용합니다. 부동 div는 HTML 코드에서 중첩 요소 앞에 배치됩니다.

HTML:

콘텐츠

CSS:

#parent (높이: 250px;) #floater ( float: left; height: 50%; width: 100%; margin-bottom: -50px; ) #child ( clear: both; height: 100px; )

빈 div를 왼쪽이나 오른쪽으로 오프셋하고 상위 요소의 50% 높이를 지정합니다. 이렇게 하면 상위 요소의 위쪽 절반을 채웁니다.

이 div는 부동 상태이므로 문서의 일반적인 흐름에서 제거되고 중첩된 요소를 해제해야 합니다. 이 예제에서는 clear: both 를 사용하지만 부동 빈 div 요소의 오프셋과 동일한 방향을 사용하는 것으로 충분합니다.

중첩된 div 요소의 위쪽 테두리는 빈 div 요소의 아래쪽 테두리 바로 아래에 있습니다. 중첩된 요소를 부동 빈 요소 높이의 절반만큼 위로 이동해야 합니다. 이 문제를 해결하기 위해 부동 빈 div 요소에 대한 margin-bottom 속성의 음수 값이 사용됩니다.

이 방법은 모든 브라우저에서도 작동합니다. 그러나 이를 사용하려면 빈 div 요소가 추가로 필요하고 중첩 요소의 높이에 대한 지식이 필요합니다.

결론

설명된 모든 방법은 사용하기 쉽습니다. 어려움은 그들 중 어느 것도 모든 경우에 적합하지 않다는 사실에 있습니다. 프로젝트를 분석하고 요구 사항에 가장 적합한 프로젝트를 선택해야 합니다.

웹 디자이너는 직장에서 매일 DIV를 사용합니다. 두말할 것 없이 가장 인기 있는 태그입니다. 사이트의 소스를 열면 개체의 3분의 2는 아니더라도 대부분이

. HTML5의 도래와 기사나 헤더 형태의 심각한 경쟁자의 출현에도 불구하고, 그것은 계속해서 모든 곳의 마크업에 삽입되고 있습니다. 따라서 중앙에서 div 블록의 서식 지정 및 정렬 문제를 처리하는 것이 좋습니다.

DIV 란 무엇입니까

요소의 이름은 나눗셈을 의미하는 영어 단어 division에서 유래합니다. 마크업을 작성할 때 요소를 블록으로 나누는 데 사용됩니다. DIV는 웹 페이지의 콘텐츠 그룹을 묶습니다. 예를 들어 이미지, 텍스트가 있는 단락. 태그는 어떤 식으로든 콘텐츠 표시에 영향을 미치지 않으며 의미론적 로드를 전달하지 않습니다.

DIV는 모든 전역 속성을 지원합니다. 그러나 웹 디자인의 경우 클래스와 ID의 두 가지만 있으면 됩니다. 이국적인 경우에만 나머지 모든 것을 기억할 수 있으며 이는 사실이 아닙니다. div를 가운데 정렬하거나 왼쪽 정렬하는 데 사용되었던 align 속성은 더 이상 사용되지 않습니다.

DIV를 사용해야 하는 경우

사이트가 냉장고이고 DIV가 콘텐츠를 분류하는 데 필요한 플라스틱 용기라고 상상해 보십시오. 당신은 리버부어스트와 같은 용기에 과일을 넣지 않을 것입니다. 당신이 별도로 두는 제품의 각 종류. 웹 콘텐츠도 비슷한 방식으로 생성됩니다.

아무 사이트나 열고 의미 블록으로 나눕니다. 상단에 머리글, 하단에 바닥글, 중앙에 본문. 측면에는 일반적으로 판촉 콘텐츠 또는 태그 클라우드가 있는 작은 열이 있습니다.

문서

이제 각 섹션을 더 자세히 분해하십시오. 헤더로 시작하십시오. 사이트 헤더에는 별도의 로고, 탐색, 1단계 제목, 때로는 슬로건이 있습니다. 각 의미 블록에 고유한 컨테이너를 할당합니다. 이렇게 하면 흐름의 요소가 분리될 뿐만 아니라 서식을 쉽게 지정할 수 있습니다. 클래스나 ID를 지정하여 DIV 태그의 중심에 개체를 배치하는 것이 훨씬 쉽습니다.

여백이 있는 가운데 정렬 DIV

웹 요소를 렌더링할 때 브라우저는 패딩, 여백 및 테두리의 세 가지 속성을 고려합니다. 패딩은 콘텐츠와 테두리 사이의 공간입니다. 여백 - 한 개체를 다른 개체와 구분하는 필드입니다. 테두리는 블록을 따라 있는 선입니다. 모두에서 한 번에 할당하거나 한쪽에서만 할당할 수 있습니다.

div( border: 1px solid #333; border-left: 없음; )

이러한 속성은 개체 사이에 여유 공간을 추가하고 원하는 대로 정렬하고 배치하는 데 도움이 됩니다. 예를 들어, 그림이 있는 블록을 왼쪽 가장자리에서 가운데로 20% 오프셋해야 하는 경우 값이 20%인 요소에 왼쪽 여백을 할당합니다.

img로 차단(왼쪽 여백: 20%; )

요소는 너비 값과 음수 패딩을 사용하여 형식을 지정할 수도 있습니다. 예를 들어 200x200px 크기의 블록이 있습니다. 먼저 절대 위치를 지정하고 중앙으로 50% 이동합니다.

Div( 위치: 절대; 왼쪽: 50%; )

이제 DIV가 완벽하게 중앙에 있는지 확인하려면 너비의 50%, 즉 -100픽셀과 같은 음수 왼쪽 패딩을 지정합니다.

여백-왼쪽: -100px

CSS에서는 이것을 "공기 제거"라고 합니다. 그러나 여러 수준의 중첩이 있는 요소에 대해 수행하기가 상당히 어려운 일정한 계산을 수행해야 한다는 점에서 상당한 단점이 있습니다. 패딩과 테두리 너비가 설정된 경우 브라우저는 기본적으로 컨테이너의 크기를 테두리 두께, 오른쪽, 왼쪽의 패딩, 콘텐츠 자체의 합으로 계산하므로 놀라울 수도 있습니다.

따라서 DIV를 중앙에 배치해야 하는 경우 border-box 값과 함께 box-sizing 속성을 사용하십시오. 브라우저가 DIV 요소의 전체 너비에 패딩 및 테두리 값을 추가하는 것을 방지합니다. 요소를 높이거나 낮추려면 음수 값도 사용하십시오. 그러나 이 경우 컨테이너의 위쪽 또는 아래쪽 필드에 할당할 수 있습니다.

자동 여백을 사용하여 div 블록을 가운데에 맞추는 방법

이것은 큰 블록을 중앙에 배치하는 쉬운 방법입니다. 컨테이너의 너비와 margin 속성을 auto로 설정하기만 하면 됩니다. 브라우저는 모든 작업을 자체적으로 수행하면서 왼쪽과 오른쪽에 동일한 여백을 두고 가운데에 블록을 배치합니다. 결과적으로 수학적 계산에서 혼동될 위험이 없으며 시간을 크게 절약할 수 있습니다.

반응형 앱을 개발할 때 자동 여백 방법을 사용합니다. 핵심은 컨테이너에 너비 값을 ems 또는 백분율로 지정하는 것입니다. 위 예제의 코드는 다음을 포함한 모든 장치의 DIV를 중앙에 배치합니다. 휴대전화, 화면의 90%를 차지합니다.

속성 표시를 통한 정렬: 인라인 블록

기본적으로 DIV 요소는 블록 요소로 간주되며 블록의 표시 값을 갖습니다. 이 방법의 경우 이 속성을 재정의해야 합니다. 상위 컨테이너가 있는 DIV에만 적합:

모든 텍스트

외부 div 클래스가 있는 요소에는 값이 center인 text-align 속성이 할당되며, 이는 텍스트를 내부의 중앙에 배치합니다. 그러나 현재로서는 브라우저가 중첩된 DIV를 블록 개체로 봅니다. text-align 속성이 작동하려면 inner-div를 인라인으로 처리해야 합니다. 따라서 에서 CSS 테이블 inner-div 선택기의 경우 다음 코드를 작성합니다.

내부 div( 표시: 인라인 블록; )

표시 속성을 블록에서 인라인 블록으로 변경합니다.

변환/번역 방법

계단식 스타일 시트를 사용하면 웹 요소를 마음대로 이동, 기울이기, 회전 및 변형할 수 있습니다. 이를 위해 transform 속성이 사용됩니다. 원하는 변환 유형과 정도가 값으로 지정됩니다. 이 예에서 우리는 번역 작업을 할 것입니다:

변환: 번역(50%, 50%);

번역 기능은 요소를 현재 위치에서 왼쪽/오른쪽 및 위/아래로 이동합니다. 두 개의 값이 괄호 안에 전달됩니다.

  • 수평 이동 정도;
  • 수직 이동 정도.

요소를 좌표 축 중 하나를 따라 이동해야 하는 경우 변환 단어 뒤에 축 이름을 지정하고 괄호 안에 필요한 이동량을 지정합니다.

변환: translateY(-20%);

일부 가이드에서는 공급업체 접두사가 포함된 변환을 볼 수 있습니다.

웹킷 변환: 번역(50%, 50%); -ms-변환: 번역(50%, 50%); 변환: 번역(50%, 50%);

2018년에는 더 이상 필요하지 않으며 Edge 및 IE를 포함한 모든 브라우저에서 속성이 지원됩니다.

필요한 DIV를 중앙에 배치하기 위해 CSS 변환 기능은 수직 및 수평 축에 대해 50% 값으로 작성됩니다. 이렇게 하면 브라우저가 요소를 현재 위치에서 너비와 높이의 절반으로 이동합니다. 너비 및 높이 속성을 지정해야 합니다.

문서

변형 속성이 적용된 요소는 주변 개체에 관계없이 이동합니다. 한편으로 이것은 편리하지만 때때로 움직이는 DIV는 다른 컨테이너와 겹칠 수 있습니다. 따라서 웹 구성 요소를 중앙에 배치하는 이 방법은 비표준으로 간주되며 극히 필요한 경우에만 사용됩니다. 애니메이션에는 모든 CSS 표준에 따른 변환이 사용됩니다.

Flexbox 레이아웃 작업

Flexbox가 고려됩니다. 복잡한 방법으로웹 레이아웃 레이아웃. 하지만 숙달하면 생각보다 훨씬 쉽고 즐겁다는 것을 알게 될 것입니다. 표준 방법포맷. Flexbox 사양은 요소를 처리하는 유연하고 믿을 수 없을 정도로 강력한 방법입니다. 에서 영어의모듈 이름은 "유연한 컨테이너"로 번역됩니다. 너비, 높이, 요소 배열의 값은 들여쓰기 및 여백을 계산하지 않고 자동으로 조정됩니다.

이전 예제에서 이미 display 속성으로 작업했지만 블록(블록) 및 인라인(인라인 블록) 값으로 설정했습니다. 플렉스 레이아웃을 만들기 위해 display: flex를 사용할 것입니다. 먼저 플렉스 컨테이너가 필요합니다.

계단식 테이블에서 플렉스 컨테이너로 변환하려면 다음을 작성합니다.

플렉스 컨테이너(디스플레이: flex; )

그 안에 중첩된 모든 객체(직계 자식만 제외)는 플렉스 항목이 됩니다.

첫번째
제삼
네번째

목록이 플렉스 컨테이너 안에 있으면 li 목록의 항목은 플렉스 항목으로 간주되지 않습니다. Flexbox 레이아웃은 ul에서만 작동합니다:

플렉스 아이템 배치 규칙

플렉스 아이템을 관리하기 위해서는 justify-content와 align-items가 필요합니다. 지정한 값에 따라 이 두 속성은 필요에 따라 개체를 자동으로 배치합니다. 중첩된 모든 DIV를 중앙에 배치해야 하는 경우 justify-content: center, align-items: center만 작성하고 다른 것은 작성하지 않습니다. 브라우저가 나머지 작업을 수행합니다.

문서

첫번째
제삼
네번째

플렉스 항목인 DIV에 텍스트를 가운데에 맞추려면 표준 텍스트 정렬 트릭을 사용할 수 있습니다. 또는 중첩된 각 DIV를 플렉스 컨테이너로 만들고 justify-content 로 콘텐츠를 관리할 수도 있습니다. 이 방법은 그래픽, 다단계 목록을 비롯한 기타 중첩 개체를 비롯한 다양한 콘텐츠가 포함되어 있는 경우 훨씬 더 합리적입니다.

각 레이아웃 디자이너는 가로 또는 세로로 블록의 콘텐츠를 정렬해야 하는 필요성에 끊임없이 직면해 있습니다. 이 주제에 대한 몇 가지 좋은 기사가 있지만 모두 흥미롭지만 실용적인 옵션은 거의 없으므로 주요 내용을 강조하기 위해 추가 시간을 낭비해야 합니다. 나는 더 이상 구글링을 하지 않기 위해 이 정보를 나에게 편리한 형태로 제출하기로 결정했다.

알려진 크기로 블록 정렬

CSS를 사용하는 가장 쉬운 방법은 미리 결정된 높이(세로 정렬의 경우) 또는 너비(가로 정렬의 경우)가 있는 상자를 정렬하는 것입니다.

패딩과의 정렬

때로는 요소를 가운데에 둘 수 없지만 속성을 사용하여 요소에 테두리를 추가할 수 있습니다. ".

예를 들어, 200 x 200 픽셀의 그림이 있고 240 x 300 블록의 중앙에 배치하려고 합니다. 높이와 너비를 설정할 수 있습니다. 실외기= 200px이고 위쪽과 아래쪽에 20픽셀, 왼쪽과 오른쪽에 50픽셀을 추가합니다.

.example-wrapper1 ( 배경 : #535E73 ; 너비 : 200px ; 높이 : 200px ; 패딩 : 20px 50px ; )

절대 위치 블록 정렬

차단이 "로 설정된 경우 위치: 절대", "position: relative"를 사용하여 가장 가까운 부모를 기준으로 위치를 지정할 수 있습니다. 이를 위해 모든 속성(" 맨 위","오른쪽","맨 아래","왼쪽") "margin: auto" 뿐만 아니라 동일한 값을 할당하는 내부 블록.

*뉘앙스가 있습니다. 내부 블록의 너비(높이) + 왼쪽(오른쪽, 아래쪽, 위쪽) 값이 상위 블록의 크기를 초과해서는 안 됩니다. 왼쪽(오른쪽, 아래쪽, 위쪽) 속성을 0(영)으로 설정하는 것이 더 안전합니다.

.example-wrapper2 ( 위치 : 상대 ; 높이 : 250px ; 배경 : url(space.jpg) ; ) 0 ; 오른쪽 : 0 ; 여백 : 자동 ; 배경 : url(king.png) ; )

수평 정렬

"text-align: center"로 정렬

블록의 텍스트를 정렬하기 위해 특별한 속성 " 텍스트 정렬"로 설정하면 " 센터" 텍스트의 각 줄은 가로로 정렬됩니다. 여러 줄 문자이 솔루션은 극히 드물게 사용되며 더 자주 이 옵션은 범위, 링크 또는 그림을 정렬하는 데 사용할 수 있습니다.

한 때 텍스트 정렬이 작동하는 방식을 보여주기 위해 텍스트를 발명해야 했습니다. CSS 도움말하지만 흥미로운 것은 생각나지 않았다. 처음에 나는 동요를 어딘가에 복사하기로 결정했지만 이것이 기사의 독창성을 망칠 수 있고 우리의 친애하는 독자들이 Google에서 그것을 찾지 못할 수도 있다는 것을 기억했습니다. 그리고 나는 이 단락을 여기에 쓰기로 결정했습니다. 결국, 요점은 그와 일치하지 않지만 요점은 일치합니다.

.example-text ( 텍스트 정렬 : 가운데 ; 패딩 : 10px ; 배경 : #FF90B8 ; )

이 속성은 텍스트뿐만 아니라 모든 인라인 요소("디스플레이: 인라인")에서도 작동합니다.

그러나 이 텍스트는 왼쪽 정렬되지만 래퍼를 기준으로 중앙에 있는 블록에 있습니다.

.example-wrapper3 ( text-align : center ; background : #FF90B8 ; ) .inline-text ( display : inline-block ; width : 40% ; padding : 10px ; text-align : 왼쪽 ; background : #FFE5E5 ; )

여백이 있는 블록 정렬

너비가 알려진 블록 수준 요소는 "왼쪽 여백: 자동, 오른쪽 여백: 자동"으로 설정하여 가로로 쉽게 정렬됩니다. 약어는 일반적으로 사용됩니다. " 여백: 0 자동"(0 대신 값이 있을 수 있음). 그러나 수직 정렬의 경우 이 방법이 작동하지 않습니다.

.lama-wrapper ( 높이 : 200px ; 배경 : #F1BF88 ; ) .lama1 ( 높이 : 200px ; 너비 : 200px ; 배경 : url(lama.jpg) ; 여백 : 0 자동 ; )

이것이 가능한 경우(고정 또는 절대 위치 지정이 필요하지 않은 경우) 모든 블록을 정렬할 가치가 있는 방법입니다. 가장 논리적이고 적절합니다. 이것이 명백한 것처럼 보이지만 가끔 음수 들여쓰기가 포함된 위협적인 예를 보았으므로 명확히 해야 한다고 생각했습니다.

수직 정렬

수직 정렬에는 더 많은 문제가 있습니다. 분명히 이것은 CSS에서 제공되지 않았습니다. 원하는 결과를 얻는 방법에는 여러 가지가 있지만 모두 그다지 아름답지는 않습니다.

line-height 속성과 정렬

블록에 한 줄만 있는 경우 "를 적용하여 세로 정렬을 얻을 수 있습니다. 줄 높이" 및 원하는 높이로 설정합니다. 안전을 위해 "높이"도 설정해야 합니다. 이 값은 "줄 높이" 값과 같을 것입니다. 후자는 모든 브라우저에서 지원되지 않기 때문입니다.

.example-wrapper4 ( line-height : 100px ; color : #DC09C0 ; background : #E5DAE1 ; height : 100px ; text-align : center ; )

블록을 여러 줄로 정렬하는 것도 가능합니다. 이렇게 하려면 추가 래퍼 블록을 사용하고 줄 높이를 설정해야 합니다. 내부 블록은 여러 줄로 구성될 수 있지만 "인라인"이어야 합니다. "vertical-align: middle"을 적용해야 합니다.

.example-wrapper5 ( line-height : 160px ; height : 160px ; font-size : 0 ; background : #FF9B00 ; ) 1.5 ; vertical-align : middle ; background : #FFFAF2 ; color : #FF9B00 ; text-align : center ; )

래퍼 블록에는 "글꼴 크기: 0"이 설정되어 있어야 합니다. 글꼴 크기를 0으로 설정하지 않으면 브라우저가 자체적으로 몇 픽셀을 추가합니다. 내부 블록의 글꼴 크기와 줄 높이도 지정해야 합니다. 이러한 속성은 부모로부터 상속되기 때문입니다.

테이블의 수직 정렬

재산 " 수직 정렬"도 테이블 셀에 영향을 줍니다. 값을 "중간"으로 설정하면 셀 내부의 내용이 중앙에 배치됩니다. 물론 오늘날에는 테이블 형식 레이아웃이 구식으로 간주되지만 예외적인 경우 ""를 지정하여 시뮬레이션할 수 있습니다. 디스플레이: 테이블 셀".

저는 일반적으로 수직 정렬에 이 옵션을 사용합니다. 다음은 기성품 프로젝트에서 가져온 레이아웃의 예입니다. 이와 같이 세로로 중앙에 배치된 사진이 눈길을 끈다.

.one_product .img_wrapper ( display : table-cell ; height : 169px ; vertical-align : middle ; overflow : hidden ; background : #fff ; width : 255px ; ) .one_product img ( max-height : 169px ; max-width : 100 % ; 최소 너비: 140px ; 디스플레이: 블록 ; 여백: 0 자동 ; )

요소에 "none" 이외의 "float" 세트가 있는 경우 여전히 블록(디스플레이: 블록)이 된다는 점을 기억해야 합니다. 그러면 추가 블록 래퍼를 사용해야 합니다.

추가 인라인 요소와의 정렬

인라인 요소의 경우 " 수직 정렬: 중간". 이 경우 " 디스플레이: 인라인" 같은 줄에 있는 것은 공통 중심선에 맞춰 정렬됩니다.

상위 블록의 높이와 동일한 높이로 보조 블록을 생성해야 원하는 블록이 중앙에 배치됩니다. 이를 위해 pseudo-elements:before or:after를 사용하는 것이 편리합니다.

.example-wrapper6 ( height : 300px ; text-align : center ; background : #70DAF1 ; ) .pudge ( display : inline-block ; vertical-align : middle ; background : url(pudge.png ) ; background-color : # fff ; 너비 : 200px ; 높이 : 200px ; ) .riki ( 디스플레이 : 인라인 블록 ; 높이 : 100% ; 수직 정렬 : 중간 ; )

디스플레이: 플렉스 및 정렬

Explorer 8 사용자에 대해 별로 관심이 없거나 사용자를 위해 추가 자바스크립트를 추가하려는 경우 "display: flex"를 사용할 수 있습니다. Flex 상자는 정렬 문제를 정말 잘 처리하며 "margin: auto"를 작성하여 콘텐츠를 내부 중앙에 배치하는 것으로 충분합니다.

지금까지이 방법은 실제로 나를 만난 적이 없지만 특별한 제한은 없습니다.

.example-wrapper7 (디스플레이: flex ; 높이: 300px ; 배경: #AEB96A ; ) .example-wrapper7 img (여백: 자동 ; )

글쎄, 그게 내가 쓰고 싶었던 전부야 CSS 정렬. 이제 콘텐츠 중심에 문제가 없을 것입니다!