搜索
首页web前端css教程手把手教你使用CSS3制作一个简单页面的布局(代码详解)

之前的文章《深入解析微信小程序页面中实现的保存图片(附代码)》中,给大家了解一下微信小程序页面中实现的保存图片。下面本篇文章给大家介绍怎么使用CSS3制作一个简单页面的布局,感兴趣的小伙伴们可以参考一下。

手把手教你使用CSS3制作一个简单页面的布局(代码详解)

兼容性

2009 年,W3C提出了一种新的方案----Flex布局,可以简便、完整、响应式地实现各种页面布局。

微信截图_20210818100454.jpg

  • 标1仅支持旧的flexbox规范,不支持包装。

  • 标2仅支持2012语法

  • 标3不支持flex-wrap,flex-flowalign-content属性

  • 标4部分支持是由于存在大量错误(参见已知问题)

概念

FlexFlexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。

注意,设为Flex布局以后,子元素的float、clearvertical-align属性将失效。

采用Flex布局的元素,称为Flex容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称"项目"。

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size

容器的属性

以下 6 个属性设置在容器上。

  • flex-direction水平还是垂直排列

  • flex-wrap换不换行

  • flex-flow以上 2 个属性的缩写

  • justify-content水平对齐方式

  • align-items垂直对齐方式

  • align-content多行均衡分布

<strong>flex-direction</strong>属性

flex-direction属性决定主轴的方向(即项目的排列方向)。flex-directionrow | row-reverse | column | column-reverse

  • row(默认值):主轴为水平方向,起点在左端。

微信截图_20210818101403.jpg

  • row-reverse:主轴为水平方向,起点在右端。

微信截图_20210818101519.jpg

  • column:主轴为垂直方向,起点在上沿。

微信截图_20210818102554.jpg

  • column-reverse:主轴为垂直方向,起点在下沿。

微信截图_20210818102632.jpg

flex-wrap

默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

flex-wrap: nowrap | wrap | wrap-reverse; 

  • nowrap(默认):不换行。

微信截图_20210818102759.jpg

  • wrap:换行,第一行在上方。

微信截图_20210818102842.jpg

  • wrap-reverse:换行,第一行在下方。

微信截图_20210818102917.jpg

flex-flow

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

<strong>justify-content</strong> 属性(水平方向对齐)

justify-content: flex-start | flex-end | center | space-between | space-around; 

  • flex-start(默认值):左对齐

微信截图_20210818103128.jpg

  • flex-end:右对齐

微信截图_20210818103209.jpg

  • center:居中

微信截图_20210818103450.jpg

  • space-between:两端对齐,项目之间的间隔都相等。

微信截图_20210818103526.jpg

  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

微信截图_20210818103600.jpg

<strong>align-items</strong>属性(垂直方向对齐)

align-items属性定义项目在交叉轴上如何对齐。align-items: flex-start | flex-end | center | baseline | stretch; 

  • flex-start:交叉轴的起点对齐。

微信截图_20210818103709.jpg

  • flex-end:交叉轴的终点对齐。

微信截图_20210818103750.jpg

  • center:交叉轴的中点对齐。

微信截图_20210818103903.jpg

  • baseline : 项目的第一行文字的基线对齐。

微信截图_20210818103946.jpg

  • stretch(默认值):如果项目未设置高度或设为 auto,将占满整个容器的高度。

微信截图_20210818104019.jpg

<strong>align-content</strong>属性

align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。align-content: flex-start | flex-end | center | space-between | space-around | stretch; 

  • flex-start:与交叉轴的起点对齐。

微信截图_20210818104128.jpg

  • flex-end:与交叉轴的终点对齐。

微信截图_20210818104158.jpg

  • center:与交叉轴的中点对齐。

微信截图_20210818104231.jpg

  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。

微信截图_20210818104309.jpg

  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线- 与边框的间隔大一倍。

微信截图_20210818104354.jpg

  • stretch(默认值):轴线占满整个交叉轴。

微信截图_20210818104431.jpg

项目的属性

也就是flex container,它的所有子元素的属性

  • order,排序

  • flex-grow,拉伸

  • flex-shrink,挤压

  • flex-basis, 固定尺寸

  • flexgrow shrink basis的缩写

  • align-self,重写了父级的align-items对齐方式

<strong>order</strong> 属性

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为 0。

微信截图_20210818104655.jpg

<!-- order为-1 排在最前 -->
<div style="order:-1">3</div>

<strong>flex-grow</strong>属性

flex-grow属性定义项目的放大比例,默认为 0,即如果存在剩余空间,也不放大。就是是否拉伸

微信截图_20210818104739.jpg

<div style="flex-grow:1">1</div>
<div>1</div>
<div style="flex-grow:5">2</div>
<div style="flex-grow:1">1</div>

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为 2,其他项目都为 1,则前者占据的剩余空间将比其他项多一倍。

<strong>flex-shrink</strong>属性

flex-shrink属性定义了项目的缩小比例,默认为 1,即如果空间不足,该项目将缩小。排不下去的时候,他会挤压变形,死也要排下去。负值对该属性无效

微信截图_20210818104911.jpg

<div style="flex-shrink:0">0</div>

<strong>flex-basis</strong>属性

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

微信截图_20210818105018.jpg

<div style="flex-basis:100px">100px</div>

<strong>flex </strong>属性

flex属性是flex-grow,flex-shrinkflex-basis的简写,默认值为 0 1 auto。后两个属性可选。 该属性有两个快捷值:auto (1 1 auto)none (0 0 auto)

建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

.test {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 100px;
}

/* 等同于 */
.test {
    flex: 1 1 100px;
}

`

<strong>align-self</strong>属性

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

align-self: auto | flex-start | flex-end | center | baseline | stretch;

微信截图_20210818105205.jpg

<div style="align-self:flex-end;">5</div>

推荐学习:CSS3视频教程

以上是手把手教你使用CSS3制作一个简单页面的布局(代码详解)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:禅境花园。如有侵权,请联系admin@php.cn删除
什么是CSS网格?什么是CSS网格?Apr 30, 2025 pm 03:21 PM

CSS网格是创建复杂,响应式Web布局的强大工具。它简化了设计,提高可访问性并提供了比旧方法更多的控制权。

什么是CSS Flexbox?什么是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

我们如何使用CSS使网站迅速响应?我们如何使用CSS使网站迅速响应?Apr 30, 2025 pm 03:19 PM

本文讨论了使用CSS创建响应网站的技术,包括视口元标签,灵活的网格,流体媒体,媒体查询和相对单元。它还涵盖了使用CSS网格和Flexbox一起使用,并推荐CSS框架

CSS盒装属性有什么作用?CSS盒装属性有什么作用?Apr 30, 2025 pm 03:18 PM

本文讨论了CSS盒装属性,该属性控制了元素维度的计算方式。它解释了诸如Content-Box,Border-Box和Padding-Box之类的值,以及它们对布局设计和形式对齐的影响。

我们如何使用CSS动画?我们如何使用CSS动画?Apr 30, 2025 pm 03:17 PM

文章讨论使用CSS,关键属性并与JavaScript结合创建动画。主要问题是浏览器兼容性。

我们可以使用CSS向我们的项目添加3D转换吗?我们可以使用CSS向我们的项目添加3D转换吗?Apr 30, 2025 pm 03:16 PM

文章讨论了Web项目的3D转换,关键属性,浏览器兼容性和性能注意事项的讨论。(角色计数:159)

我们如何在CSS中添加梯度?我们如何在CSS中添加梯度?Apr 30, 2025 pm 03:15 PM

文章讨论了使用CSS梯度(线性,径向,重复)来增强网站视觉效果,添加深度,焦点和现代美学。

CSS中的伪元素是什么?CSS中的伪元素是什么?Apr 30, 2025 pm 03:14 PM

文章讨论了CSS中的伪元素,它们在增强HTML样式方面的使用以及与伪级的差异。提供实用的例子。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版