zoukankan      html  css  js  c++  java
  • CSS布局

    CSS布局

    浏览器把页面盒子按照既定的规则摆放在浏览器页面上,而布局是指将元素以正确的大小摆放在正确的位置上。

    display

    display
    /*设置元素的显示方式*/
    display:block|inline|inline-block|none
    
    display:block;
    /*默认宽度为父元素宽度;可以设置宽高;换行显示*/
    /*默认display:block的元素-->div,p,h1-h6,ul,form.....*/
    
    display:inline;
    /*默认宽度为内容宽度;不能设置宽高;同行显示*/
    /*默认display:inline的元素-->span,a,label,cite,em....*/
    
    display:inline-block;
    /*默认宽度为内容宽度;可以设置宽高;同行显示;整块儿换行;*/
    /*默认display:inline-block的元素-->input,textarea,select,button....*/
    
    display:none;
    /*设置元素不显示*/
    /*display:none vs visibility:hidden*/
    /* display:none -->元素不显示,不占空间; */
    /* visibility:hidden -->元素不显示,但是依然占据空间;*/
    

    布局模式

    /*块级元素水平居中*/
    <div>
        <div class="content">content area</div>
    </div>
    
    .content{margin:auto;with:978px;}
    
    
    /*居中导航*/
    <ul>
        <li><a href="#">推荐</a></li>
        <li><a href="#">歌单</a></li>
        <li><a href="#">大牌DJ</a></li>
        <li><a href="#">歌手</a></li>
        <li><a href="#">新碟上架</a></li>
    </ul>
    
    ul{text-align:center;height:30px;line-height:30px;}
    li,a{display:inline-block;80px;height:100%;}
    li{margin:0 10px;}
    

    定位position

    • 使用position来设置定位方式;
    • 使用top,right,bottom,left,z-index来设置位置;
      • top,right,bottom,left的值为元素边缘距离参照物的距离;
    • z-index表示盒子在z轴上的排序;
      • 比较z-index的值的时候,要先看一下父元素的z-index值,再比较本元素的z-index值;
    position:static|relative|absolute|fixed
    
    position:relative
    /*元素仍在文档流中,参照物为元素本身*/
    /*常用来改变元素的z-index值*/
    /*使用场景:绝对定位元素的参照物。!important*/
    position:relative;
    top:10px;left:20px;/*盒子以元素本身为参照,向右下方偏移了10px和20px*/
    
    position:absolute
    /*默认宽度为内容宽度;落体文档流;参照物为第一个定位的祖先/根元素*/
    /*下面为一个轮播头图的例子*/
    <div class="is">
        <img src="hot girl.jpg">
        <p class="title"><a href="#">美女在小巷子竟然干这事儿?</a><p>
        <div class="controls">
            <span></span><span></span><span></span><span class="cur"></span><span></span>
        </div>
    </div>
    .is{position:relative;480px;}
    .is .title{position:absolute;bottom:0;100%;}
    .is .controls{position:absolute;bottom:20px;right:10px;}
    .is .controls span{display:inline-block;10px;height:10px;border-radius:50%;}
    /*下面为一个三行自适应布局的例子*/
    <body>
        <div class="head">head</div>
        <div class="body">body</div>
        <div class="foot">foot</div>
    </body>
    body{position:relative;}
    .head{position:absolute;top:0;left:0;100%;height:100px;}
    .body{position:absolute;top:100px;left:0;bottom:100px;right:0;}
    .foot{position:absolute;bottom:100px;left:0;100%;height:100px;}
    /* 下面为一个图片(无论其大小)在所在窗口中水平居中的例子 */
    <div id="img-box">
        <div id="imgs>
            <a><img href="#"></a>
        </div>
    </div>
    #img-box{
        100%;
        height:400px;
        position:relative;
        overflow:hidden;
        min-1000px;
    }
    #imgs{
        (img-width);
        height:(img-height);
        position:absolute;
        left:50%;
        margin-left=-(img-width/2);
        overflow:hidden;
    }
        
    
    
    position:fixed
    /*默认宽度为内容宽度;脱离文档流;参照物为浏览器窗口;*/
    /*下面为一个固定顶栏的例子*/
    <body>
        <div class="top">top bar</div>
        <div class="main">main content area</div>
    </body>
    body{padding-top:50px;}
    .top{position:fixed;top:0;100%;height:50px;}
    

    float浮动

    float
    
    float:left|right|none|inherit
    /*默认宽度为内容宽度;脱离文档流;向指定的方向一直移动*/
    /*float的元素在同一个新的文档流中,按照顺序排列。*/
    /*floatd的元素脱离了文档流,但是元素中的内容还在文档流中,float left的元素中的内容会挤压没有浮动的元素中的内容。*/
    

    clear

    clear
    
    clear:both|left|right|none|inherit
    /*应用于后续元素;应用于块儿级元素;*/
    
    /*clearfix 的应用*/
    .clearfix:after{content:".";display:block;clear:both;height:0;overflow:hidden;visibility:hidden;}
    .clearfix{zoom:1;}
    

    两列布局案例

    /*下面是一个两列布局的例子*/
    <div class="body clearfix">
        <div class="side">side</div>
        <div class="main">main</div>
    </div>
    
    .body{700px;margin:0 auto;}
    .side{float:right;200px;}
    .main{float:left:500px;}
    .clearfix:after{content:".";display:block;clear:both;height:0;overflow:hidden;visibility:hidden;}
    

    flex

    flex
    
    /*创建flex container */
    display:flex;
    /*和display:block|inline|inline-block|none是一样的布局样式而已*/
    
    flex item /*在文档流中的子元素*/
    <div style="display:flex">
        <div>block</div>/*是flex item*/
        <div style="float:left;">float</div>/*是flex item*/
        <span>inlin</span>/*是flex item*/
        <div style="position:absolute;"></div>/*不是flex item*/
        <div>
            <div>grandson</div>/*不是flex item*/
        </div>
    </div>
    
    flex-direction
    flex-direction:row|row-reverse|column|column-reverse
    /*默认row*/
    
    flex-wrap
    flex-wrap:nowrap|wrap|wrap-reverse
    /*默认wrap*/
    
    flex-flow
    flex-flow:<'flex-direction'>||<'flex-wrap'>
    
    order
    order:<interger>
    initial:0
    /* 需要进一步研究啊 */
    
    flex-basis
    flex-basis:main-size|<width>
    /*设置flex item的初始宽/高*/
    
    flex-grow
    flex-grow:<number>
    initial:0
    /*flex item的最终尺寸=flex-basis + flex-grow/sum(flex-grow)*remain */
    
    flex-shrink
    flex-shrink:<number>
    initial:1
    /*flex item的最终尺寸=flex-basis + flex-shrink/sum(flex-shrink)*remain */
    
    flex
    flex:<'flex-grow'>||<'flex-shrink'>||<'flex-basis'>
    initial:0 1 main-size
    

    flex元素对齐

    justify-content
    justify-content:flex-start|flex-end|center|space-between|space-around
    /*设置main-axis方向上的对齐方式*/
    
    align-items
    align-items:flex-start|flex-end|center|baseline|stretch
    /*设置cross-axis方向上的对齐方式*/
    
    align-self
    align-self:auto|flex-start|flex-end|center|baseline|stretch
    /*设置单个flex item在cross-axis方向上的对齐方式*/
    
    align-content
    align-content:flex-start|flex-end|center|space-between|space-around|stretch
    /*设置cross-axis方向上 行 的对齐方式
    
    
    /* 下面是一个三行两列自适应布局 */
    <div class="head">head</div>
    <div class="body>
        <div class="side">side</div>
        <div class="main">main</div>
    </div>
    <div class="foot">foot</div>
    
    body{display:flex;flex-flow:column;}
    .head,.foot{height:100px;}
    .body{flex:1;display:flex;}
    .side{200px;}
    .main{flex:1;}
    
  • 相关阅读:
    PostMan 安装步骤详解
    使用MySQL,运行系统报错Authentication method 'caching_sha2_password' is not supported.
    jmeter安装和环境变量配置
    Svn项目迁移到Git及Visual Studio 中git使用
    SQLServer 2008以上误操作数据库恢复方法
    ABP入门系列之3——创建实体/Code First创建数据表
    ABP入门系列之2——ABP模板项目
    uni-app使用Canvas绘图
    uni-app中picker组件的一个坑
    Nginx用法详解
  • 原文地址:https://www.cnblogs.com/luwanlin/p/10073930.html
Copyright © 2011-2022 走看看