div+flex移动端布局

移动端布局

1.我们要进行移动端页面的开发设计第一肯定想到的是弹性盒子
2.弹性盒子flex
3.div和flex的配合使用

移动端页面

1.移动端需要引入一个样式,meta
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> 随便打开一个网站F12调成手机模式,复制meta
2.弹性盒子
一个div设置了display: flex; 就成了一个弹性盒子
因此我们把移动端界面布局称为div+flex布局

flex水平和垂直对齐方式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        ul {
            margin: 0;
            padding: 0;
            list-style: none;
            border: 1px solid;
            height: 300px;
            width: 500px;
            display: flex;
            /* 水平对齐方式 */
            /* 左对齐 */
            justify-content: flex-start;
            /* 居中 */
            justify-content: center;
            /* 右对齐 */
            justify-content: flex-end;
            /* 两端对齐 */
            justify-content: space-between;
            /* 分散对齐 */
            justify-content: space-around;

            /* 垂直对齐 */
            /* 顶部对齐 */
            align-items: flex-start;
            /* 底部对齐 */
            align-items: flex-end;
            /* 居中对齐 */
            align-items: center;
        }
        li {
            background: gray;
            color: #fff;
            height: 50px;
            width: 100px;
        }
    </style>
</head>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
</body>
</html>
inline-flex行内弹性盒子
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        span {
            height: 100px;
            width: 300px;
            border: 1px solid;
            /* 水平居中,垂直居中 */
            display: inline-flex;
            justify-content: center;
            align-items: center;
        }
    </style>
</head>
<body>
    <h3>inline-flex用法和flex一样</h3>
    <span>
        行内弹性盒子
    </span>
</body>
</html>
flex-grow剩余空间分配方式

1.平均分配

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
         div {
            width: 500px;
            border: 1px solid;
            display: flex;
         }
         p {
             width: 100px;
             background: gray;
             color: #fff;
             border: 1px solid red;
             /* 剩余空间分为3分,三个p标签各占1份,相当于平均分配 */
             flex-grow: 1;
         }
    </style>
</head>
<body>
    <div>
        <p class="p1">1</p>
        <p class="p2">2</p>
        <p class="p3">3</p>
    </div>
</body>
</html>

2.某一个子元素占据全部剩余空间

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
         div {
            width: 500px;
            border: 1px solid;
            display: flex;
         }
         p {
             width: 100px;
             background: gray;
             color: #fff;
             border: 1px solid red;
         }
         .p3 {
             /* 剩余空间分为1分,p3占一份 */
             flex-grow: 1;
         }
    </style>
</head>
<body>
    <div>
        <p class="p1">1</p>
        <p class="p2">2</p>
        <p class="p3">3</p>
    </div>
</body>
</html>

3.按需求分配

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
         div {
            width: 500px;
            border: 1px solid;
            display: flex;
         }
         p {
             width: 100px;
             background: gray;
             color: #fff;
             /* border: 1px solid red; */
            
         }
         .p1,.p2 {
             /* 剩余空间分为四份,p1,p2各占一份 */
            flex-grow: 1;
         }
         .p3 {
              /* 剩余空间分为四份,p3占两份 */
             flex-grow: 2;
         }
    </style>
</head>
<body>
    <div>
        <p class="p1">1</p>
        <p class="p2">2</p>
        <p class="p3">3</p>
    </div>
</body>
</html>
flex-direction盒子排列方向
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div {
            height: 500px;
            width: 200px;
            border: 1px solid;
            margin: 0 auto;
            display: flex;
            /* 排列方向默认是row(水平) */
            flex-direction: column;
            /* 水平方向居中 */
            align-items: center;
            /* 垂直对齐 */
            justify-content: center;
        }
        p {
            margin: 0;
            height: 50px;
            width: 100px;
            background: gray;
            color: #fff;
        }
    </style>
</head>
<body>
    <div>
        <p>1</p>
        <p>2</p>
        <p>3</p>
    </div>
</body>
</html>
盒子换行设置
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        ul {
            margin: 0;
            padding: 0;
            list-style: none;
            border: 1px solid;
            height: 300px;
            width: 500px;
            display: flex;
            /* 分散对齐 */
            justify-content: space-around;
            /* 居中对齐 */
            align-items: center;
            /* 换行设置,默认不换行 */
            flex-wrap: wrap;
        }
        li {
            border: 1px solid;
            background: gray;
            color: #fff;
            height: 50px;
            width: 100px;
        }
    </style>

</head>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
        <li>11</li>
        <li>12</li>
        <li>13</li>
        <li>14</li>
        <li>15</li>
        <li>16</li>
        <li>17</li>
        <li>18</li>
        <li>19</li>
        <li>20</li>
    </ul>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 10,140评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 8,916评论 0 6
  • 阅读目录移动开发基本知识点 calc基本用法box-sizing的理解及使用理解display:box的布局理解f...
    张宪宇阅读 5,501评论 0 1
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,696评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,381评论 1 45

友情链接更多精彩内容