css3开发:flexbox布局实例分析

Flex布局实战篇 说在前面的话,实战案例来源于阮一峰老师的博客,上一篇总结了阮老师的Flex布局语法,本篇主要是实战。啊啊,本来想在gitHub上创建的,想想太麻烦,而且代码量并不多,就算了,先在博客上整理一遍吧。因为阮老师代码给的不全(当然给的都是重点!),所以我贴出了完整的代码(请不要纠结细节),就厚着脸皮戳了原创标签哈哈哈哈哈哈。。。欢迎各位指正不当之处。阮老师Flex布局语法篇:戳这里阮老师Flex布局实战... 阅读详情

上一篇文章介绍了Flex布局的语法,今天介绍常见布局的Flex写法。

你会看到,不管是什么布局,Flex往往都可以几行命令搞定。

我只列出代码,详细的语法解释请查阅《Flex布局教程:语法篇》。我的主要参考资料是Landon Schropp的文章和Solved by Flexbox。

一、骰子的布局

骰子的一面,最多可以放置9个点。

下面,就来看看Flex如何实现,从1个点到9个点的布局。你可以到codepen查看Demo。

如果不加说明,本节的HTML模板一律如下。


<div class="box">
  <span class="item"></span>
</div>

上面代码中,div元素(代表骰子的一个面)是Flex容器,span元素(代表一个点)是Flex项目。如果有多个项目,就要添加多个span元素,以此类推。

1.1 单项目

首先,只有左上角1个点的情况。Flex布局默认就是首行左对齐,所以一行代码就够了。


.box {
  display: flex;
}

设置项目的对齐方式,就能实现居中对齐和右对齐。


.box {
  display: flex;
  justify-content: center;
}


.box {
  display: flex;
  justify-content: flex-end;
}

设置交叉轴对齐方式,可以垂直移动主轴。


.box {
  display: flex;
  align-items: center;
}


.box {
  display: flex;
  justify-content: center;
  align-items: center;
}


.box {
  display: flex;
  justify-content: center;
  align-items: flex-end;
}


.box {
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
}

1.2 双项目


.box {
  display: flex;
  justify-content: space-between;
}


.box {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}


.box {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
}


.box {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-end;
}


.box {
  display: flex;
}

.item:nth-child(2) {
  align-self: center;
}


.box {
  display: flex;
  justify-content: space-between;
}

.item:nth-child(2) {
  align-self: flex-end;
}

1.3 三项目


.box {
  display: flex;
}

.item:nth-child(2) {
  align-self: center;
}

.item:nth-child(3) {
  align-self: flex-end;
}

1.4 四项目


.box {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-content: space-between;
}

HTML代码如下。


<div class="box">
  <div class="column">
    <span class="item"></span>
    <span class="item"></span>
  </div>
  <div class="column">
    <span class="item"></span>
    <span class="item"></span>
  </div>
</div>

CSS代码如下。


.box {
  display: flex;
  flex-wrap: wrap;
  align-content: space-between;
}

.column {
  flex-basis: 100%;
  display: flex;
  justify-content: space-between;
}

1.5 六项目


.box {
  display: flex;
  flex-wrap: wrap;
  align-content: space-between;
}


.box {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-content: space-between;
}

HTML代码如下。


<div class="box">
  <div class="row">
    <span class="item"></span>
    <span class="item"></span>
    <span class="item"></span>
  </div>
  <div class="row">
    <span class="item"></span>
  </div>
  <div class="row">
     <span class="item"></span>
     <span class="item"></span>
  </div>
</div>

CSS代码如下。


.box {
  display: flex;
  flex-wrap: wrap;
}

.row{
  flex-basis: 100%;
  display:flex;
}

.row:nth-child(2){
  justify-content: center;
}

.row:nth-child(3){
  justify-content: space-between;
}

1.6 九项目


.box {
  display: flex;
  flex-wrap: wrap;
}

二、网格布局

2.1 基本网格布局

最简单的网格布局,就是平均分布。在容器里面平均分配空间,跟上面的骰子布局很像,但是需要设置项目的自动缩放。

HTML代码如下。


<div class="Grid">
  <div class="Grid-cell">...</div>
  <div class="Grid-cell">...</div>
  <div class="Grid-cell">...</div>
</div>

CSS代码如下。


.Grid {
  display: flex;
}

.Grid-cell {
  flex: 1;
}

2.2 百分比布局

某个网格的宽度为固定的百分比,其余网格平均分配剩余的空间。

HTML代码如下。


<div class="Grid">
  <div class="Grid-cell u-1of4">...</div>
  <div class="Grid-cell">...</div>
  <div class="Grid-cell u-1of3">...</div>
</div>

.Grid {
  display: flex;
}

.Grid-cell {
  flex: 1;
}

.Grid-cell.u-full {
  flex: 0 0 100%;
}

.Grid-cell.u-1of2 {
  flex: 0 0 50%;
}

.Grid-cell.u-1of3 {
  flex: 0 0 33.3333%;
}

.Grid-cell.u-1of4 {
  flex: 0 0 25%;
}

三、圣杯布局

圣杯布局(Holy Grail Layout)指的是一种最常见的网站布局。页面从上到下,分成三个部分:头部(header),躯干(body),尾部(footer)。其中躯干又水平分成三栏,从左到右为:导航、主栏、副栏。

HTML代码如下。


<body class="HolyGrail">
  <header>...</header>
  <div class="HolyGrail-body">
    <main class="HolyGrail-content">...</main>
    <nav class="HolyGrail-nav">...</nav>
    <aside class="HolyGrail-ads">...</aside>
  </div>
  <footer>...</footer>
</body>

CSS代码如下。


.HolyGrail {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}

header,
footer {
  flex: 1;
}

.HolyGrail-body {
  display: flex;
  flex: 1;
}

.HolyGrail-content {
  flex: 1;
}

.HolyGrail-nav, .HolyGrail-ads {
  /* 两个边栏的宽度设为12em */
  flex: 0 0 12em;
}

.HolyGrail-nav {
  /* 导航放到最左边 */
  order: -1;
}

如果是小屏幕,躯干的三栏自动变为垂直叠加。


@media (max-width: 768px) {
  .HolyGrail-body {
    flex-direction: column;
    flex: 1;
  }
  .HolyGrail-nav,
  .HolyGrail-ads,
  .HolyGrail-content {
    flex: auto;
  }
}

四、输入框的布局

我们常常需要在输入框的前方添加提示,后方添加按钮。

HTML代码如下。


<div class="InputAddOn">
  <span class="InputAddOn-item">...</span>
  <input class="InputAddOn-field">
  <button class="InputAddOn-item">...</button>
</div>

CSS代码如下。


.InputAddOn {
  display: flex;
}

.InputAddOn-field {
  flex: 1;
}

五、悬挂式布局

有时,主栏的左侧或右侧,需要添加一个图片栏。

HTML代码如下。


<div class="Media">
  <img class="Media-figure" src="" alt="">
  <p class="Media-body">...</p>
</div>

CSS代码如下。


.Media {
  display: flex;
  align-items: flex-start;
}

.Media-figure {
  margin-right: 1em;
}

.Media-body {
  flex: 1;
}

六、固定的底栏

有时,页面内容太少,无法占满一屏的高度,底栏就会抬高到页面的中间。这时可以采用Flex布局,让底栏总是出现在页面的底部。

HTML代码如下。


<body class="Site">
  <header>...</header>
  <main class="Site-content">...</main>
  <footer>...</footer>
</body>

CSS代码如下。


.Site {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}

.Site-content {
  flex: 1;
}

七,流式布局

每行的项目数固定,会自动分行。

CSS的写法。


.parent {
  width: 200px;
  height: 150px;
  background-color: black;
  display: flex;
  flex-flow: row wrap;
  align-content: flex-start;
}

.child {
  box-sizing: border-box;
  background-color: white;
  flex: 0 0 25%;
  height: 50px;
  border: 1px solid red;
}
flex盒子模型教程 作者:阮一峰,腾讯后台开发,前端开发学习教程 (3):换行,第一行在下方。 阅读详情

相关推荐

一文搞懂 CSS Flexbox 布局 - 2020年最新版

目录开启 Flexbox 布局对齐方式justify-contentflex-startcenterflex-endspace-betweenspace-evenlyspace-aroundalign-itemsstretchflex-startcenterflex-endbaselinealign-content子元素覆盖对齐方式排列方式空间占比Flex-basis缩放flex-growflex...

张旭乾 - 全栈工程师/海归 1993

Flex布局教程(非常受用)

前言: 本文大部分参考自阮一峰的Flex布局教程,部分进行了“易于理解”的描述; 原文地址: http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html http://www.ruanyifeng.com/blog/2015/07/flex-examples.html 一、语法篇 1、概述 网页布局(layout)是 CSS 的一个重点应用。布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + f.

訾博(ZiBo)的博客 5万+

CSS Grid + Flexbox响应式复杂布局实现

在前端布局中,CSS Grid和Flexbox是两种强大的布局工具,但它们各自擅长不同的场景:结合使用这两种布局技术,我们可以:CSS Grid是一种二维布局系统,允许我们同时控制行和列: 2. Flexbox基础 Flexbox是一种一维布局系统,适合处理元素的对齐和分布: 🚀 基础实现:卡片布局 让我们先通过一个简单的卡片布局,了解如何结合使用CSS Grid和Flexbox。我们需要实现一个响应式卡片布局,包含以下特点: 在这个例子中,我们使用了:现在让我们实现一个更复杂的仪表板布局,展示如何结合C

LikeStudyBoy的博客 799

flex布局(阮一峰老师的)

网页布局(layout)是 CSS 的一个重点应用。布局的传统解决方案,基于,依赖属性 +属性 +属性。它对于那些特殊布局非常不方便,比如,就不容易实现。2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

xiaonuo930110的博客 1万+

# CSS3 现代布局全攻略:Flexbox 终极指南

在网页开发中,布局始终最基础也是最关键的环节。随着 CSS3 的普及,Flexbox(弹性盒)布局系统彻底改变了我们构建网页的方式。本文将深入解析这种现代布局方案,帮助你轻松应对各种布局需求。

前端小巷子的博客 863

Flex 布局教程——阮老师

超级实用的css布局

Dove言和 1565

CSS布局实战:Flexbox 与 Grid 精髓解析

Flexbox 与 Grid 精髓解析

欢迎来到这里,希望文章能对你有所帮助 1864

CSS3 Flexbox 布局详解:告别浮动,拥抱弹性盒子

本文旨在解决前端开发者在传统布局中的常见痛点(如垂直居中、多列自适应),系统讲解 Flexbox 的核心原理与实战技巧。内容覆盖 Flexbox 的基础概念、关键属性、数学计算逻辑,以及导航栏、卡片列表等高频场景的实现方法。本文从“装修房间”的生活场景切入,逐步拆解 Flexbox 的核心概念(容器、项目、主轴/交叉轴),通过数学公式和代码案例讲解布局逻辑,最后结合导航栏、响应式卡片等实战场景,帮你彻底掌握 Flexbox。Flex容器(Flex Container):开启了或。

小白菜的博客 1718

CSS FlexBox布局全面详解

1. 什么是FlexBox FlexBox(”弹性布局”)是CSS3提供的用于布局的一套新属性,这套属性包括针对容器(弹性容器,flex container)和针对其直接子元素(弹性项,flex item)的两类属性 FlexBox可以控制弹性项(flex item)的以下方面: 大小,基于内容和可用空间 流动方向,水平还是垂直,正向还是反向 两个轴向的对齐和分布 顺序,可覆盖源代码中的顺序 flex container默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axi

qq_43293207的博客 4076

从零到英雄:如何用FPGA和AD9288打造你的第一台便携式示波器

本文详细介绍了如何利用FPGA和AD9288 ADC芯片从零开始打造一台高性能便携式示波器。通过硬件架构设计、高速数据采集系统实现及信号处理与显示系统的开发,读者可以掌握400Msps采样率的实现方法,并了解关键器件选型与系统优化技巧。

jjj34的博客 277

fastbin attack快速入门

0x01 fastbin简介 Fastbin包含0x20~0x80大小bin的数组指针,用于快速分配小堆块。fastbin按照单链表结构进行组织,相同大小的bin在同一个链表中,fd指向下一个bin,采用LIFO(Last In First Out)机制。在fastbin中,堆块的inuse标志都为1,处于占用状态,防止chunk释放时进行合并,加快小堆块的分配。 正常fastbin的使用 通过这个简单的案例来了解fastbin的单链表结构,malloc和free的过程。 #include<stdio

abelxu 1571

CSS3的flexbox布局

本文转自:http://yangyicode.com/ccs3-flexbox-layout/ CSS3为display属性增加了一个新值flex,于是诞生了一种新的布局方式:flexbox布局。flexbox布局的优点是可以根据需要自动修改元素的间距和大小。利用这点,可以在不借助任何框架的情况下,只用短短几行代码就实现响应式布局。 比如: 点击这里查看demo

ssisse的博客 2030

RSA算法详解:万字文章详解RSA的加密与解密

为了彻彻底底的研究明白RSA算法,真的是。。煞(lei)费(si)苦(wo)心(le),首先我希望自己前前后后、彻彻底底的琢磨明白,其次我也希望我把他分享出来以后,大家都能读得懂,这篇文章真的是我迄今为止写的又臭又长的一篇文章了,但是我能保证的是,你读完了以后,绝对不会再问RSA是啥玩意儿了。。

布啦啦 7668

如何解决CSS布局错乱问题:从浮动到Flexbox

如何解决CSS布局错乱问题:从浮动到Flexbox

商务合作欢迎私信我 8387

YOLOv8改进 | 注意力机制 | 添加HAttention(HAT)超分辨率重建助力小目标检测 (全网首发,超分辨率检测)

本文给大家带来的改进机制是HAttention注意力机制,混合注意力变换器(HAT)的设计理念是通过融合通道注意力和自注意力机制来提升单图像超分辨率重建的性能。通道注意力关注于识别哪些通道更重要,而自注意力则关注于图像内部各个位置之间的关系。HAT利用这两种注意力机制,有效地整合了全局的像素信息,从而提供更为精确的结果(这个注意力机制挺复杂的光代码就700+行),但是效果挺好的也是10月份最新的成果非常适合添加到大家自己的论文中。⭐⭐⭐⭐⭐(最新的改进机制)

Snu77的博客 1万+

STM32Cube高效开发教程<基础篇>(一)----概述

一、 STM32系列器件和开发工具发展历史声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。一、 STM32系列器件和开发工具发展历史。

我的博客 1171

前端CSS:CSS的Flexbox布局

相比于传统的布局方法,Flexbox更加灵活,尤其适用于响应式设计和多屏幕设备的支持。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身农奴把歌唱,通过媒体查询和Flexbox的结合,可以创建出自适应的响应式设计。通过定义每个项目的宽度和高度,可以创建出整齐的卡片式布局。通过定义每个表单项的宽度,可以轻松创建整洁的表单布局。通过设置多个Flex容器,可以创建出复杂的网格布局。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1167

【WorkBuddy专栏28】WorkBuddy 网页抓取完全实战——从翻车到行云流水

WorkBuddy 网页抓取完全实战——从翻车到行云流水

AI人人懂 1055

CSS Flexbox 布局:简化响应式设计与复杂布局

通过本文的学习,我们了解了 CSS Flexbox 布局的基本原理及常用属性,掌握了如何用它来创建简单到复杂的布局。Flexbox 提供了一种高效且灵活的方式来实现响应式设计,并解决了许多传统布局方法中的挑战。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1538

[实践篇]13.13 再来梳理一下HAB的设计原理

HAB全称为Hypervisor Abstraction,即硬件抽象,主要用于提供对HOST OS硬件资源的访问。

从0到1,突破自己 7258

RK3588 DDR5 方案

RK3588 DDR5方案支持多种LPDDR5/LPDDR5X内存型号,包括美光、三星、海力士、江波龙和佰维等品牌。文档详细列出了已验证的DDR5内存规格,涵盖2GB-16GB容量范围,提供组织形式、封装类型和测试状态等信息。其中美光型号最全面,支持12GB/16GB大容量方案。部分型号处于测试验证阶段(T/A),需量产进一步确认性能。该方案为RK3588平台开发提供可靠的内存选型参考。

501846585_QQAndroid_java 1081

CSS Flexbox(弹性布局)

Flexbox是一种非常实用和强大的CSS布局技术,flex能灵活处理容器内的子元素布局,它可以帮助开发人员更加轻松地实现各种布局需求,尤其在容器尺寸,子元素的数量和尺寸都不确定的情况下。

小谷同学的博客 1379

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

CSS3 Flexbox 布局完全指南(图解 Flexbox 布局详细教程)

背景 Flexbox 布局(也叫Flex布局,弹性盒子布局)模块( W3C 候选推荐,截止到2017年10月)旨在提供一个更有效地布局、对齐方式,并且能够使容器中的子元素大小未知或动态变化情况下仍然能够分配好子元素之间的空间。 Flex 布局的主要思想是使父容器能够调节子元素的宽度/高度(和排列顺序),从而能够最好地填充可用空间(主要是为了适应所有类型的显示设备和屏幕尺寸)。flex布容器能够...

51yunOA 1125

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

什么是CSS Grid布局?什么是Flexbox布局?它们两者有什么不同

CSS Grid布局的基本概念Grid布局的作用示例一:基本的Grid布局代码解释示例二:复杂的Grid布局代码解释Flexbox布局的基本概念Flexbox布局的作用示例三:基本的Flexbox布局代码解释示例四:复杂的Flexbox布局代码解释示例五:混合使用Grid和Flexbox代码解释实际工作中的使用技巧在现代Web开发中,CSS Grid Layout(简称Grid)和Flexbox都是强大的布局工具,可以用来创建复杂的页面布局。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1359

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

使用CSS3 Flexbox布局

http://www.w3cplus.com/css3/css3-flexbox-layout.html   本文由大漠根据Helen Emerson的《Using the CSS3 flexbox layout》所译,整个译文带有我们自己的理解与思想,如果译得不好或不对之处还请同行朋友指点。如需转载此译文,需注明英文出处:http://helephant.com/2013/03/

梦想狂奔的专栏 992

CSS3学习教程,从入门到精通,CSS3 弹性盒子(Flexbox)布局全面指南(20)

Flexbox(弹性盒子)是 CSS3 提供的一种一维布局模型,可以轻松实现各种复杂的页面布局。它特别适合处理不同屏幕尺寸下的元素排列和对齐问题。

qq_45746668的博客 1595
上一篇: H5开发:论click tap touch三者的区别
下一篇: H5开发:详说 Cookie, LocalStorage 与 SessionStorage
Generon
博客等级 码龄11年 135粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值