CSS
CSS3
标准盒模型
属性值:content-box
使用padding的时候 padding会把容器的大小撑开 减去相应的padding值
设置border边框 边框是长在盒子的外面的
计算方式
自身大小 content+border+padding
实际大小 content+border+padding+margin
怪异盒
box-sizing:border-box;
(当文件丢失了文档声明的时候 在IE浏览器中会触发怪异盒模型的计算方式-IE盒模型)
使用padding的时候 不会把容器撑大 不用减去相应的padding值
设置border的时候 边框是长在盒子的内部的
计算
自身大小 设置的宽高值 content(包含了padding和border值)
实际大小 设置的宽高值 content(包含了padding和border值) + margin
弹性盒
flex是flexible box的缩写 任意一个容器都可以指定为flex布局。
当把父盒子设为flex布局以后,子元素的float、clear和vertical-align属性将失效。
通过给父盒子添加flex属性,来控制子盒子的位置和排列方式
父项属性
flex-direction 设置主轴的方向
row 默认值从左到右
row-reverse 从右到左
column 从上到下
column-reverse 从下到上
justify-content 设置主轴上的子元素排列方式
flex-start 默认值 从头部开始 主轴为x轴则从左到右
flex-end 从尾部开始排列
center 在主轴居中对齐(主轴为x轴则水平居中)
space-around 平分剩余空间
space-between 先两边贴边 再平分剩余空间
space-evenly 所有空间全部相等
flex-wrap 设置子元素是否换行
nowrap 默认值 不换行
wrap 换行
wrap-reverse 换行之后反向排序
align-items 设置侧轴上的子元素排列方向(单行)
flex-start 从上到下
flex-end 从下到上
center 挤到一起居中(垂直居中)
stretch 拉伸(默认值)
baseline 基线对齐(默认情况下跟flex-start等效)
子盒子内的文字全部基于基线对齐
align-content 设置侧轴上的子元素的排列方式(多行 单行没有效果)
flex-start 默认值在侧轴的头部开始排列
flex-end 在侧轴的尾部开始排列
center 在侧轴中间显示
space-around 子项在侧轴平分剩余空间
space-between 子项在侧轴先分布在两头,在平分剩余空间
space-evenly 所有空间全部相等
stretch 设置子项元素高度平分父元素高度
flex-flow 复合属性
相当于同时设置了flex-direction和flex-wrap
eg:
flex-flow:column wrap;
flex复合属性
flex-grow :1/0
一个数字,规定项目将相当于其他灵活的项目进行拓展的量
flex-shrink:1/0
一个数字,规定项目将相当于其他灵活的项目进行收缩的量
flex-basis:100%/0%
项目的长度
三个属性可以简写成
flex:1,1,0%;=> flex:1;
子项属性
flex 属性定义子项目分配剩余空间
用flex来表示占多少份数
.item{
flex:1;(子元素占父元素剩余空间的1份 即全部)(default 0)
}
align-self 控制子项自己在侧轴上的排列方式
允许单个项目与其他项目不一样的对齐方式 可覆盖align-item属性;
默认值为auto,表示继承父元素align-items属性,如果没有父元素,则等同于stretch;
span:nth-child(2){
align-self:flex-end;(设置自己在侧轴上的排列方式)
}
当子元素超出父盒子且父盒子不换行时,子元素不被压缩
flex-shrink:0;