响应式布局-媒体查询和flex弹性盒

什么是媒体查询(media queries)

为不同尺寸的屏幕设定不同的css样式。

  • 在移动端中使用的频率比较高,不同手机尺寸各不相同且变化比较大
  • 在web端使用的频率不高,因为电脑显示器屏幕尺寸变化不大

@media常用参数

属性描述
width、height浏览器可视宽度、高度
device-width设备屏幕宽度
device-height设备屏幕高度

使用方法

// 13div
 @media screen and (min-device-width:800px) {
         .div div {
             width: 33.3%;
         }
 }
// 12div
 @media screen and (min-device-width:400px) and (max-device-width:799px) {
            .div div {
                width: 50%;
            }
 }
 //11div
 @media screen and (min-device-width:100px) and (max-device-width:399px) {
             .div div {
                width: 100%;
         }
 }

媒体查询引入方式

内部样式表-style标签引入

写在style标签中,有条件的执行某个内部样式表

<style media=""><style>

<style media="(min-device-width:800px)">
        .div div {
            width: 33.3%;
        }
</style>
<style media="(min-device-width:400px) and (max-device-width:799px) ">
        .div div {
            width: 50%;
        }
</style>
<style media="(min-device-width:100px) and (max-device-width:399px)">
        .div div {
            width: 100%;
        }
</style>

外部样式表-link引入

写在link标签中,有条件的引入外部样式表

<link href="样式表路径1" rel="stylesheet" media="(min-device-width:800px)">
<link href="样式表路径2" rel="stylesheet" media="(min-device-width:400px) and (max-device-width:799px)">
<link href="样式表路径3" rel="stylesheet" media="(min-device-width:100px) and (max-device-width:399px)">

flex弹性布局

什么是flex

flexiableBox即弹性盒子,用来进行弹性布局,可以配合rem处理尺寸的适配问题

为什么用flex

  • 为盒装模型提供最大的灵活性
  • 更符合响应式设计的特点

flex基础概念

  • flex容器(flex container)
  • flex项目(flex item)
  • 主轴(main axis)
    • flex item水平排列时,水平x轴为主轴
    • flex item垂直排列时,竖直y轴为轴
  • 交叉轴(cross axis)
    • 与主轴垂直的轴
  • 占用主轴空间(main size)
  • 占用交叉轴空间(cross size)
  • 线轴起止点(main start、main end、cross start、cross end)

注意:如果flex container容器总宽度小于flex item宽度总和,则flex item会被压缩。若允许换行(flex-wrap),就不会被压缩了

6.png

属性

flex-direction

子元素父元素盒子中的排列方式。在父元素中设置

属性值作用
row默认值。从左到右顺序显示
row-reverse从右到左显示,row相反顺序
column垂直显示,从上到下
column-reverse从下到上,column相反顺序

flex-wrap

子元素在父元素盒子中是否换行(列)。在父元素中设置

属性值作用
nowrap默认值。不换行或不换列
wrap换行或换列
wrap-reverse换行或换列,但以相反的顺序

flex-flow

flex-direction和flex-wrap的简写方式

flex-flow:<flex-direction> || <flex-wrap>

flex-flow : row wrap;

justify-content

存在剩余空间时(即flex item 没有占满flex container时),设置flex item及与父边框的间距的方式。在父元素中设置

属性值作用
flex-start默认值。从左到右,挨着行的开头
flex-end从右到左,挨着行的结尾
center居中显示
space-between平均分布在该行上,两边不留间隔空间
space-around平均分布在该行上,两边留有一半的间隔空间

align-items

设置每个flex元素在交叉轴上的默认对齐方式。以每行flex元素为一个整体排列。在父元素中设置

属性值作用
flex-start位于容器开头
flex-end位于容器结尾
center居中显示

align-content

和align-items相似,设置每个flex元素在交叉轴上的默认对齐方式。但是以所有多行flex元素为一个整体对齐。需要结合height属性使用,在父元素中设置。

属性值和justify-content基本相同

其他属性

为子元素设置的属性

属性作用
flex-basis设置弹性盒的伸缩基准值。(相当于宽度,设置此属性后,width值失效)
flex-grow设置弹性盒的扩展比率(值为数字)。当有子元素未占满父元素,有空白时,该子元素扩展所占所有子元素的比率
flex-shrink设置弹性盒的缩小比率(值为数字)。当子元素总宽度多于父元素时,该子元素缩小所占所有子元素的比率。当该值设置为0时,为不缩小,元素过宽时会溢出
flexflex-grow、flex-shrink、flex-basis的简写

特殊写法

属性作用
flex:autoflex:1 1 auto
flex:noneflex:0 0 auto
flex:0%flex:1 1 0%
flex:100pxflex:1 1 100%
flex:1flex:1 1 0%
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务