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

    CSS 高级布局技巧

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

    用 :empty 区分空元素

    兼容性:不支持 IE8

    Demo

    假如我们有以上列表:

    <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

    Demo

    左中右的流式布局:

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

    用 vw 和 vh 做全屏滚动效果

    兼容性:不支持 IE8

    Demo

    vw 和 vh 是相对于 viewport 而言的,所以不会随内容和布局的变化而变。

    section {  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- 150px; column-gap: 3rem; column-rule: 1px dashed #ccc; column-fill: auto;}
    h2 {column-span: all;}
     
     
  • 相关阅读:
    使用Orachard与Bootstrap建站心得
    【02C语言】11函数的声明和定义
    【02C语言】09流程控制
    有趣的linux命令
    杭州哪家整容医院比较有威望?
    DDD:在基于关系数据库的领域,聚合的边界等于并发管理的边界。
    TOGAF架构开发方法(ADM)之业务架构阶段
    构建一个真实的应用电子商务SportsStore(八)
    Lucene分词组件盘古与mmseg4j评测
    .NET PDB文件到底是什么?
  • 原文地址:https://www.cnblogs.com/wwlww/p/8413510.html
Copyright © 2011-2022 走看看