zoukankan      html  css  js  c++  java
  • html页面布局总结篇

    1. 使用float布局

        注意点:使用浮动布局要注意清除浮动。使用伪类清除

        

      浮动层:给元素的float属性赋值后,就是脱离文档流,进行左右浮动,紧贴着父元素(默认为body文本区域)的左右边框。

      而此浮动元素在文档流空出的位置,由后续的(非浮动)元素填充上去:块级元素直接填充上去,若跟浮动元素的范围发生重叠,浮动元素覆盖块级元素。内联元素:有空隙就插入。

         

          脱离文档流,也就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当做脱离文档流的元素不存在而进行定位。需要注意的是,使用float脱离文档流时,其他盒子会无视这个元素,但其他盒子内的文本依然会为这个元素让出位置,环绕在周围。而对于使用absolute positioning脱离文档流的元素,其他盒子与其他盒子内的文本都会无视它。此处讲解的不错https://www.zhihu.com/question/24529373/answer/29135021

      代码示例:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>宽度自适应布局</title>
            <style>
                .wrap {
                    background-color: #FBD570;
                    margin-left: 100px;
                    margin-right: 150px;
                }
                .clearfix:after { /*清除浮动*/
                    content: "";
                    clear: both;
                    display: block;
                }
                .left {
                    float: left;
                    width: 100px;
                    background: #00f;
                    height: 180px;
                    margin-left: calc(-100% - 100px); /*使用负值让他们浮动到上方去*/
                }
                .right {
                    float: right;
                    width: 150px;
                    background: #0f0;
                    height: 200px;
                    margin-right: -150px;
                }
                .center {
                    background: #B373DA;
                    height: 150px;
                    float: left;
                    width: 100%;
                }
            </style>
        </head>
        <body>
            <div class="wrap clearfix">
                <div class="center">center,可以自适应浏览器宽度,高度可固定也可以由内容撑开。</div>
                <div class="left">left,宽度固定,高度可固定也可以由内容撑开</div>
                <div class="right">right,宽度固定,高度可固定也可以由内容撑开</div>
            </div>
        </body>
    </html>

    2. 普通流布局:display : inline-block

      inline-block默认是基线对齐的,而inline-block的基线又跟文本基线一致,所以在内容不同的时候并不能水平对齐。只需要用vertical-align显式声明一下top/bottom/middle对齐即可。

        注意:inline-block的基线是最后一行文字的底部,flex里面的基线是第一行文字的底部

        示例代码 :

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>宽度自适应布局</title>
            <style>
                .wrap {
                    background-color: #FBD570;
                    font-size: 0;
                    letter-spacing: -4px;  /*用于兼容safari,根据不同字体字号或许需要做一定的调整*/
                    margin-left: 100px;
                    margin-right: 150px;
                }
                .wrap * {
                    font-size: 1rem;
                    letter-spacing: normal;
                }
                .left {
                    display: inline-block;
                    vertical-align: top;
                    width: 100px;
                    background: #00f;
                    height: 180px;
                    margin-left: -100px;
                }
                .right {
                    display: inline-block;
                    vertical-align: top;
                       width: 150px;
                    background: #0f0;
                    height: 200px;
                    margin-right: -150px;
                }
                .center {
                    display: inline-block;
                    vertical-align: top;
                    background: #B373DA;
                    height: 150px;
                    min-width: 150px;
                    width: 100%;
                }
            </style>
        </head>
        <body>
            <div class="wrap">
                <div class="left">left,宽度高度固定</div>
                <div class="center">center,可以自适应浏览器宽度,高度固定。</div>
                <div class="right">right,宽度高度固定</div>
            </div>
        </body>
    </html>
    View Code

    3. 绝对定位

       绝对定位就是我们平常所说的定位,给定参考坐标系+坐标确定位置

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>宽度自适应布局</title>
            <style>
                .wrap {
                    position: relative;
                    background-color: #FBD570;
                    margin-left: 100px;
                    margin-right: 150px;
                    height: 250px;
                }
                .left {
                    position: absolute;
                    top: 0;
                    left: -100px;
                    width: 100px;
                    background: #00f;
                    height: 180px;
                }
                .right {
                    position: absolute;
                    top: 0;
                    right: 0;
                       width: 150px;
                    background: #0f0;
                    height: 200px;
                    margin-right: -150px;
                }
                .center {
                    position: absolute;
                    top: 0;
                    left: 0;
                    background: #B373DA;
                    height: 150px;
                    min-width: 150px;
                    width: 100%;
                }
            </style>
        </head>
        <body>
            <div class="wrap">
                <div class="center">
                    center,可以自适应浏览器宽度,高度固定。
                </div>
                <div class="left">left,宽度高度固定</div>
                <div class="right">right,宽度高度固定</div>
            </div>
        </body>
    </html>
    View Code

    父元素为relative,子元素为absolute,这样的话,又会出现跟浮动一样的问题:父对象高度坍塌,子元素不能撑起父对象。原因也跟浮动一样,解决办法的话目前我知道的只有给父对象指定一个确定height值

    4. 弹性盒子

    使用注意:

    • flex下的子元素必须为块级元素,非块级元素在android2.3机器下flex失效
    • flex下的子元素宽度和高度不能超过父元素,否则会导致子元素定位错误,例如水平垂直居中
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta content="black" name="apple-mobile-web-app-status-bar-style">
    <meta content="telephone=no" name="format-detection">
    <meta content="email=no" name="format-detection">
    <style type="text/css">
    /* ============================================================
       flex:定义布局为盒模型
       flex-v:盒模型垂直布局
       flex-1:子元素占据剩余的空间
       flex-align-center:子元素垂直居中
       flex-pack-center:子元素水平居中
       flex-pack-justify:子元素两端对齐
       兼容性:ios 4+、android 2.3+、winphone8+
       ============================================================ */
    .flex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}
    .flex-v{-webkit-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}
    .flex-1{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;}
    .flex-align-center{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;}
    .flex-pack-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}
    .flex-pack-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}
    </style>
    </head>
    <body>
    
    <div class="flex flex-pack-justify">
        <div>模块一</div>
        <div>模块二</div>
        <div>模块三</div>
        <div>模块四</div>
    </div>
    
    </body>
    </html>
    View Code
  • 相关阅读:
    flask数据库操作
    flask之--钩子,异常,上下文,flask-script,模板,过滤器,csrf_token
    Flask项目出现html文件无法自动补全
    pandas强化练习(美国交警开放的数据)
    flask初识
    爬取实时变化的 WebSocket 数据(转载)
    pep8规范
    模拟登陆
    关于在scrapy中使用xpath
    Java基础/利用fastjson序列化对象为JSON
  • 原文地址:https://www.cnblogs.com/hubing/p/5491295.html
Copyright © 2011-2022 走看看