最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 熟练使用CSS(二)--布局

    正文概述 掘金(何以庆余年)   2021-06-06   494

    布局

    在CSS中,布局是非常重要的部分,了解常用的布局及如何实现这些布局是必要的。让我们一起来学习CSS中的布局吧!

    flex布局

    flex布局是目前最流行使用的布局方式,具有诸多优点,可以解决原有布局的各种问题。

    它会设置一个主轴方向,与主轴向垂直的就是交叉轴,通过设置换行方式项目在主轴的对齐方式项目在交叉轴的对齐方式等来实现各式各样的效果。

    关键点如下:

    主轴的方向:flex-direction

    flex-direction决定了项目的主轴方向。它包括以下四个值:

    • row: 默认值,项目的主轴方向为行,即项目左右排列。

    • column: 项目的主轴方向为列,即项目上下排列。

    • row-reverse: 主轴为行,但方向与row相反,从右往左。

    • column-reverse: 主轴为列,但方向与column相反,从下往上。

    换行方式:flex-wrap

    flex-wrap决定了项目在一条轴线上排不下,该如何换行。它包括以下三个值:

    • nowrap: 默认值,不换行,将项目空间按比例分配。

    • wrap: 换行,第一行在上方

    • wrap-reverse: 换行,但是交叉轴方向相反,第一行在下方。

    项目在主轴上的对齐方式:justify-content

    justify-content决定了项目在交叉轴上是如何对齐的。它包括以下五个值:

    • flex-start: 默认值,向前对齐

    • flex-end: 向后对齐

    • center: 居中

    • space-between: 两端对齐,项目之间的间隔相同

    • space-around: 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

    项目在交叉轴上的对齐方式:align-items

    align-items决定了项目在交叉轴上的对齐方式。它包括以下五个值:

    • stretch: 默认值,如果项目未设置高度或设为auto,将占满整个容器的高度

    • flex-start: 交叉轴的起点对齐

    • flex-end: 交叉轴的终点对齐

    • center: 交叉轴的终点对齐(居中)

    • baseline: 项目的第一行文字的基线对齐

    经典布局

    说完了重要的flex布局,我们再了解一些经典布局及常见样式问题,如:负margin问题。

    负margin

    margin设置负值,根据设置的方向、元素是否浮动、其定位方式,最终会有不同的行为,我们一起来看看。

    元素没有设置浮动并且没有设置定位或者position为static

    • 设置的margin的方向为top / left,元素会按照设置的方向移动相应的距离

    • 设置的margin的方向为bottom / right,元素本身不会移动,元素后面的其它元素会往该元素的方向移动相应的距离,并覆盖在该元素的上方。

    元素没有设置浮动且positive为relative

    • 设置的margin的方向为top / left,元素会按照设置的方向移动相应的距离

    • 设置的margin的方向为bottom / right,元素本身不会移动,元素后面的其它元素会往该元素的方向移动相应的距离,但是该元素会覆盖在后面的元素上面(后面的元素没有设置定位及z-index)。

    元素没有设置浮动且positive为absolute

    • 设置的margin的方向为top / left,元素会按照设置的方向移动相应的距离

    • 设置的margin的方向为bottom / right,设置绝对定位的元素已经脱离了文档流,对后面的元素没有影响

    元素设置了浮动

    如果给一个元素设置了浮动,再设置了positive:relative;和单独设置float是一样的。对设置了浮动的元素,设置margin为负值时,表现如下:

    • 设置的margin的方向和浮动的方向相同,则元素会往对应的方向移动对应的的距离

    • 设置的margin的方向和浮动的方向相反,则元素本身不动,元素之前或之后的元素会向该元素的方向移动相应的距离,覆盖在该元素上。

    圣杯布局

    圣杯布局是指三栏布局,两侧宽度固定,中间宽度自适应。(我们这里假设高度为100px,两侧宽度分别为100px和150px)

    我们来用flex和负margin两种方式来实现圣杯布局吧!

    // flex布局
    // dom结构
    <div id='container'>
        <div id='left'>left</div>
        <div id='content'>content</div>
        <div id='right'>right</div>
    </div>
    
    // css样式
    #container {
        display: flex;
        width: 100%;
        height: 100px;
    }
    #left {
        width: 100px;
        background: pink;
    }
    #content {
        flex: 1;
        background: lightYellow;
    }
    #right {
        width: 150px;
        background: lightGreen;
    }
    
    // 负margin布局
    // dom结构
    <div id='container'>
        <div id='content'>content</div>
        <div id='left'>left</div>
        <div id='right'>right</div>
    </div>
    
    // css样式
    #container {
        overflow: hidden;
        padding: 0 100px;
    }
    #content, #left, #right {
        float: left;
    }
    #content {
        width: 100%;
        background: lightYellow;
    }
    #left {
        width: 100px;
        background: pink;
        margin-left: -100%;
        position: relative;
        left: -100px;
    }
    #right {
        width: 100px;
        background: lightGreen;
        margin-left: -100px;
        position: relative;
        left: 100px;
    }
    

    双飞翼布局

    双飞翼布局与圣杯布局相似,不同点在于它在middle中增加了一个middle-inner盒子,把middle的内容放到middle-inner盒子中,最后就不需要给left和right设置定位了。

    // dom结构
    <div id='container'>
        <div id='content'>
            <div id='middle-inner'>middle</div>
        </div>
        <div id='left'>left</div>
        <div id='right'>right</div>
    </div>
    
    // css样式
    #container {
        overflow: fidden;
    }
    #left, #right, #content {
        float: left;
    }
    #content {
        width: 100%;
        background: lightYellow;
    }
    #middle-inner {
        margin: 0 100px;
    }
    #left {
        width: 100px;
        background: pink;
        margin-left: -100%;
    }
    #right {
        width: 100px;
        background: lightGreen;
        margin-left: -100px;
    }
    

    总结

    在这一节,我们详细介绍了CSS的flex布局和常用的圣杯布局,以及介绍了负margin的使用。接下来我们会继续介绍其他CSS知识。

    我是何以庆余年,如果文章对你起到了帮助,希望可以点个赞,谢谢!

    如有问题,欢迎在留言区一起讨论。


    起源地下载网 » 熟练使用CSS(二)--布局

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元