响应式设计 MediaQuery和flex

一、MediaQuery(媒体查询)的概念

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

示例

二、@media常用参数

三、媒体查询代码示例 

 MediaQuery在浏览器中的显示示例

MediaQuery综合案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>媒体查询案例</title>
    <style>
     #div0{
        width:100%;   
       }

       #div0 div{
         float: left;
         height:200px;
       }

       /*一行三个div*/
       @media screen and (min-device-width:400px) {
        #div0 div{
            width:33.3%;
        }
        #div0 div:nth-child(1){
            background-color: aqua;
        }
        #div0 div:nth-child(2){
            background-color: purple;
        }
        #div0 div:nth-child(3){
            background-color: palevioletred;
        }
       }

       /*两行三个div*/
       @media screen and (min-device-width:200px) and (max-device-width:400px){
        #div0 div{
            width:50%;
        }
        #div0 div:nth-child(1){
            background-color: aqua;
        }
        #div0 div:nth-child(2){
            background-color: purple;
        }
        #div0 div:nth-child(3){
            background-color: palevioletred;
        }
       }


       /*三行三个div*/
       @media screen and (min-device-width:100px) and (max-device-width:200px){
        #div0 div{
            width:100%;
        }
        #div0 div:nth-child(1){
            background-color: aqua;
        }
        #div0 div:nth-child(2){
            background-color: purple;
        }
        #div0 div:nth-child(3){
            background-color: palevioletred;
        }
       }

    </style>
</head>
<body>
    <div id="div0">
       <div></div>
       <div></div>
       <div></div>

    </div>

    
</body>
</html>

四.媒体查询的其他引入方式 

style另一种写法,写一个公共的style,再分别写自己的style

link标签引入外部css,上面的link引入公共部分css,下面的link引入media部分

五、什么是flex

概念:FlexiableBox即是弹性盒子,用来进行弹性布局,可以配合rem处理尺寸的适配问题。

 5.1 flex-direction

 5.2 flex-wrap

5.3 flex-flow 

 

代码示例 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局</title>
    <style>

         #div0{
            width:500px;
            background-color: violet;
          
            display: flex;
            /* 按row显示,但顺序相反*/
            flex-direction: row-reverse;
         }

         #div0 div{
            width: 100px;
            height: 100px;
            background-color: yellow;
         }

    </style>
</head>
<body>
    <div id="div0">
          <div>1</div>
          <div>2</div>
          <div>3</div>
          <div>4</div>

    </div>
    
</body>
</html>

关于flex的代码都写在父元素上,上图显示如下,如果flex-direction为column,则会垂直显示,如果父元素的宽度为300px,不够装下子元素,则子元素的宽度会等比缩小。正常显示。加上flex-wrap,选择换行,则装不下会自动换行,不会缩小子元素。

 5.4 justify-content

 当上述代码的父元素宽度为380,四个装不下,三个还有空余,那么怎么处理,可以采用上述方法。

5.5 align-items

交叉轴的判定是先判断主轴,如果div排序是横向排序则横向是主轴,纵向是交叉轴,反之纵向是主轴。

下图是align-item居中显示,位于容器开头就是放在容器的最上面。

 align-items 每一行都当作一个单独的个体去处理的

5.6 align-content 

align-content 把多行当成一个整体去看,去排序。

5.7其他属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex练习2</title>
    <style>
        #div0{
            display: flex;
            width:400px;
            height:500px;
            background-color: violet;
        }

        #div0 div{
            width:200px;
            height: 200px;
            background-color: yellow;
        }

        #div0 div:nth-child(1){
            flex-basis: 50px;
            flex-grow:1;
        } #div0 div:nth-child(2){
            flex-basis: 100px;
            flex-grow:4;
        }

    </style>
</head>
<body>
    <div id="div0">
       <div></div>
       <div></div>

    </div>
    
</body>
</html>

flex-basis:基准值,表示该元素的具体值,如上述代码,设置了子元素div的宽度为200px,但是后来又分别设置了子元素div的基准值,则最后显示的时候,以基准值为准

flex-grow:拓展比例,如果两个子元素div不够宽,父元素上还留有一截,则把这一截比例划分,上图是1,4划分,就是五份,这一截除以5,就是每一份的份数,设置为1的加一份,设置为4的加4份。

flex-shrink:与flex-grow差不多。

其他属性的缩写

 写的顺序就是放大比例、缩小比例、基准值

flex特殊写法

猜你喜欢

转载自blog.csdn.net/weixin_60934893/article/details/130676781