1. 冷門又好用的 CSS 特性

        共 8608字,需瀏覽 18分鐘

         ·

        2022-01-10 23:43

        作者:MudOn Tire

        來源:SegmentFault  思否社區(qū)


        1. 多列布局(Multi-column Layout)



        MDN - CSS Multi-column Layout:

        https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Columns


        Can I Use - CSS3 Multi-column Layout:

        https://caniuse.com/multicolumn


        CSS 提供了對多列布局的支持。支持設置布局中的列數(shù) (column-count)、內(nèi)容應如何列之間的流動規(guī)則、列之間的間距 (column-gap) 以及列分割線(column-rule)的樣式。


        比如可以實現(xiàn)下面的瀑布流效果:



        Codepen demo 預覽:

        https://codepen.io/mudontire/pen/yLevxRr


        主要樣式


        .masonry {
          width: 1440px;
          margin: 20px auto;
          columns: 4;
          column-gap: 30px;

          .item {
            width: 100%;
            break-inside: avoid;
            margin-bottom: 30px;

            img {
              width: 100%;
            }
          }
        }


        2. 書寫模式(Writing Modes)



        MDN - CSS Writing Modes:

        https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Writing_Modes


        Can I Use - CSS writing-mode property:

        https://caniuse.com/css-writing-mode


        Writing Modes 定義了各種國際書寫模式,例如從左到右(拉丁語、印度語)、從右到左(希伯來語、阿拉伯語)、雙向(混合從左到右和從右到左的語言)和垂直(漢語)。


        下面是三種書寫方式的展示:



        Codepen demo 預覽:

        https://codepen.io/mudontire/pen/Yzreqvx


        關鍵樣式:


        .left-to-right {
          direction: ltr;
        }

        .right-to-left {
          direction: rtl;
        }

        .vertical {
          writing-mode: vertical-rl;
        }


        或者,可以用來實現(xiàn)一個黑客帝國的 code rain:


        Codepen - Matrix code rain 預覽: 

        https://codepen.io/mudontire/pen/YzreyWL


        3. aspect-ratio 屬性



        MDN - aspect-ratio:

        https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio


        Can I Use - CSS property: aspect-ratio:

        https://caniuse.com/mdn-css_properties_aspect-ratio


        CSS 的 aspect-ratio 屬性用于設置元素的首選寬高比,可以自動計算寬度、高度和其他一些布局功能,省去同時計算寬和高的工作。


        比如,視頻網(wǎng)站可以設置視頻播放窗口比例為 16/9:



        Codepen demo 預覽:

        https://codepen.io/mudontire/pen/mdBXPqB


        關鍵樣式:


        .video-box {
          width: 70vw;
          background-color: #000;
          aspect-ratio: 16/9;
        }


        4. gap 屬性



        MDN - gap:

        https://developer.mozilla.org/en-US/docs/Web/CSS/gap

        Can I Use - gap property for Flexbox:

        https://caniuse.com/flexbox-gap


        CSS 的 gap 屬性用于 flex 和 grid 布局時設置行和列之間的間隔,是 row-gap column-gap 的簡寫。


        以前在使用 flex 布局的時候經(jīng)常會用 margin、padding 來控制 flex item 之間的間隔,用 gap 會更方便。


        比如:


        <div class="flex-box">
          <div class="item"></div>
          <div class="item"></div>
          <div class="item"></div>
          <div class="item"></div>
          <div class="item"></div>
          <div class="item"></div>
          <div class="item"></div>
          <div class="item"></div>
          <div class="item"></div>
        </div>


        .flex-box {
          display: flex;
          width: 400px;
          flex-wrap: wrap;
          gap: 20px;
        }

        .item {
          width: 120px;
          height: 60px;
          background-color: c·rimson;
        }



        Codepen demo 預覽


        5. CSS Shapes



        MDN - CSS Shapes:

        https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Shapes


        Can I Use - CSS Shapes Level 1:

        https://caniuse.com/css-shapes


        CSS Shapes 用于描述元素的幾何形狀。元素的常規(guī)形狀就是矩形,使用 CSS Shapes 可以將元素定義為圓、橢圓或多邊形。


        對于 Level 1 規(guī)范,CSS Shapes 可以應用于浮動元素。該規(guī)范定義了不同的方法來定義浮動元素上的形狀。


        比如,實現(xiàn)下面文字環(huán)繞圓形圖片的效果:



        Codepen demo 預覽:

        https://codepen.io/mudontire/pen/eYGVzdz


        關鍵樣式:


        img {
          width: 300px;
          float: left;
          shape-outside: circle(50%);
        }


        6. object-fit 屬性



        MDN - object-fit:

        https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit


        Can I Use - CSS3 object-fit/object-position:

        https://caniuse.com/object-fit


        object-fit 屬性用于設置 replaced element(例如 <img> 或 <video>)的內(nèi)容如何適配其容器的尺寸。


        replaced element 鏈接:

        https://developer.mozilla.org/en-US/docs/Web/CSS/Replaced_element


        比如,調(diào)整一張圖片在容器里面的顯示:



        Codepen demo 預覽:

        https://codepen.io/mudontire/pen/BawYJrQ


        7. filter 屬性



        MDN - filter:

        https://developer.mozilla.org/en-US/docs/Web/CSS/filter


        Can I Use - CSS Filter Effects:

        https://caniuse.com/css-filters


        CSS 的 filter 屬性將圖像的效果調(diào)整(模糊、對比度、灰度、色調(diào)等)應用于元素。filter 通常用于調(diào)整圖像、背景和邊框的渲染。


        比如,每年的國家公祭日很多網(wǎng)站會把顏色調(diào)整成黑白,就可以用 filter 一行代碼搞定:



        8. backdrop-filter 屬性



        filter 類似的屬性,backdrop-filter 屬性將圖形效果(例如模糊或顏色偏移)應用于元素的背景區(qū)域。因為它適用于元素后面的所有內(nèi)容,使用時需要將元素或其背景至少部分設置為透明才能看到效果。


        MDN - backdrop-filter:

        https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter


        Can I Use - CSS Backdrop Filter:

        https://caniuse.com/css-backdrop-filter


        比如,可以用它做一個毛玻璃的效果:



        Codepen demo 預覽:

        https://codepen.io/mudontire/pen/dyVdqow


        關鍵代碼:


        <div class="box">
          <p>
            If I know what love is
            <br />it is because of you
          </p>
        </div>


        .box {
          background: url(../images/roses.jpg) no-repeat;
        }

        p {
          background-color: rgba(255, 255, 255, 0.3);
          backdrop-filter: blur(20px);
          color: white;
        }


        9. conic-gradient() 函數(shù)



        MDN - conic-gradient()


        Can I Use - conic-gradient():

        https://caniuse.com/mdn-css_types_image_gradient_conic-gradient


        CSS 中的 linear-gradient() 函數(shù)大家應該接觸的不少,除此之外 gradient 家族中還有 radial-gradient()、conic-gradient() 等,更多類型可參考 MDN - gradient。


        MDN - gradient:

        https://developer.mozilla.org/en-US/docs/Web/CSS/gradient


        conic-gradient() 函數(shù)創(chuàng)建一個圖像,該圖像由漸變色組成,顏色圍繞中心點旋轉過渡(而不是從中心輻射)。


        例如,常見的漸變色儀表盤圖表就可以用 conic-gradient() 函數(shù)繪制:



        Codepen demo 預覽:

        https://codepen.io/mudontire/pen/LYzQJLq


        10. accent-color 屬性



        MDN - accent-color:

        https://developer.mozilla.org/en-US/docs/Web/CSS/accent-color


        Can I Use - CSS property: accent-color:

        https://caniuse.com/mdn-css_properties_accent-color


        CSS 的 accent-color 屬性用于設置由某些元素生成的 UI 控件的強調(diào)色。比如 <input> 元素生成的 checkboxradio 控件被選中時的顏色。


        比如,改變以下元素的強調(diào)色:



        Codepen demo 預覽;

        https://codepen.io/mudontire/pen/XWeZLLa


        關鍵代碼:


        <input type="checkbox" class="checkbox" checked />
        <input type="radio" class="radio" checked />
        <input type="range" class="range" />
        <progress value="70" max="100" class="progress">70%</progress>


        .checkbox {
          width: 40px;
          height: 40px;
          accent-color: crimson;
        }

        .radio {
          width: 40px;
          height: 40px;
          accent-color: dodgerblue;
        }

        .range {
          width: 200px;
          accent-color: lawngreen;
        }

        .progress {
          width: 200px;
          accent-color: coral;
        }


        11. 滾動捕捉(Scroll Snap)



        MDN - CSS Scroll Snap:

        https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scroll_Snap


        Can I Use - CSS Scroll Snap:

        https://caniuse.com/css-snappoints


        CSS Scroll Snap 引入了對滾動位置的捕捉,它強制執(zhí)行滾動操作完成后滾動容器的滾動端口可能結束的位置。


        比如,我想讓每次滾動結束的位置都停在下一個元素開頭,實現(xiàn)一個滾動翻頁的效果:



        Codepen demo 預覽:

        https://codepen.io/mudontire/pen/dyVdxvr


        關鍵代碼:


        <article class="scroller">
          <section>
            <h2>Page one</h2>
          </section>
          <section>
            <h2>Page two</h2>
          </section>
          <section>
            <h2>Page three</h2>
          </section>
          <section>
            <h2>Page four</h2>
          </section>
        </article>


        .scroller {
          overflow-y: scroll;
          scroll-snap-type: y mandatory;
        }

        section {
          scroll-snap-align: start;
        }


        12. overscroll-behavior 屬性



        MDN - overscroll-behavior:

        https://developer.mozilla.org/en-US/docs/Web/CSS/overscroll-behavior


        Can I Use - CSS overscroll-behavior:

        https://caniuse.com/css-overscroll-behavior


        CSS的 overscroll-behavior 屬性用于定義元素滾動到滾動區(qū)域邊界時的行為。它是 overscroll-behavior-x 和 overscroll-behavior-y 的簡寫。


        overscroll-behavior-x :

        https://developer.mozilla.org/en-US/docs/Web/CSS/overscroll-behavior-x


        overscroll-behavior-y:

        https://developer.mozilla.org/en-US/docs/Web/CSS/overscroll-behavior-y


        瀏覽器的默認行為是:當子元素滾動到邊界后繼續(xù)滾動鼠標,會觸發(fā)父元素的滾動。該行為被稱作 scroll chaining。很多時候我們不需要這樣的行為,比如當我們滾動一個彈窗中的內(nèi)容時,不希望后面的頁面也跟著滾動。通過設置 overscroll-behavior:contain 就可以修改這一行為,而不需要監(jiān)聽 scroll 事件去阻止冒泡。


        Codepen demo 預覽:
        https://codepen.io/mudontire/pen/ExwQqdO


        好了,目前能想到的就是這么多,希望對大家更高效、更優(yōu)雅的畫頁面有幫助 



        點擊左下角閱讀原文,到 SegmentFault 思否社區(qū) 和文章作者展開更多互動和交流,掃描下方”二維碼“或在“公眾號后臺回復“ 入群 ”即可加入我們的技術交流群,收獲更多的技術文章~

        - END -


        瀏覽 78
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 美女网站色| 女人张开腿给男人桶 | 啪啪视频免费观看 | 韩国三级《女教师》6 | 嬷嬷羞耻调教后宫日常h视频 |