当前位置: 首页 > Web前端 > HTML

几种常见的CSS布局

时间:2023-04-03 00:51:29 HTML

本文概述本文将介绍以下几种常见的布局:三栏布局的实现方式有很多种,本文重点介绍圣杯布局和双飞翼布局。通过冲压实现三栏布局还有其他几种方式。1.单列布局常见的单列布局有两种:一种是与页眉、内容和页脚等宽的单列布局。如何实现对于第一种,先设置width:1000px;ormax-width:1000pxforheader,content,footer(两者的区别是当屏幕小于1000px时,前者会有滚动条,后者不会。是的,显示实际宽度);然后设置margin:auto实现居中即可。

.header{margin:0auto;最大宽度:960px;高度:100px;背景颜色:蓝色;}.content{边距:0自动;最大宽度:960px;高度:400px;背景颜色:海蓝宝石;}.footer{边距:0自动;最大宽度:960px;高度:100px;background-color:aqua;}对于第二种,没有设置页眉和页脚的内容宽度,块级元素占满整个屏幕,但是设置了页眉、内容和页脚的内容区域宽度相同,并通过边距:自动实现居中。
.header{保证金:0自动;最大宽度:960px;高度:100px;背景颜色:蓝色;}.nav{边距:0自动;最大宽度:800px;背景色:深灰色;高度:50px;}.content{边距:0自动;最大宽度:800px;高度:400px;背景颜色:海蓝宝石;}.footer{边距:0自动;最大宽度:960px;高度:100px;background-color:aqua;}双列自适应布局双列自适应布局是指一列被内容展开,另一列填充剩余宽度的布局方式1.float+overflow:hidden如果是一个普通的两列布局,可以使用浮动+普通元素的外边距来实现,但是如果是自适应的两列布局,则可以使用float+overflow:hidden来实现。该方法主要是通过溢出来触发BFC,BFC不会重叠浮动元素。由于设置overflow:hidden不会触发IE6浏览器的haslayout属性,所以需要设置zoom:1来兼容IE6浏览器。具体代码如下:

left

div>

right

right

。父母{溢出:隐藏;zoom:1;}.left{浮动:左;margin-right:20px;}.right{overflow:hidden;zoom:1;}注意:如果侧边栏在右边,注意渲染顺序。也就是说,在HTML中,先写侧边栏,再写主要内容2、Flex布局Flex布局,也叫灵活框布局,只需几行代码就可以实现各种页面的布局。//html部分同上。parent{display:flex;}.right{margin-left:20px;flex:1;}3.grid布局Grid布局是一种基于网格的二维布局系统,目的是优化用户界面设计。//html部分同上.parent{display:grid;网格模板列:自动1fr;grid-gap:20px}三列布局特点:中间列宽度自适应,两侧固定宽度1.HolyGrail布局①特点是特殊的三列布局,两边宽度也是固定的侧面和中间的自适应。唯一不同的是,dom结构必须先写在中间栏,这样才能先加载中间栏。.container{padding-left:220px;//为左右两列腾出空间padding-right:220px;}.left{浮动:左;宽度:200px;高度:400px;背景:红色;左边距:-100%;位置:相对;左:-220px;}.center{浮动:左;宽度:100%;高度:500px;背景:黄色;;左边距:-200px;位置:相对;右:-220px;}

圣杯布局

②实现步骤三部分全部设置为向左浮动,否则左右两边内容上不去,无法匹配到中间列为同一行.然后设置center的宽度为100%(实现中间栏的自适应内容),此时通过设置margin-left为负值,左右部分会跳到下一行,这样左右右侧部分返回到与中心部分相同的行。设置父容器的padding-left和padding-right,让左右两边之间留出空隙。通过设置相对定位,让左右零件向两侧移动。③缺点中间部分的最小宽度不能小于左边部分的宽度,否则左边部分会掉到下一行。如果一栏的内容被拉长(如下图),其他两栏的背景将不会被自动填充。(可以用contour布局的positivepadding+negativemargin解决,下面会介绍)2.双飞翼布局①还有三列布局,在圣杯布局的基础上进一步优化,解决了圣杯布局混乱的问题,实现了内容和布局。分离。并且任何列都可以毫无问题地成为最高列。.container{min-width:600px;//保证可以显示中间内容,左宽+右宽的两倍}.left{float:left;宽度:200px;高度:400px;背景:红色;左边距:-100%;}.center{浮动:左;宽度:100%;高度:500px;背景:黄色;}.center.inner{边距:0200px;//添加部分}.right{float:left;200像素;高度:400px;背景:蓝色;左边距:-200px;}双飞翼布局②实现步骤(前两步同圣杯布局)三部分都设置为向左浮动,然后设置宽度中心到100%。此时左右两部分会跳转到下一行;将margin-left设置为负值,使左右部分与中心部分返回同一行;在中心部分添加一个Innerlayerdiv,并设置margin:0200px;③缺点多加一层dom树节点会增加渲染树生成的计算量。3、两种布局实现方式比较:两种布局方式都将主栏放在文档流的最前面,这样主栏先加载。两种布局方式的实现也是一样的,都是让三列浮动,然后通过负边距形成三列布局。两种布局方式的区别在于如何处理中间主列的位置:HolyGrail布局使用父容器的左右padding+两个从列的相对定位;双飞翼布局将主栏嵌套在一个新的父块中,使用主栏的左右边距调整布局。4、等高布局等高布局是指子元素在父元素中的高度相等的布局方式。接下来介绍几种常见的实现方式:1.使用positivepadding+negativemargin,通过equallayout可以解决圣杯布局的第二个缺点,因为背景显示在padding区域,padding值大-底部设置。然后设置一个相同值的负margin-bottom,并在所有列外添加一个容器,并设置overflow:hidden来切断溢出背景。这种可能性可以实现多栏等高布局,也可以实现栏与栏之间的分割线效果。结构简单,兼容所有浏览器。新代码如下:.center,.left,.right{padding-bottom:10000px;底部边距:-10000px;}.container{padding-left:220px;填充右:220px;overflow:hidden;//把Overflow背景截掉}2.使用背景图这种方法是我们最早实现等高列的方法之一,就是使用背景图,把这个背景图用在列的父元素来布局Y轴,从而实现等高列的错觉。实现方式简单兼容,不需要过多的css样式也能轻松实现,但这种方式不适用于流式布局和等高列的布局。在制作样式之前,你需要一个类似下面的背景图片:.container{background:url("column.png")repeat-y;宽度:960px;边距:0自动;}.left{浮动:左;宽度:220px;}.content{浮动:左;宽度:480px;}.right{浮动:左;width:220px;}3.模仿表格布局这是一种非常简单,易于实现的方法。但是兼容性不好,在ie6-7下无法正常运行。...........table{宽度:自动;最小宽度:1000px;保证金:0自动;填充:0;显示:表格;}.tableRow{显示:表格行;}.tableCell{显示:表格单元格;宽度:33%;}.cell1{背景:#f00;height:800px;}.cell2{background:#0f0;}.cell3{background:#00f;}4、使用边框和定位该方法使用边框和绝对定位来实现假列等高的效果。结构简单,兼容各种浏览器,易于掌握。假设您需要实现一个与主要内容高度相同的两列布局。#wrapper{宽度:960px;保证金:0auto;}#mainContent{border-right:220pxsolid#dfdfdf;位置:绝对;宽度:740px;高度:800px;背景:绿色;}#sidebar{背景:#dfdfdf;左边距:740px;位置:绝对;高度:800px;width:220px;......五、粘性layout1.以一段内容
为特色,当
的高度足够长时,紧跟在
之后的元素