CSS布局(现代网页布局)---flex布局,grid布局,定位布局,多列布局

发布时间:2025-12-23 09:57:59 作者:cxyx 来源:本站 浏览量(7) 点赞(9)
摘要:一、CSS布局CSS布局是网页设计的核心技术之一,用于控制元素在页面中的排列方式。每种技术都有它们的用途,各有优缺点,相互辅助。l简单布局:优先使用Flexbox(一维)或Grid(二维)。l复杂响应式布局:使用Grid+媒体查询。l文本内容分栏:多列布局(column-count)l兼容旧浏览器:浮动布局

一、CSS布局

CSS布局是网页设计的核心技术之一,用于控制元素在页面中的排列方式。

每种技术都有它们的用途,各有优缺点,相互辅助。

简单布局:优先使用Flexbox(一维)Grid(二维)

复杂响应式布局:使用Grid+媒体查询。

文本内容分栏:多列布局(column-count)

兼容旧浏览器:浮动布局或Flexbox的降级方案。

CSS Grid逐渐成为主流,支持更复杂的布局场景。

1. 正常布局流

正常布局流(normal flow)是指在不对页面进行任何布局控制时,浏览器默认的HTML布局方式。也称为标准流。正常布局流是CSS布局的基石,页面大的布局基本就是利用区块元素上下罗列而成.

2. 模式转换display

模式转换 display:正常流中所有内容都有一个display的属性,用作元素默认行为方式。

display属性允许我们更改默认的显示方式

displayblock; 转换为区块元素   独占一行,可以设置宽高,默认撑满父容器

displayinline; 转换为行内元素(罕见)   不独占一行,不可以设置宽高,默认宽度由内容决定

displayinline-block; 转换为行内块元素(较少)     不独占一行,可以设置宽高,默认撑满父容器

使用场景:

1.让块级盒子一行显示。

2.让行内盒子具备宽度高度。 

注意: 

1.行内块元素中间会有空白缝隙。给父元素字号改为0可以去掉。

2.实际开发适合于对间距要求不高的情况下可以转换。 

3.如果真的要精细布局,请用flex或者grid更合适。 

3. 浮动float(不太重要)

浮动(float)可以让元素脱离文档流,向左或向右浮动,直到碰到父容器边缘或其他浮动元素

floatleft

floatright

floatnone (默认不浮动)

浮动可以让元素脱离文档流,影响其他元素的布局

脱离文档流:盒子上浮其他文档流的上方,浮动的盒子不占位置   

清除浮动(闭合浮动),简单来说,就是让浮动的元素尽量控制在父盒子内,不要影响其他盒子

额外标签法,在浮动元素的最后面,新增一个块级标签。添加属性:clear:both;

单伪元素清除浮动  父元素添加伪元素

双伪元素清除浮动   父元素添加双伪元素

overflow 清除浮动  父元素添加overflowhidden

 

二、flex布局

FlexboxCSS弹性盒子布局模块(FLexible Box Layout Module)的缩写,可以快速实现元素的对齐,分布和空间分配

核心:

父控子(亲父子)

父盒子控制子盒子如何排列布局

父盒子称为容器,子盒子称为项目

主轴和交叉轴(侧轴) 

主轴默认水平方向,交叉轴默认垂直方向,可以更改

1. 父盒子属性 

1display 定义元素为Flex容器

image.png

容器·(父盒子)设置displayflex可以让子盒子按照主轴方式排列

如果子元素有大小,则按照给定大小来显示

如果子元素没有大小,则高度拉伸至充满父容器,宽度按内容

若子元素总宽度超过容器宽度,默认会压缩子元素

2justify-content 定义主轴上的对齐方式(整体分布)

justify-contentflex-start;左对齐(默认)

justify-contentflex-end;右对齐

justify-contentcenter;居中对齐

justify-contentspace-between;两端对齐   A--B--C

justify-contentspace-around;项目两层间隔相等  每个盒子左右有一个相等的距离          -A--B--C-

justify-contentspace-evenly;项目间隔均匀分布  盒子最左边和最右边以及盒子之间的距离都是一样的       --A--B--C--

3align-items 定义交叉轴上的对齐方式(单行时整体对齐)     

align-itemscenter; 居中对齐

align-itemsflex-start;交叉轴起点对齐

align-itemsflex-end;终点对齐

align-itemsstretch;项目拉伸填充整个容器高度(需要子项目无固定高度)

4flex-direction 定义主轴方向(项目排列方向) 

flex-directionrow;默认子元素沿水平主轴排列

flex-directionrow-reverse;沿水平反向

flex-directioncolumn;沿垂直主轴排列

flex-directioncolumn-reverse;沿垂直主轴反向排列

5flex-warp 控制是否换行 

flex-warpnowarp;默认不换行,可能被压缩

flex-warpwarp; 换行

flex-warpwarp-reverse;翻转(第一行上方,第二行下方)

6align-content 定义多行时交叉轴上的对齐方式(仅当flex-warpwarp;且内容换行时生效)

align-contentstart

align-contentend

align-content space-between;两端对齐

align-contentspace-around

align-contentspace-evenly 

7gap间距

用于设置行和列之前的间隙,写在父元素身上。

gap20px;行和列保持20px像素间隙

gap20px 30px;行间距20像素。列间距30像素 

2. 子盒子属性        

控制自身的尺寸,顺序或对齐方式

flex-grow 定义子元素剩余空间分配的放大比例

flex-shirk 定义子元素剩余空间分配缩小比例

flex-basis 定义项目在主轴方向的初始大小

flex 前面三个的缩写    flex 1=flex 1 1 0%(等比放大/收缩,初始无基准尺寸)每个小盒子占一份

align-self 覆盖容器的align-items,单独定义某个项目交叉轴对齐方式

order 定义项目排列顺序(数值约小约靠前) 

3. 垂直对齐

解决图片底部空白缝隙的问题

图片转换为块级元素

设置图片对齐方式不是基线对齐    vertical-aligntop

 

三、grid布局

网格布局是一种二维布局模型,允许开发者通过定义行和列来精确控制网页元素的位置和尺寸。

网格布局的核心: 创建好网格并放入各类元素

容器(父盒子)设置displaygrid;(块级)或者displayinline-grid(行类),与弹性盒子不同的是,在定义网格后,网页并不会马上发生变化,因为displaygrid的申明只创建了一个只有一列的网格

实际开发大部分是两者混用的:

1.Flexbox:适合快速实现一维布局、动态内容对齐。比如单行布局

2.Grid:适合构建复杂页面框架,提供更强大的二维控制能力。比如多列或者响应式等

 

1. 网格轨道(Grid Tracks)决定了网格容器的基础布局结构,为子元素提供放置的位置 

grid-template-columns200px 200px 200px;定义网格中的列

grid-template-rows200px 200px 200px;定义网格中的行

有几个属性值代表创建几行几列,属性值可以为

固定长度empx

百分比,容器宽度百分比

fr单位。分配轨道剩余空间的比例

auto由内容自动撑开

repeat31fr)函数,简化重复定义的列

minmax(最小值,最大值)函数,定义列宽最大值和最小值

repeat()函数

语法:

repeat(次数,轨道尺寸)repeat(自动填充,轨道尺寸)

自动填充:适用于响应式布局中列数随容器宽度变化的场景。

auto-fill:尽可能多地创建列。

auto-fit:尽可能拉伸列填满容器(会合并空白,列宽不小于minmax的最小值)

2. 网格轨道-对齐方式

justify-content控制列轨道在容器内水平分布

align-content控制行轨道在容器类水平分布

start  end center space-around space-between space-evenly

 

3. gap属性用于设置行与列之间的间隙(网格间距) 

也可以分开写column-gaprow-gap

4. 网格线grid line 

使用网格布局时被创建,该属性加到子元素身上

使用场景:

1.实现元素跨越多个网格单元。 

实现语法1

跨列:grid-column:开始线编号/结束线编号;

跨行:grid-row:开始线编号/结束线编号;

实现语法2

跨列:grid-column:开始线编号/span跨单元格数量;

跨行:grid-row:开始线编号/span跨单元格数量;

5. 网格填充方式grid-auto-flow

&l

二维码

扫一扫,关注我们

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,版权登记,商标注册等

立即咨询 0535-8953057