响应式布局1. 媒体查询与弹性布局

1. 媒体查询

        媒体查询(Media Queries)是一种 CSS3 的功能,用于根据设备的特性和特定的媒体类型来应用不同的样式规则。媒体查询使得网页可以根据不同设备的屏幕尺寸、分辨率、浏览器视口大小等条件来自适应地调整布局和样式,从而提供更好的用户体验。

        通过使用媒体查询,开发者可以根据不同的媒体特性定义不同的 CSS 规则,并将其应用于特定的设备或媒体类型。媒体查询通过检查设备的属性和媒体类型来判断是否应用相应的 CSS 规则。

        简单来讲,就是通过设计一套CSS代码,使得网页既可以适应电脑的大屏幕,也可以适应安卓、苹果等等手机的屏幕尺寸。

        媒体查询的语法通常是在 CSS 样式表中使用 @media 规则来定义。例如,下面是一个简单的媒体查询的示例:




    
    Title
    




 test1.css文件代码

body {
    background-color: black;
}

@media screen and (min-device-width: 100px) and (max-device-width: 300px) {
    body {
        background-color: azure;
    }
}

@media screen and (min-device-width: 301px) and (max-device-width: 500px) {
    body {
        background-color: bisque;
    }
}

代码实现了根据不同的屏幕尺寸来更换背景颜色

响应式布局1. 媒体查询与弹性布局_第1张图片

通过使用媒体查询,可以实现响应式设计,使网页在不同设备上以最佳方式呈现。例如,在移动设备上可以使用媒体查询来调整布局、字体大小和图像大小,以适应较小的屏幕空间,提升用户体验。媒体查询还可以用于隐藏或显示特定的内容、调整导航菜单样式等。

1.1. @media的常用参数

@media中可以设置有关屏幕尺寸的参数:

属性名称 作用
width、height 浏览器可视高度、宽度
device-width 设备屏幕的宽度
device-height 设备屏幕的高度

浏览器宽度高度获取:




    
    Title
    


注意,设备屏幕和浏览器屏幕不一样 

响应式布局1. 媒体查询与弹性布局_第2张图片

响应式布局1. 媒体查询与弹性布局_第3张图片

接下来再写一个按照不同尺寸设置每行子元素的摆放,这对于实际开发来说很常用




    
    Title
    


 这个效果在手机端很常见

响应式布局1. 媒体查询与弹性布局_第4张图片

1.2.@media的引入方式

媒体查询除了上述的引入方式,还有其他的引入方式

1.style的media属性中写上条件:

    

2.在link中引入,有条件的引入外部样式表

2. Flex弹性布局

FlexiableBox是弹性盒子,用来进行弹性布局,可以配合rem处理尺寸的适配问题,并且任何一个盒子都可以定义为flex布局,更符合响应式设计的特点。

2.1. flex结构图

响应式布局1. 媒体查询与弹性布局_第5张图片

2.2. flex属性

1.flex-direction:子元素在父元素盒子中的排列方式

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

2. flex-wrap 是否换行

在子元素总和超出父元素的宽度的时候,flex布局会自动将子元素压缩到符合父元素的尺寸中去:




    
    Title
    


1
2
3
4

响应式布局1. 媒体查询与弹性布局_第6张图片

 那如何让子元素不被压缩而换行呢?可以使用flex-wrap:

属性值 作用
nowrap 不换行
wrap 换行
wrap-reverse 换行,但是以相反的顺序

于是我们在上诉代码中的父元素放入:flex-wrap: wrap;效果就变成了:

响应式布局1. 媒体查询与弹性布局_第7张图片

3.flex-flow写法:flex-direction和flex-wrap的简写形式:

语法: flex-flow: ||

4. justfity-content:用来在主轴上存在剩余空间的时候,设置间隔

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

5.align-items :设置元素在交叉轴上的默认的对齐方式(1行当做整体)

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

6. align-content:设置每个flex元素在交叉轴上的默认对齐方式(多行当做整体)

属性值 作用
flex-start 默认,位于开头
flex-end 位于结尾
center 居中显示
space-between 之间留有空白
space-around 空白平均分布

7. flex-grow:设置合资的扩展比例,会根据设置的grow来按照百分比扩展

8. flex-shrink设置盒子的缩小比例

9. flex-basis:设置弹性盒子的伸缩基准值

基准值设置之后,对应的宽度和高度会对应变成基准值

10.flex 前面三个的简写:

11.特殊写法:

属性值 作用
flex-auto flex:1 1 auto
flex:none flex:0 0 auto

flex: 0%;

flex:100px

flex: 1 1 0%;

flex: 1 1 100px

flex:1 flex: 1 1 0%

你可能感兴趣的:(前端开发,前端)