1.高级布局
《文档流概念》:页面从上至下,块式标签一行一行排列,内联式一行中从左至右排列
《BFC规则》:左右位置(左右margin)垂直位置(上下margin)容器内外(互不影响)
《脱离文档流》:脱离文档流的元素 拥有black块级元素所有
《文档流概念》:页面从上至下,块式标签一行一行排列,内联式一行中从左至右排列
《BFC规则》:左右位置(左右margin)垂直位置(上下margin)容器内外(互不影响)
《脱离文档流》:脱离文档流的元素 拥有black块级元素所有
综合使用 em,rem,vw,wh,%布局
流式布局---让布局脱离固定值(一般只是宽)限制,可以根据页面情况改变相应发生改变,整体布局不改变
流式布局---让布局脱离固定值(一般只是宽)限制,可以根据页面情况改变相应发生改变,整体布局不改变
百分比布局
响应式布局---不同大小屏幕 显示不同的布局
@media screen and (max-400px ){
/*.d{background-color: white}*/
.d1{
10%;
background-color: #ff2084;
}
响应式布局---不同大小屏幕 显示不同的布局
@media screen and (max-400px ){
/*.d{background-color: white}*/
.d1{
10%;
background-color: #ff2084;
}
浮动布局---float
float:left|right
解决问题 :block box同行显示
清浮动:
<!--1.height-->
<!--2.overflow: hidden-->
<!--3.兄弟:clear: left | right | both-->
<!--4.父元素:after {-->
<!--content: "";-->
<!--display: block;-->
<!--clear: both;-->
float:left|right
解决问题 :block box同行显示
清浮动:
<!--1.height-->
<!--2.overflow: hidden-->
<!--3.兄弟:clear: left | right | both-->
<!--4.父元素:after {-->
<!--content: "";-->
<!--display: block;-->
<!--clear: both;-->
定位布局---position
position属性:
statict 默认 不脱离文档流
relative 不脱离文档流--相对自身
absolute 完全脱离文档流--相对最近的一个定位的父元素
fixed 完全脱离文档流--相对窗口
定位后的元素可进行:
top,left,botomn,right操作
z-index:对于脱离文档流的定位元素显示优先级
flex布局---弹性布局
<!--弹性容器属性display:flex-->
<!--容器设置为弹性容器后,内的元素排成一行,不受内元素宽度和的局限.-->
<!--flex-direction--> row | row-reverse | column | column-reverse
<!--flex-wrap--> nowrap | wrap | wrap-reverse
<!--flex-flow--> 上面2个简写方式
<!--justify-content--> flex-start | flex-end | center | space-between | space-around
<!--align-items--> flex-start|flex-end|center|baseline|stretch
<!--align-content--> flex-start|flex-end|center|space- between|space-around|stretch
<!--弹性容器属性display:flex-->
<!--容器设置为弹性容器后,内的元素排成一行,不受内元素宽度和的局限.-->
<!--flex-direction--> row | row-reverse | column | column-reverse
<!--flex-wrap--> nowrap | wrap | wrap-reverse
<!--flex-flow--> 上面2个简写方式
<!--justify-content--> flex-start | flex-end | center | space-between | space-around
<!--align-items--> flex-start|flex-end|center|baseline|stretch
<!--align-content--> flex-start|flex-end|center|space- between|space-around|stretch
<!--弹性元素属性-->
<!--order-->
<!--align-self--> auto|flex-start|flex-end|center|baseline|stretch
<!--flex-grow-->
<!--flex-shrink-->
<!--flex-basis-->
<!--order-->
<!--align-self--> auto|flex-start|flex-end|center|baseline|stretch
<!--flex-grow-->
<!--flex-shrink-->
<!--flex-basis-->
2.布局坑
兄弟父子坑
文档流 兄弟:上下取最大 左右相加
float 兄弟:上下左右 相加
父子margin坑: 子margin移动父级的margin
父级设置 content,padding-top,border-top;float;定位只有absolut,fixed有效
父级设置 content,padding-top,border-top;float;定位只有absolut,fixed有效
3.xy居中
水平垂直---两个方向居中
//居中的元素是:<div> </div>标签内的元素 div要设置宽高
水平垂直---两个方向居中
//居中的元素是:<div> </div>标签内的元素 div要设置宽高
方式一:通过父元素 统一设置子元素(一般不这样做,应为内部元素未知)
<!--子元素知道宽高|不知宽高-->
水平(block不行):text-aline:center
垂直:(都行)
display:table-cell 单元格
vertical-align:middle
<!--不兼容问题-->
display: flex;
水平: justify-content: center;
垂直:align-items: center;
<!--子元素知道宽高|不知宽高-->
水平(block不行):text-aline:center
垂直:(都行)
display:table-cell 单元格
vertical-align:middle
<!--不兼容问题-->
display: flex;
水平: justify-content: center;
垂直:align-items: center;
方式二:通过子元素自身 单独设置某个(常用)
inline(不能设置宽高,margin.padding 左右有效)元素:可以设置line-height
display:block;
display:block;
block(可设置宽高)元素:可以设置line-height=内容高度(内部的div)+上下高度(相同)
水平:margin:0 auto; 只适用于block型
<!--父级相对定位,子集绝对定位 提一句:定位,float的元素变成block型 如果没设宽高 由内容撑开-->
水平:left:50%
margin-left:-宽/2px;
垂直:(宽高要设)
top:50%
margin-top:-高/2px;
<!--有不兼容问题-->
水平:left:50%
垂直:(宽高没设,内容撑开)
top:50%
transform:translate(-50%,-50%)
水平:left:50%
垂直:(宽高没设,内容撑开)
top:50%
transform:translate(-50%,-50%)
水平:left:0;right:0;top:0;botuom:0;margin:auto;
垂直:(宽高要设)