zoukankan      html  css  js  c++  java
  • 【前端】前端的几大经典布局方案

    第一种:圣杯布局

    具体效果是这样的:
    圣杯布局

    	<!-- 圣杯布局 -->
        <div class="container">
            <div class="center"></div>
            <div class="left"></div>
            <div class="right"></div>
        </div>
    

    这种布局方式是基于浮动的,
    首先,设置container的padding左右为200px,即左右块的宽度。
    接下来要想让左边绿块到他合适的位置,只能先将他的margin-left设置为 -100%,再将他的position设置为relative,最后再将left设置为-200px。
    最后右边的绿块也要设置他的margin-right设置为-200px,这样它就能贴紧center的右边了

    第二种:双飞翼布局

    具体效果是这样的:
    双飞翼布局

        <!-- 双飞燕布局 -->
        <div class="container">
            <div class="center"></div>
        </div>
        <div class="left"></div>
        <div class="right"></div>
    

    这种布局方式看起来跟圣杯模式没啥区别,但是他们实现的方式是有区别的,前者是center、left、right在一个container内,这样left在浮动的时候第一次只能浮动到center的左上角,而后者直接将container浮动起来了,因为container内只有一个center,这样只用margin-left:-100% 就可以实现left去到左上角,而且right也是相对于container来浮动的,所以就直接margin-left:-200px就OK了。

    第三种:CALC

    这个CALC是CSS3里边给我们提供的一个计算公式,我们之所以搞出上面的两种布局,说白了还是因为中间的center的宽度是不固定的。我们把center的宽度设置为总宽度减去左、右的宽度和就好了。
    注意:因为在CSS3中涉及到计算的话,它的速度是很慢的,所以buyao用这种写法

    .center {
    	width: calc(100% - 400px);
    	min-height: 400px;
    	background: #ffa07a;
    }
    

    第四种:flex

    flex布局还是得把left、center、right放在同一个container里,然后把container的显示方式设置为flex,最重要的是justify-content属性,要设置为space-between,接下来就是设置left、right的大小了,这里flex属性是一个合写的,详情还是参考阮一峰老师的这篇博客:阮一峰老师flex的讲解
    核心代码:

    .container {
                display: flex;
                justify-content: space-between;
                height: 100%;
            }
            
            .left,
            .right {
                flex: 0 0 200px;
                height: 200px;
                background: lightblue;
            }
            
            .center {
                flex: 1;
                min-height: 400px;
                background: lightsalmon;
            }
    

    第五种:定位

    这种方法虽然放在最后一个,但是我认为他的可用性跟前两种差不多,但是比前两种方便太多了,具体思想是利用center的margin:0 200px; 先把左右两边空出来,然后用定位的方式把left和right贴上去,即:

            .left {
                top: 0;
                left: 0;
            }
            
            .right {
                top: 0;
                right: 0;
            }
    

    这种方式不用浮动


    以上第一、二、四、五种的源代码我也打包传上来了,可以参考


    总结:其实这五种布局方案的核心思想就是:左右固定,中间自适应,难点就是当你已经把左右两边的空隙留出来之后,怎么把左右两部分内容再贴上去,基于这个问题演化出了这几种方法。看下来其实并不难

  • 相关阅读:
    [Codeforces721E]Road to Home
    [Codeforces513E2]Subarray Cuts
    [CodeForces332E]Binary Key
    [HDU4585]Shaolin
    [HDU3726]Graph and Queries
    [BZOJ3224]普通平衡树
    [BZOJ3173]最长上升子序列
    [POJ2985]The k-th Largest Group
    PHP一句话
    体验VIP版本灰鸽子,哈哈,拿到了老师的病毒教程
  • 原文地址:https://www.cnblogs.com/mqjing/p/13629277.html
Copyright © 2011-2022 走看看