• CSS经典布局之弹性布局


      当我们在浏览浏览器的时候,经常会放大/缩小浏览器的显示比例,或者在不同的设备上。所处的分辨率也不尽同样。

    因此。我们须要学习一个新的知识:弹性盒模型。

    弹性盒模型

    实现项目对齐,方向,排序(即使项目大小位置动态生成),可以动态改动子元素的宽度和高度。具有良好的适配性。


    如图就是弹性布局一个大概范围。

    弹性容器属性

    属性 说明
    flex-direction 设置主轴方向。确定弹性子元素排列方式
    flex-wrap 当弹性子元素超出弹性容器范围是是否换行
    flex-flow 复合属性。flex-direction和flex-wrap双重属性
    justify-content 主轴上的对齐方式
    align-items 側轴上的对齐方式
    align-content 側轴上有空白,側轴对齐方式









    以下我们用弹性布局的方式实现响应式菜单,先来看代码:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Flexbox响应式菜单</title>
        <link rel="stylesheet" type="text/css" href="mycss.css"/>
    </head>
    <body>
    <ul class="menu">
        <li><a href="#">number1</a></li>
        <li><a href="#">number2</a></li>
        <li><a href="#">number3</a></li>
        <li><a href="#">number4</a></li>
        <li><a href="#">number5</a></li>
        <li><a href="#">number6</a></li>
    </ul>
    
    </body>
    </html>
    .menu{
        list-style-type: none;
        padding: 0;
        margin: 0;
        display: -webkit-flex;
        display: -ms-flexbox;
        /*display: flex;    //激活flex方式
        flex-flow: row wrap;     //弹性容器的属性*/
    }
    .menu li{
         auto;
        height: 40px;
        text-align: center;
        line-height: 40px;
        flex: 1 1 100%;      //扩展比例为1,收缩比例为1。初始宽度为100%
    }
    .menu li:nth-child(1){
        background-color: pink;
    }
    .menu li:nth-child(2){
        background-color: plum;
    }
    .menu li:nth-child(3){
        background-color: hotpink;
    }
    .menu li:nth-child(4){
        background-color: palevioletred;
    }
    .menu li:nth-child(5){
        background-color: deeppink;
    }
    .menu li:nth-child(6){
        background-color: purple;
    }
    .menu li a{
        color: black;
        text-decoration: none;
    }
    @media (max- 480px) {
        .menu {
            flex: 1 1 100%;
            flex-flow: row wrap;
        }
    }
    @media (min- 768px){
        .menu {
            flex-flow: row nowrap;
        }
    }

    以上我们就实现了一个弹性布局的一个大概模型。

    再说一个我之前看到过的一面试题,也是要求写一道弹性布局的题,可是我们也能够另辟蹊径:
    实现例如以下图所看到的的布局要求:sidebar固定宽度200px。content和header宽度自适应,当window宽度小于600px时。变成三列布局

    我们实现的思路也跟弹性布局是一样的,看代码:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>flex布局</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
    
           @media (min- 600px) {
               .header {
                    auto;
                   background-color: green;
               }
    
               .sidebar {
                   float: left;
                    200px;
                   margin-right: -200px;
    
                   background-color: gold;
               }
    
               .content {
                   float: left;
                    100%;
                   margin-left: 200px;
                   background-color: red;
               }
           }
            @media (max- 600px) {
                .header {
                     auto;
                    background-color: green;
                }
    
                .sidebar {
                     auto;
                    background-color: gold;
                }
    
                .content {
                     auto;
                    background-color: red;
                }
            }
        </style>
    </head>
    <body>
    
    <div class="header">header</div>
    <div class="sidebar">sidebar</div>
    <div class="content">content</div>
    </body>
    </html>



  • 相关阅读:
    vim/gvim使用笔记
    WebStorm for Mac (PyCharm)- 破解注册激活版下载
    volatile 关键字
    vue页面在加载的时候闪烁花括号{{}} 解决非工程化项目初始化页面闪动问题
    Element-ui el-table表格 排序图标刷新后不见问题
    与运算(&)、或运算(|)、异或运算(^)
    JS中 二进制与十进制的相互转换
    报告大家好消息,我找到新工作了
    公众号基本配置 token 验证失败,成功解决
    asp.net core 5.0,怎么山寨了koa2?
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7064322.html
Copyright © 2020-2023  润新知