响应式布局
用媒体查询实现
max-width:768px 当最大宽度为480px时(即屏幕宽度小于768px时)的布局
min-width:480px 当最小宽度为768px时(即屏幕宽度大于480px时)的布局
@media only screen and (max-width:768px){}
picture-source 实现响应式图片
1234567<picture><source media="(max-width:480px)" srcset="img/480x320.gif"><source media="(max-width:640px)" srcset="img/640x427.gif"><source media="(max-width:720px)" srcset="img/720x480.gif"><source media="(max-width:900px)" srcset="img/900x600.gif"><img src="img/900x600.gif"/></picture>img-srcset实现响应式图片
123456<img sizes="(min-width:900px) 900px,100vw"srcset="img/480x320.gif 480w,img/640x427.gif 640w,img/720x480.gif 720w,img/900x600.gif 900w"src="img/480x320.gif"
CSS进阶
box-sizing
在用百分比布局时,加上边框会影响到整体布局。这时就可以用到box-sizing属性
- content-box:这是CSS2.1指定的宽度和高度的行为。指定元素的宽度和高度(最小/最大属性)适用于box的宽度和高度。元素的填充和边框布局和绘制指定宽度和高度除外
- border-box:并排放置两个带边框的框,这可令浏览器呈现出带有指定宽度和高度的框,并把边框和内边距放入框中
- inherit:指定box-sizing属性的值,应该从父元素继承
弹性盒子布局
float属性会失效
display:flex;
设置弹性盒子,默认情况下,左对齐;不换行布局
flex-direction:
- row:行,从左向右排列
- row-reverse:行反方向,从右向左排列
- column:列,从上至下
- column-reverse:列反方向,从下至上
当外层盒子的宽度和高度不足以容纳内层布局时,内层的盒子会被压缩
换行
flex-warp:
- nowarp:默认不换行
- warp:换行
- warp-reverse:反向换行
布局
justify-content-对齐方式
- center:居中
- flex-start:左对齐
- flex-end:右对齐
- space-around:环绕,左右/上下等比留白
- space-between:相邻盒子之间等比留白
align-item-单行对齐方式
- flex-start
- center
- flex-end
align-content-多行内容对齐方式
- flex-start
- center
- flex-end
练习
垂直方向上居中布局
- 当flex-direction:row
justify-content:center/space-round/space-between.居中为左右居中,留白部分是相对于行内列之间的留白。
这时align-item:center是每行相对于上下的留白。即垂直居中
- 当flex-direction:column
justify-content:center/space-round/space-between.居中为上下居中,留白部分是相对于行与行之间的留白。
这时align-item:center是相对于左右的留白。即水平居中