zoukankan      html  css  js  c++  java
  • 圣杯布局,双飞翼布局,和自己独创的布局

    圣杯布局:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>圣杯布局</title>
        <style>
            * {
                padding: 0;
                margin: 0;
            }
            body {
                min- 600px;
            }
            header,
            footer {
                text-align: center;
                 100%;
                background-color: #bbbbbb;
            }
            .text {
                text-align: center;
                line-height: 200px;
                font-size: 40px;
                color: #fff;
            }
            .bd {
                overflow: hidden;
                padding: 0 200px 0 200px;
            }
            .main {
                float: left;
                 100%;
                height: 200px;
                background-color: #ddd;
            }
            .left {
                /* opacity: 0.5; */
                float: left;
                 200px;
                height: 200px;
                background-color: #da4242;
                /* 产生布局效果的属性 */
                margin-left: -100%;
                position: relative;
                left: -200px;
            }
            .right {
                /* opacity: 0.5; */
                float: left;
                 200px;
                height: 200px;
                background-color: #4ddef1;
                /* 产生布局效果的属性 */
                margin-left: -200px;
                position: relative;
                left: 200px;
            }
        </style>
    </head>
    
    <body>
        <header>圣杯布局</header>
        <div class="bd">
            <div class="main text">
                main
            </div>
            <div class="left text">
                left
            </div>
            <div class="right text">
                right
            </div>
        </div>
        <footer>footer</footer>
    </body>
    
    </html>

    其实是利用了,position:relative;和margin属性进行位置移动;结构上也是三栏

    双飞翼布局

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>双飞翼布局</title>
        <style>
            * {
                padding: 0;
                margin: 0;
            }
            header,
            footer {
                text-align: center;
                 100%;
                background-color: #bbbbbb;
            }
            .text {
                text-align: center;
                line-height: 200px;
                font-size: 40px;
                color: #fff;
            }
            .bd {
                overflow: hidden;
            }
            .main {
                float: left;
                 100%;
                height: 200px;
                background-color: #ddd;
            }
            .main-content {
                margin: 0 200px;
            }
            .left {
                float: left;
                 200px;
                height: 200px;
                background-color: #da4242;
                /* 产生布局效果的属性 */
                margin-left: -100%;
            }
            .right {
                float: left;
                 200px;
                height: 200px;
                background-color: #4ddef1;
                /* 产生布局效果的属性 */
                margin-left: -200px;
            }
        </style>
    </head>
    
    <body>
        <header>双飞翼布局</header>
        <div class="bd">
            <div class="main text">
                <div class="main-content">main</div>
            </div>
            <div class="left text">
                left
            </div>
            <div class="right text">
                right
            </div>
        </div>
        <footer>footer</footer>
    </body>
    
    </html>

    双飞翼布局,利用了,margin的负边距属性移动,这里要注意由于是浮动所以,margin是负边距时能够移动,当不是浮动时,负边距会吃点元素本身的宽度

    他与圣杯最大的区别在于没有用到position属性,html结构上也有区别,主要在main那一块,一个是做padding,一个是做margin

    无论哪种布局都利用了一个很重要的属性,内部元素的宽度百分比是相对于外部元素的content宽度的,即不包括内外边距,也不包括边框。

    我的布局方式,感觉比之前两种都简单,嘿嘿

    上代码:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>圣杯布局</title>
        <style>
            * {
                padding: 0;
                margin: 0;
            }
            body {
                min- 600px;
            }
            header,
            footer {
                text-align: center;
                 100%;
                background-color: #bbbbbb;
            }
            .text {
                text-align: center;
                line-height: 200px;
                font-size: 40px;
                color: #fff;
            }
            .bd {
                overflow: hidden;
                position:relative;
                padding: 0 200px 0 200px;
            }
            .main {
                float: left;
                 100%;
                height: 200px;
                background-color: #ddd;
            }
            .left {
                /* opacity: 0.5; */
                 200px;
                height: 200px;
                background-color: #da4242; 
                position:absolute;
                left:0;
                top:0;
            }
            .right {
                /* opacity: 0.5; */
                 200px;
                height: 200px;
                background-color: #4ddef1;
                position:absolute;
                right:0;
                top:0;
            }
        </style>
    </head>
    
    <body>
        <header>三栏布局</header>
        <div class="bd">
            <div class="main text">
                main
            </div>
            <div class="left text">
                left
            </div>
            <div class="right text">
                right
            </div>
        </div>
        <footer>footer</footer>
    </body>
    
    </html>

    我利用了position:absolute这个属性,外层元素的padding设置一下,其实准确的说,float没哟脱离文档流,只是,float使这个元素快在文档流里能根据float规则流动;absolute才完全脱离了文档流。相对于relative的父元素位置。并且,absolute的原来的位置没有了,relative的原来位置还在。

    学而不思则罔,思而不结则殆,结而不看,一事无成
  • 相关阅读:
    知者不言,言者不知:论华人工程师之领导力
    vscode: Visual Studio Code 常用快捷键
    工作10年的我却没拼过刚毕业的美国女孩,亚裔们到底输在哪儿?
    不要再学习框架了!
    托福100分什么水平
    (转)Eclipse中快速输入System.out.println()的快捷键
    人生不相见,动如参与商
    Amazon onsite behavior question
    Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
    浅谈volatile与automicInteger
  • 原文地址:https://www.cnblogs.com/windseek/p/8467269.html
Copyright © 2011-2022 走看看