zoukankan      html  css  js  c++  java
  • 圣杯布局——浮动、负边距、定位

    一、参考文章

      1.圣杯布局的实现过程https://www.cnblogs.com/tinyphp/p/4742922.html

      2.http://www.jianshu.com/p/f9bcddb0e8b4

    .圣杯布局中用到的属性:

      1.浮动——float:设置浮动后,元素会脱离文档流,如果希望文档流按照布局顺序显示,那么需要用到清除浮动hack

        (1).left:将元素像右浮动

        (2).right:将元素向左浮动

        (3).none(默认值):取消元素的浮动

      2.清除浮动——clearfix hackhttp://nicolasgallagher.com/micro-clearfix-hack/):主要实现如下

     1 .clearfix:before,
     2 
     3 .clearfix:after{
     4 
     5 content:" ";
     6 
     7 display:table;
     8 
     9 }
    10 
    11  
    12 
    13 .clearfix:after{
    14 
    15 clear:both;
    16 
    17 }

      3.定位——position

        (1).static(默认值):元素正常定位

        (2).relative:相对定位,不脱离文档流。配合toprightbottomleft使用。

        (3).absolute:绝对定位,脱离文档流。对于最近的一个非static父元素进行定位,配合toprightbottomleft使用。

        (4).fixed:固定定位,脱离文档流。对于viewport进行定位,配合toprightbottomleft使用。

      4.边距——margin

        (1).此属性为正值时,用于设置元素的外边距。

        (2).此属性为负值时,会将元素往前拉。

    .总结:

      1.圣杯布局的核心在于负边距的运用,再配合浮动、定位来完成整体布局。

      2.关键点拆分:

        (1).中间不定宽的元素放在最前,然后是左侧元素和右侧元素。(目的是为了让不定宽元素最先渲染)

        (2).子元素浮动后,需要在父元素清除浮动。

        (3).利用负边距,将左侧和右侧元素拉到中间不定宽元素的两侧。

        (4).给包含了左侧元素、右侧元素、中间不定宽元素的父元素设置外边距,给左右两侧元素腾出空间。

        (5).左右两侧元素使用相对定位,拉开和中间不定宽元素的距离。

    .界面截图:

     

    .代码:

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 
      4 <head>
      5   <meta charset="UTF-8">
      6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
      7   <meta http-equiv="X-UA-Compatible" content="ie=edge">
      8   <title>Document</title>
      9   <style>
     10     * {
     11       margin: 0px;
     12       padding: 0px;
     13     }
     14 
     15     ul {
     16       list-style: none;
     17     }
     18 
     19     .clearfix:before,
     20     .clearfix:after {
     21       content: " ";
     22       display: table;
     23     }
     24 
     25     .clearfix:after {
     26       clear: both;
     27     }
     28 
     29     body {
     30       min-width: 800px;
     31     }
     32 
     33     header,
     34     footer {
     35       background: yellowgreen;
     36     }
     37 
     38     .container {
     39       padding: 0 150px;
     40       background: gray;
     41     }
     42 
     43     .container>main {
     44       width: 100%;
     45       float: left;
     46       background: deeppink;
     47     }
     48 
     49     .container>nav,
     50     .container>aside {
     51       width: 150px;
     52       float: left;
     53       background: aqua;
     54     }
     55 
     56     .container>nav {
     57       margin-left: -100%;
     58       position: relative;
     59       left: -150px;
     60     }
     61 
     62     .container>aside {
     63       margin-left: -150px;
     64       position: relative;
     65       left: 150px;
     66     }
     67   </style>
     68 </head>
     69 
     70 <body>
     71   <header>
     72     this is header
     73   </header>
     74   <div class="container clearfix">
     75     <main class="main">
     76       this is main content.
     77     </main>
     78     <nav>
     79       <ul>
     80         <li>
     81           <a href="#">link1</a>
     82         </li>
     83         <li>
     84           <a href="#">link2</a>
     85         </li>
     86         <li>
     87           <a href="#">link3</a>
     88         </li>
     89         <li>
     90           <a href="#">link4</a>
     91         </li>
     92         <li>
     93           <a href="#">link5</a>
     94         </li>
     95         <li>
     96           <a href="#">link6</a>
     97         </li>
     98         <li>
     99           <a href="#">link7</a>
    100         </li>
    101         <li>
    102           <a href="#">link8</a>
    103         </li>
    104         <li>
    105           <a href="#">link9</a>
    106         </li>
    107         <li>
    108           <a href="#">link10</a>
    109         </li>
    110       </ul>
    111     </nav>
    112     <aside>
    113       <ul>
    114         <li>
    115           <a href="#">link1</a>
    116         </li>
    117         <li>
    118           <a href="#">link2</a>
    119         </li>
    120         <li>
    121           <a href="#">link3</a>
    122         </li>
    123         <li>
    124           <a href="#">link4</a>
    125         </li>
    126         <li>
    127           <a href="#">link5</a>
    128         </li>
    129         <li>
    130           <a href="#">link6</a>
    131         </li>
    132         <li>
    133           <a href="#">link7</a>
    134         </li>
    135         <li>
    136           <a href="#">link8</a>
    137         </li>
    138         <li>
    139           <a href="#">link9</a>
    140         </li>
    141         <li>
    142           <a href="#">link10</a>
    143         </li>
    144       </ul>
    145     </aside>
    146   </div>
    147   <footer>
    148     this is footer
    149   </footer>
    150 </body>
    151 
    152 </html>

  • 相关阅读:
    SDN大作业
    第06组 Beta版本演示
    SqlServer 将多行字段合并成单行
    C# MD5加密字符串
    Request.IsAjaxRequest()总是返回false
    Mybatis 语句包含单引号的写法
    idea每次启动maven项目都貌似读不到配置
    idea下springboot项目配置文件application.properties不生效的问题
    Ubuntu 设置时区
    SpringBoot 使用MyBatis
  • 原文地址:https://www.cnblogs.com/ch11ry/p/7832655.html
Copyright © 2011-2022 走看看