zoukankan      html  css  js  c++  java
  • CSS 高级布局技巧

    随着 IE8 逐渐退出舞台,很多高级的 CSS 特性都已被浏览器原生支持,再不学下就要过时了。

    用 :empty 区分空元素

    兼容性:不支持 IE8

    /*假如我们有以上列表:*/
    
    <div class="item">a</div>
    <div class="item">b</div>
    <div class="item"></div>
    
    我们希望可以对空元素和非空元素区别处理,那么有两种方案。
    
    /* 用 :empty 选择空元素:*/
    .item:empty {
      display: none;
    }
    
    /*或者用 :not(:empty) 选择非空元素:*/
    
    .item:not(:empty) {
      border: 1px solid #ccc;
      /* ... */
    }

    用 :*-Of-Type 选择元素

    兼容性:不支持 IE8

    /* 给第一个 p 段落加粗:*/
    p:first-of-type {
      font-weight: bold;
    }
    /* 给最后一个 img 加边框:*/ img:last-of-type { border: 10px solid #ccc; } /* 给无相连的 blockquote 加样式:*/ blockquote:only-of-type { border-left: 5px solid #ccc; padding-left: 2em; } /* 让奇数列的 p 段落显示红色:*/ p:nth-of-type(even) { color: red; } 此外,:nth-of-type 还可以有其他类型的参数: /* 偶数个 */ :nth-of-type(even) /* only 第三个 */ :nth-of-type(3) /* 每第三个 */ :nth-of-type(3n) /* 每第四加三个,即 3, 7, 11, ... */ :nth-of-type(4n+3)

    用 calc 做流式布局

    兼容性:不支持 IE8

    /* 左中右的流式布局:*/

    nav { position: fixed; left: 0; top: 0; width: 5rem; height: 100%; } side { position: fixed; right: 0; top: 0; width: 20rem; height: 100%; } main { margin-left: 5rem; width: calc(100% - 25rem); }

    用 vw 和 vh 做全屏滚动效果

    兼容性:不支持 IE8

    查看Demo

    /* vw 和 vh 是相对于 viewport 而言的,所以不会随内容和布局的变化而变。 */
    
    section {
      width: 100vw;
      height: 100vh;
      
      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center;
      
      background-size: cover;
      background-repeat: no-repeat;
      background-attachment: fixed;
    }
    
    section:nth-of-type(1) {
      background-image: url('https://unsplash.it/1024/683?image=1068');
    }
    section:nth-of-type(2) {
      background-image: url('https://unsplash.it/1024/683?image=1073');
    }
    section:nth-of-type(3) {
      background-image: url('https://unsplash.it/1024/683?image=1047');
    }
    section:nth-of-type(4) {
      background-image: url('https://unsplash.it/1024/683?image=1032');
    }
    
    body {
      margin: 0;
    }
    p {
      color: #fff;
      font-size: 100px;
      font-family: monospace;
    }

    用 unset 做 CSS Reset

    兼容性:不支持 IE

    查看Demo

    body {
      color: red;
    }
    button {
      color: white;
      border: 1px solid #ccc;
    }
    
    /* 取消 section 中 button 的 color 设置 */
    section button {
      color: unset;
    }

    用 column 做响应式的列布局

    兼容性:不支持 IE9

    查看Demo

    nav {
      column-count: 4;
      column-width: 150px;
      column-gap: 3rem;
      column-rule: 1px dashed #ccc;
      column-fill: auto;
    }
    
    h2 {
      column-span: all;
    }
  • 相关阅读:
    struts2学习笔记一struts2标签学习
    Struts2常用标签总结
    Strtus2标签<s:url>
    com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@d3ade7 ,项目启动错误
    【异常处理】com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@390508 --&nb
    MyEclipse怎么导入导出项目
    struts2的s:iterator 标签 详解
    CSS中的Position属性
    用Iterator实现遍历集合
    ArrayList的toArray
  • 原文地址:https://www.cnblogs.com/htzan/p/6224892.html
Copyright © 2011-2022 走看看