목차
2. margin: auto 스페이스
3. 다이나믹 크기가있는 유연한 모달과 사이드 바
" > 4. Flexbox가있는 "스티커"바닥 글 (그리드 없음)
5. 동적 버튼 그룹 및 툴바
6. 플렉스 아이템이 자연스럽게 수축되는 것을 방지합니다
최종 팁
웹 프론트엔드 프런트엔드 Q&A 고급 Flexbox 레이아웃 기술

고급 Flexbox 레이아웃 기술

Jul 29, 2025 am 01:30 AM

Equal-Height 열은 Display : Flex-Wrap 및 Flex를 사용하여 Flex : 1 1 200px의 카드에 달성되어 미디어 쿼리없이 반응 형 랩핑 및 자연스러운 높이 정렬을 허용합니다. 2. 자동 스페이스는 마진을 통해 활성화됩니다 : 플렉스 항목의 자동화는 깨끗한 레이아웃 제어를 유지하면서 내비게이션과 같은 요소를 가장자리로 밀어 넣습니다. 3. Modals와 같은 동적 UI 구성 요소는 Flex-Basis 및 Flex-Grow를 사용하여 고정 및 나머지 공간을 할당하며 Min width : 0 오버플로 문제를 방지합니다. 4. 끈적 끈적한 바닥 글은 컨테이너에 Min-Height : 100VH를 설정하고 기본 컨텐츠의 FLEX : 1을 자연스럽게 밀어 내면서 구현됩니다. 5. 버튼 그룹 및 툴바를 활용하여 갭 및 정당화 컨텐츠가있는 중첩 플렉스 컨테이너를 활용하여 반응이 좋고 균등하게 간격을 둔 컨트롤을 만듭니다. 6. Flex 항목에서 최소 폭 : 0 또는 최소 높이 : 0을 설정하여 원치 않는 수축은 방지하여 적절한 텍스트 포장 및 레이아웃 무결성을 보장합니다. 플렉스, 갭, 마진 및 최소 크기 특성의 결합 된 사용은 최소한의 코드로 강력하고 반응 형 레이아웃을 가능하게합니다.

고급 Flexbox 레이아웃 기술

Flexbox는 CSS의 강력한 레이아웃 모듈로 간단한 정렬 및 간격을 넘어서는 강력한 레이아웃 모듈입니다. 많은 개발자들이 display: flex , flex-directionjustify-content 마스터 링 고급 Flexbox 기술은 코드가 적고 해결 방법이 적은 복잡하고 반응 형 및 유지 관리 가능한 UI를 구축하는 데 도움이 될 수 있습니다.

고급 Flexbox 레이아웃 기술

다음은 Flexbox를 더 똑똑하고 효율적인 방법으로 활용하는 몇 가지 고급 기술입니다.


1. 미디어 쿼리가없는 반응 형 동일 높이 열

고전적인 사용 사례 : 내용에 관계없이 모든 품목의 높이가 같은 카드 그리드 만들기.

고급 Flexbox 레이아웃 기술
 .card-container {
  디스플레이 : Flex;
  갭 : 1rem;
  플렉스 랩 : 랩;
}

.card {
  플렉스 : 1 1 200px; / * 성장, 수축, 최소 폭 */
  디스플레이 : Flex;
  플렉스 방향 : 열;
}
 <div class = "card-container">
  <div class = "card"> ... </div>
  <div class = "card"> ... </div>
  <div class = "card"> ... </div>
</div>
  • flex: 1 1 200px 사용하면 품목이 성장하고 줄어들 수 있지만 각각이 200px보다 미만인 경우 포장을 시작합니다.
  • flex-direction: column .card 의 열을 사용하면 내용이 바닥 글을 아래로 밀고 모든 카드가 플렉스 컨테이너에 있으므로 자연스럽게 줄에서 가장 높은 품목으로 뻗어 있습니다.

결과 : 화면 크기에 우아하게 응답하는 동일한 높이 카드-JavaScript 또는 미디어 쿼리가 필요하지 않습니다.


2. margin: auto 스페이스

Flex 항목에서 margin: auto 사용하여 콘텐츠를 가장자리로 푸시하거나 동적 간격을 만듭니다.

고급 Flexbox 레이아웃 기술
 .Header {
  디스플레이 : Flex;
  정렬 구조 : 센터;
}

.Logo {
  마진 오른쪽 : 1rem;
}

.nav {
  마진 좌파 : 자동; / * NAV를 가장 오른쪽으로 밀어 넣습니다 */
}
 <헤더 클래스 = "헤더">
  <div class = "로고"> 로고 </div>
  <nav class = "nav"> ... </nav>
</헤더>

이것은 특히 유용합니다.

  • 단일 항목을 오른쪽으로 정렬합니다
  • 하나의 항목을 중심으로 한 반면 다른 항목은 왼쪽/오른쪽으로 정렬됩니다
  • 포장지 나 여분의 요소없이 "푸시"간격을 만듭니다

? 팁 : margin: auto 사용 가능한 공간을 흡수합니다. 레이아웃 제어에 매우 편리합니다.


3. 다이나믹 크기가있는 유연한 모달과 사이드 바

flex-basisflex-grow 사용하여 컨텐츠 및 뷰포트를 기반으로 적응하는 UI 구성 요소를 만듭니다.

 . 모달 {
  디스플레이 : Flex;
  높이 : 80VH;
}

.Modal-SideBar {
  플렉스 : 0 0 200px; / * 고정 너비, 성장/수축 없음 */
  배경 : #f0f0f0;
}

. 모달-콘텐츠 {
  플렉스 : 1; / * 남은 공간을 가져옵니다 */
  오버플로 : 자동;
}
  • flex: 0 0 200px = flex-grow: 0 , flex-shrink: 0 , flex-basis: 200px
  • 사이드 바는 200px에 고정되어 있습니다. 내용은 나머지를 채 웁니다.
  • 대시 보드, 편집기 또는 분할 창 레이아웃에 적합합니다.

보너스 : 기본 min-size 동작으로 인해 플렉스 품목이 넘치지 않도록 min-height: 0 또는 min-width: 0 추가하십시오.


4. Flexbox가있는 "스티커"바닥 글 (그리드 없음)

복잡한 위치 또는 JavaScript 대신 Flexbox를 사용하여 컨텐츠가 짧을 때 바닥 글을 뷰포트 하단에 고정하십시오.

 . 페이지 {
  디스플레이 : Flex;
  플렉스 방향 : 열;
  Min-Height : 100VH;
}

.기본 {
  플렉스 : 1;
}

.footer {
  / * 특별한 스타일이 필요하지 않습니다.
}
 <div class = "page">
  <헤더> ... </header>
  <main class = "main"> 컨텐츠 </main>
  <바닥 클래스 = "바닥기"> © 2025 </풋내기>
</div>
  • min-height: 100vh 컨테이너가 화면을 채우도록합니다.
  • flex: 1 on .main 은 모든 여분의 공간을 흡수하여 바닥 글을 밀어냅니다.
  • 내용이 뷰포트를 초과하면 바닥 글이 자연스럽게 따릅니다.

clean 깨끗하고 신뢰할 수 있으며 완전히 반응합니다.


5. 동적 버튼 그룹 및 툴바

중첩 된 플렉스 컨테이너를 사용하여 끊임없이 간격 또는 그룹화 된 컨트롤을 만듭니다.

 .Button-Group {
  디스플레이 : Flex;
  갭 : 0.5rem;
  마진 바닥 : 1rem;
}

.Button-Group .Btn {
  플렉스 : 1;
  텍스트 정렬 : 센터;
}

/ * 분할 그룹 */
.Toolbar {
  디스플레이 : Flex;
  정당화 컨텐츠 : 공간 중간;
  정렬 구조 : 센터;
  갭 : 1rem;
}
 <div class = "툴바">
  <div class = "Button-Group">
    <button class = "btn"> bold </button>
    <button class = "btn"> italic </button>
  </div>
  <div class = "Button-Group">
    <button class = "btn"> 왼쪽 </button>
    <button class = "btn"> 오른쪽 </button>
  </div>
</div>
  • 각 그룹은 비례 공간을 차지합니다.
  • justify-content: space-between 공구 섹션이 분리됩니다.
  • 모든 버튼은 정렬되고 반응이 유지됩니다.

6. 플렉스 아이템이 자연스럽게 수축되는 것을 방지합니다

때로는 공간이 단단해질 때, 특히 텍스트 나 미디어를 사용하면 소름 끼치는 품목이 붕괴됩니다.

다음과 같이 수정하십시오.

 .flex -item {
  최소 폭 : 0; / * 레이아웃을 깨는 대신 텍스트를 감싸도록 허용 */
  최소-높이 : 0; / * 수직 레이아웃에 대해 동일합니다 */
}

일반적으로 :

  • 긴 텍스트 또는 URL이있는 카드
  • 메시지 거품으로 채팅합니다
  • 중첩 된 플렉스 컨테이너가있는 레이아웃

min-width: 0 없으면 플렉스 아이템은 내용의 본질적인 크기를 존중하며 레이아웃이 깨지더라도 아래로 줄어들지 않습니다.


최종 팁

  • 플렉스 컨테이너 (최신 브라우저에서 지원)에 gap 사용하여 간격을 단순화하십시오.
  • 의도적이지 않는 widthflex-basis 혼합하지 마십시오. 충돌 할 수 있습니다.
  • flex: 1 보다 flex-grow: 1 기본 수축/기본이 허용되는 경우 속기.
  • 모바일 테스트 : Flexbox는 잘 지원되었지만 flex-wrap 및 방향 변경을 관찰하십시오.

Advanced Flexbox는 모호한 속성에 관한 것이 아닙니다. flex , margin , min-sizegap스마트 조합 에 관한 것입니다. 기본 사항을 넘어 서면 Flexbox가 우아함과 최소한의 코드로 많은 "그리드 전용"시나리오를 처리 할 수 있습니다.

기본적으로 1D 레이아웃 (행 또는 열) 인 경우 FlexBox는 여전히 컨텐츠가 크기를 지시 할 때입니다.

위 내용은 고급 Flexbox 레이아웃 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

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)

뜨거운 주제

PHP 튜토리얼
1582
276
프론트 엔드 개발자를위한 WASM (WebAssembly)에 대한 깊은 다이빙 프론트 엔드 개발자를위한 WASM (WebAssembly)에 대한 깊은 다이빙 Jul 27, 2025 am 12:32 AM

WebAsSembly (WASM) ISM) ISAGAME-ChangerForfront-EndDevelopersSeekingHigh-performanceWebApplications.1.WasmisalInstructionFormatThatrUnSatnear-NativesPeed, EnablingLanguagesLikerust, C, andgotoExecuteInthebrowser.2.Itclplestrathtrathtrathertrathertrathertrathertrathertrathlact

Zustand와의 성과 최초의 상태 관리 Zustand와의 성과 최초의 상태 관리 Jul 25, 2025 am 04:32 AM

Zustandisalightweight,performantstatemanagementsolutionforReactappsthatavoidsRedux’sboilerplate;1.Useselectivestateslicingtopreventunnecessaryre-rendersbyselectingonlytheneededstateproperty;2.ApplycreateWithEqualityFnwithshalloworcustomequalitychecks

HTML의 링크 태그에서 Rel 속성의 목적은 무엇입니까? HTML의 링크 태그에서 Rel 속성의 목적은 무엇입니까? Aug 03, 2025 pm 04:50 PM

rel="stylesheet"linksCSSfilesforstylingthepage;2.rel="preload"hintstopreloadcriticalresourcesforperformance;3.rel="icon"setsthewebsite’sfavicon;4.rel="alternate"providesalternateversionslikeRSSorprint;5.rel=&qu

프론트 엔드에서 OAUTH 2.0 이해 및 구현 프론트 엔드에서 OAUTH 2.0 이해 및 구현 Jul 25, 2025 am 04:31 AM

OAUTH 2.0을 사용하는 경우 PKCE 권한 부여 코드 프로세스를 암시 적 프로세스 대신 채택해야합니다. 프론트 엔드의 로컬 스토리지에 토큰을 저장하지 않으면 백엔드를 통해 새로 고침 토큰을 처리하는 데 우선 순위가 부여되며 신뢰할 수있는 인증 라이브러리를 사용하여 보안 통합이 달성되어 프론트 엔드 애플리케이션의 보안을 보장합니다.

HTML에서 앵커 태그의 대상 속성의 목적은 무엇입니까? HTML에서 앵커 태그의 대상 속성의 목적은 무엇입니까? Aug 02, 2025 pm 02:23 PM

thetargetattributeinananhtmlanchortagspecifieswheretoopenthelinkeddocument.1._selfopensthelinkinthesametab (default) .2._blankopensthelinkinanewtaborwindow.3._parentopensthelinkintheparentframe.4._topopensthelinkin thepoldowbody

JS 14 및 앱 라우터로 성능을 최적화합니다 JS 14 및 앱 라우터로 성능을 최적화합니다 Jul 26, 2025 am 07:54 AM

useERverComPonentsByDefaultTeorDuceCleientJavaScriptandimProveloadTime; 2.LeverAgelAyoutCachingForPersistentUiwithoutre-RenderDureTingNavigation; 3. OptimizedAfetching withoutomaticCachingandRevalidationusingFetchOppations; 4.StreamContentwithsUspenseNdlo

CSS 서브 그리드로 복잡한 UI 레이아웃 생성 CSS 서브 그리드로 복잡한 UI 레이아웃 생성 Jul 26, 2025 am 06:19 AM

cssubgridenableschildelementStoalignaCrossrowsandcolumnsofAparentGrid, solvingAlignIssUseInnestedLayouts.1.itallowsAgrIditemToInheritTheParent의 GridStructureByusingSubgridforgrid-template-rowsorgrid-template-columns.2

프론트 엔드 국제화 (I18N) 모범 사례 프론트 엔드 국제화 (I18N) 모범 사례 Jul 26, 2025 am 07:59 AM

프론트 엔드의 국제화를 달성하려면 4 단계가 필요합니다. 첫째, 구조화 된 JSON을 사용하여 하드 코딩을 피하기 위해 번역 내용을 중앙에서 관리하십시오. 둘째, 복잡한 언어 규칙을 지원하기 위해 React-I18Next, VUE-I18N 또는 FARMATJS와 같은 성숙한 i18N 라이브러리를 사용하십시오. 셋째, 다른 언어 길이와 RTL 레이아웃에 적응하도록 미리 설계하고 공간을 예약하고 탄성 레이아웃을 사용하십시오. 넷째, 번역 주석을 추가하여 컨텍스트를 명확히하고 협업을 용이하게합니다. 이 네 가지 점은 유지 보수 비용을 줄이고 다국어 적응 정확도 및 개발 효율성을 향상시킬 수 있습니다.

See all articles