弹性盒媒体查询
更新:HHH   时间:2023-1-7


一、怪异盒模型
浏览器对盒模型的解析一共有两种模式,一种是标准模式,另一种就是怪异模式。
一般在页面头部声明了DOCTYPE,都会触发标准模式,而如果DOCTYPE缺失则在ie6,ie7,ie8下将会触发怪异模式(quirks 模式)。

    标准盒模型和怪异盒模型的区别:
    在标准模式下,一个块的总宽度= width + margin(左右) + padding(左右) + border(左右)
    在怪异模式下,一个块的总宽度= width + margin(左右)(即width已经包含了padding和border值)

    Css3中box-sizing:属性让两种盒模型相互转变
    box-sizing : content-box || border-box || inherit;

当设置为box-sizing:content-box时,将采用标准模式解析计算,也是默认模式;
当设置为box-sizing:border-box时,将采用怪异模式解析计算;

二、css3多列分栏布局
1.column-count:auto | 整数;---控制栏数
2.column-width:value;---每栏的宽度
3.column-gap : value ;---两栏之间的间距
4.column-rule : 宽度,线型,颜色;---栏与栏的间隔线
类似border,solid | dotted | dashed 实线 | 点线 | 虚线

column-width和column-count这两个属性提供了分栏的标准,只写其中的一个
column-gap和column-rule就处在相邻两列之间。
让某个元素跨栏加到某个元素上:column-span : all / none ; 是否跨栏显示;

三、flex概念
采用flex布局的元素,称为flex容器,它的所有子元素自动成为容器成员,称为容器项目。


容器属性
1、display:flex 设置为弹性盒(父元素添加)
2、flex-direction (主轴排列方向)
说明:指定了弹性子元素在父容器中的位置
row 默认在一行内排列
row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。)
column:纵向排列。
column-reverse:反转纵向排列,从下往上排,最后一项排在最上面
3、justify-content(主轴对齐方式)
内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐

      ■ flex-start  默认,左对齐
      ■ flex-end  右对齐
      ■ center   居中对齐
      ■ space-between  两端对齐,中间自动分配
      ■ space-around  自动分配距离

4、align-items(侧轴对齐方式)
flex-start:顶端对齐
flex-end:底对齐
center:垂直居中对齐
baseline:项目内文本的底线对齐
stretch 默认值 项目的高度自适应容器(注:子元素不能设置高度)
5、flex-wrap
该属性控制flex容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向。
nowrap:flex容器为单行。该情况下flex子项可能会溢出容器
wrap:flex容器为多行。该情况下flex子项溢出的部分会被放置到新行,子项内部会发生断行
wrap-reverse:反转 wrap 排列。
6、align-content(行与行之间对齐方式)
当伸缩容器的侧轴还有多余空间时,本属性可以用来调整「伸缩行」在伸缩容器里的对齐方式,这与调整伸缩项目在主轴上对齐方式的 <‘ justify-content’> 属性类似。注:本属性在只有一行的伸缩容器上没有效果。
■ flex-start没有行间距
■ flex-end底对齐没有行间距
■ center居中没有行间距
■ space-between两端对齐,中间自动分配
■ space-around自动分配距离
7、align-self
align-self 属性规定灵活容器内被选中项目的对齐方式。
注意:align-self 属性可重写灵活容器的 align-items 属性。

auto 默认值。元素继承了它的父容器的 align-items 属性。如果没有父容器则为 "stretch"。
Stretch元素被拉伸以适应容器。
Center元素位于容器的中心。
flex-start元素位于容器的开头。
flex-end 元素位于容器的结尾。
 8、order
number排序优先级,数字越大越往后排,默认为0,支持负数。

9、 flex-grow
flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

.item {
flex-grow: <number>;
}
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
10、 flex-shrink
flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。
 11、 flex-basis
flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

四、媒体查询
媒体查询
可以让我们根据设备显示器的特性(如视口宽度、屏幕比例、设备方向:横向或纵向)为其设定CSS样式,使用媒体查询,可以在不改变页面内容的情况下,为特定的一些输出设备定制显示效果。

响应式网站设计(Responsive Web design)的理念是:
集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相对应的布局。

响应式网站布局的依据是:媒体查询

返回web开发教程...