0
点赞
收藏
分享

微信扫一扫

视口-百分比布局和Flex布局

草原小黄河 2022-04-24 阅读 109
前端

通过此篇了解移动端与PC端屏幕和网页布局的差异,能够使用Flex布局模型布局移动端网页


目录

一、视口

二、百分比布局

三、FLex布局

1.主轴对齐方式 - justify-content

2.侧轴对齐方式 - align-items

3.弹性伸缩比


一、视口

使用meta标签设置视口宽度,制作适配不同设备宽度的网页 。

二、百分比布局

特点:

效果图展示:

代码如下:

 <!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>
        * {
            margin: 0;
            padding: 0;
        }
        li {
            list-style: none;
        }
        .toolbar {
            width: 100%;
            height: 50px;
            background-color: pink;
            border-top: 1px solid #ccc;
        }
        .toolbar li img {
            height: 100%;
        }
        .toolbar li  img {
            float: left;
            /* 百分比布局:宽度写百分数自适应,高度固定 */
            width: 20%;
            height: 50px;
        }
    </style>
</head>

<body>
    <div class="toolbar">
        <ul>
            <li>
                <a href="#"><img src="./images/index.png" alt=""></a>
            </li>
            <li>
                <a href="#"><img src="./images/classify.png" alt=""></a>
            </li>
            <li>
                <a href="#"><img src="./images/jd.png" alt=""></a>
            </li>
            <li>
                <a href="#"><img src="./images/car.png" alt=""></a>
            </li>
            <li>
                <a href="#"><img src="./images/login.png" alt=""></a>
            </li>
        </ul>
    </div>
</body>

</html>

三、FLex布局

特点:

Flex 组成:

效果图展示: 

代码如下:

<!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>
        * {
            margin: 0;
            padding: 0;
        }

        .box {
            /* 默认主轴在水平方向,子级(弹性盒子)按主轴方向排列 */
            display: flex;
            height: 200px;
            border: 1px solid #000;
        }

        .box div {
            width: 100px;
            height: 100px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </div>
</body>
</html>

1.主轴对齐方式 - justify-content

效果图展示: 

 代码如下:

<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>
        * {
            margin: 0;
            padding: 0;
        }
        .box {
            display: flex;
            /* 默认 */
            justify-content: flex-start;
            /* 左侧 */
            justify-content: flex-end;

            /* 居中 */
            justify-content: center;

            /* 空白间距=父级的宽度-所有子级的宽度 */
            /* 空白间距出现在弹性盒子之间 */
            justify-content: space-between;

            /* 空白间距出现弹性盒子的两侧 */
            /* 视觉效果:子级之间的间距是父级最左最右间距的2倍 */
            justify-content: space-around;

            /* 各个位置的间距是相等的 */
            justify-content: space-evenly;
            
            height: 200px;
            margin: auto;
            border: 1px solid #000;
        }   
        .box div {
            width: 100px;
            height: 100px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </div>
</body>

2.侧轴对齐方式 - align-items

使用align-items调节元素在侧轴的对齐方式

效果图展示:  

 代码如下:

<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>
        * {
            margin: 0;
            padding: 0;
        }
        .box {
            display: flex;
            height: 300px;
            margin: auto;
            border: 1px solid #000;
        }
        .box div {
            width: 100px;
            background-color: pink;
        }

        /* 单独设置某个弹性盒子的侧轴对齐方式 */
        /* 第二个子级 侧轴距中 */
        .box div:nth-child(2) {
            align-self: center;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </div>
</body>

3.弹性伸缩比

效果图展示:  

 代码如下:

<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>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .box {
            display: flex;
            height: 300px;
            border: 1px solid #000;
        }
        .box div {
            height: 200px;
            margin: 0 20px;
            background-color: pink;
        }
        .box div:nth-child(1) {
            width: 50px;
        }

        /* 占用父级剩余尺寸的份数 */
        .box div:nth-child(2) {
            flex: 1;
        }

        .box div:nth-child(3) {
            flex: 1;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </div>
</body>
举报

相关推荐

0 条评论