各种前端布局方式总结

前端布局方式:其实现实上最多的是各种布局混合。
注意布局与布局方式的区别
下面列一下常用的布局方式:

  1. flex (Flexible Box): (我的最爱)译为弹性布局
  • 6大属性:
属性语义可选值
flex-direction主轴的方向row , row-reverse , column , column-reverse
flex-wrap是否换行nowrap , wrap , wrap-reverse
flex-flowflex-direction属性和flex-wrap属性的简写形式如:row wrap
justify-content项目在主轴上的对齐方式(注意是主轴 column 就是竖着了)flex-start , flex-end , center ,space-between(先贴两边 再评分剩余空间) , space-around(平分剩余空间)
align-items侧轴(单行)(交叉轴,注意主轴是column时侧轴就是水平方向了,以前傻傻分不清概念)flex-start , flex-end , center ,baseline , stretch(拉伸 默认 盒子不要给高度 沿着y(侧轴)拉伸)
align-content多行,就是换行的情况下使用flex-start , flex-end , center ,space-between , space-around,stretch
  • 项目属性(也就是子元素)
属性语义可选值
order项目的排列顺序。数值越小,排列越靠前,默认为00-x
flex-grow项目的放大比例,默认为0,即如果存在剩余空间,也不放大1-x
flex-shrink项目的缩小比例,默认为1,即如果空间不足,该项目将缩小1-x
flex-basis定义了在分配多余空间之前,项目占据的主轴空间x or auto
flexflex-grow, flex-shrink 和 flex-basis的简写none or [ flex-grow flex-shrink flex-basis ]
align-self单个子元素覆盖align-items与align-items一致
  • 注:
    Webkit 内核的浏览器,必须加上-webkit前缀。

    子元素的float、clear和vertical-align属性将失效。
    flex : auto (1 1 auto) 和 none (0 0 auto)
    flex:1 经常用作自适应布局,将父容器的display:flex,侧边栏大小固定后,将内容区flex:1,内容区则会自动放大占满剩余空间。 原理网上说法不一
  1. postion: 定位 (不应把它归到此处,他不是一种布局方式,应该说是定位方式,但常与布局一起故归到这里 display是布局方式)
模式语义作用
static静态定位无定位的意思,元素默认的定位方式
relative相对元素移动位置的时候,相对它原来的位置移动,原来位置继续占有
absolute绝对移动时候相对于最近一级有定位的祖先元素来说,没有祖先元素或者祖先元素没有定位则相对文档,不再占有原有位置
fixed固定相对于浏览器得可视窗口,不占位置
sticky粘性定位相对于固定的结合,相对于浏览器得可视窗口,占位置,必须添加top left right bottom 其中一个才有效,ie不支持
  • 子绝父相: 子元素用绝对时定位父得用相对定位 好处子不会占有位置不会影响兄弟元素
  • 如果有重叠用z-index :x 控制顺序
  • 加了绝对定位的盒子不能通过margin: 0 auto 来水平居中 可以通过 left:50%;margin:-xpx; x 盒子自身的一半
  • sticky 堆叠效果和 表格表头锁定
  1. float:
    容易理解,但清除浮动的方法就多了

float:left right none

浮动由来:

有时候父容器不方便给定高度,而浮动不占位置导致 父容器高度为0
清除浮动后,父容器会根据子容器得出高度,就不会影响下面的标准流盒子(前提父盒子没给定高度)

常用解决方法:

方法举例
额外标签法(浮动元素下方添加一个非浮动元素)在浮动标签末尾添加一个空元素(br 或者不能是行内元素)调用clear :none
父级添加overflowhidden
auto
scoll
父级添加:after伪元素如下

额外:

<div>

<div style="float:left;width:45%;"></div>

<div style="float:right;width:45%;"></div>

<div style="clear:both;"></div>

</div>

overflow :(ie6 不支持)

<div style="overflow: hidden;">

<div style="float:left;width:45%;"></div>

<div style="float:right;width:45%;"></div>

</div>

after (ie6 不支持)

.clearfix:after {
content: "\0020";
display: block;
height: 0;
clear: both;
}

通用:

.cf:after {
  content:"";
  display:block;
}

.cf:after {
  clear:both;
}

/* For IE 6/7 (trigger hasLayout) */
.cf {
  zoom:1;
}
  1. grid 布局(Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大。)
    基本概念:

row 行 column 列
cell 单元格
网格线 grid line float、
display: inline-block、display: table-cell、vertical-align和column-*失效

属性语义属性值
grid-template-columns每一列的列宽px ,%, repeat() 重复, auto-fill(自动填充), fr 关键字(比例关系) minmax(min ,max)(某个范围),auto
grid-template-rows每一行的行高px
grid-row-gap行间距px
grid-column-gap列间距px
grid-gap简写
grid-template-areas指定"区域(area),一个区域由单个或多个单元格组成举例如下
grid-auto-flow划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格。默认的放置顺序是"先行后列"row ,column, rowdense(先行后列",并且尽可能紧密填满,尽量不出现空格),column dense
justify-items设置单元格内容的水平位置start , end , center , stretch
align-items置单元格内容的垂直位置同上
place-items简写
justify-content整个内容区域在容器里面的水平位置start , end ,center ,stretch
space-around:(每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍)
space-between (项目与项目的间隔相等,项目与容器边框之间没有间隔),
space-evenly(项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔)
align-content整个内容区域在容器里面的垂直位置同上
place-content简写
grid-auto-columns有时候,一些项目的指定位置,在现有网格的外部。比如网格只有3列,但是某一个项目指定在第5行。这时,浏览器会自动生成多余的网格,以便放置项目与grid-template-columns一致
grid-auto-rows同上同上
grid-template简写
grid简写grid-auto-columns/rows, grid-template-areas, grid-auto-columns/rows,grid-auto-flow6个,不建议使用 乱
grid-template-columns属性和grid-template-rows属性里面,
还可以使用方括号,指定每一根网格线的名字,方便以后的引用。
container {
  display: grid;
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 100px 100px 100px;
  grid-template-areas: "header header header"
                     "main main sidebar"
                     "footer footer footer";
  }

grid-template-areas:如果某些区域不需要利用,则使用"点"(.)表示

项目属性:

属性语义默认值
项目的位置是可以指定的指定项目在那几条网格线之间除了指定为第几个网格线,还可以指定为网格线的名字
grid-column-start
grid-column-end
grid-row-start
grid-row-end
grid-columngrid-column-start,grid-column-end两个的简写
grid-row同理这两个属性之中,也可以使用span关键字,表示跨越多少个网格
grid-area指定项目放在哪一个区域项目名
也可以是grid-row-start、grid-column-start、grid-row-end、grid-column-end简写
单个项目在单元个的位置
justify-self
align-self
place-self

有点多,多练。
5. 移动端布局(粗略)

em:相对于父级字体大小 rem:相对于根元素的字体大小(html)
vh:等于viewport高度的1/100。例如,如果浏览器的高是900px,1vh求得的值为9px。
vw:如果显示窗口宽度为750px,1vw求得的值为7.5px。

6.百分比布局

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值