国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

CSS自定義屬性+CSS Grid網(wǎng)格實(shí)現(xiàn)超級(jí)的布局能力

greatwhole / 1270人閱讀

摘要:自定義屬性可以方便的實(shí)現(xiàn)很多功能例如主題變化。最近我一直在嘗試?yán)米远x屬性和網(wǎng)格的組合能實(shí)現(xiàn)什么神奇的效果,我需要在不同的斷點(diǎn)處重新定義和屬性。太多的可能性了瀏覽器支持目前,全球的瀏覽器都支持自定義屬性及以下版本是明顯的例外。

我在工作中使用CSS Grid已經(jīng)有幾個(gè)月了,我非常喜歡它在頁面布局時(shí)給我的靈活性。這么長時(shí)間以來,我們一直沒有一個(gè)真正的網(wǎng)格布局解決方案——用浮動(dòng)和flexbox總是有各種各樣的限制。但現(xiàn)在,我真的無法想象沒有Grid的CSS!

最近我還注意到的一件事就是CSS自定義屬性。CSS自定義屬性的工作方式有點(diǎn)像SASS和其他預(yù)處理器中的變量,主要的區(qū)別在于其它方法都是在瀏覽器中編譯后生成,還是原本的CSS寫法。CSS自定義屬性是真正的動(dòng)態(tài)變量,可以在樣式表中或使用javascript即時(shí)更新,這使得它們具有更多的可能性。如果你熟悉JavaScript,我喜歡把預(yù)處理器變量和CSS自定義屬性之間的區(qū)別想象成與const和let之間的區(qū)別相似——它們都有不同的用途。

CSS自定義屬性可以方便的實(shí)現(xiàn)很多功能(例如主題變化)。最近我一直在嘗試?yán)肅SS自定義屬性和CSS網(wǎng)格的組合能實(shí)現(xiàn)什么神奇的效果,我需要在不同的斷點(diǎn)處重新定義grid-template-rows和grid-template-columns屬性。下面的代碼中有一個(gè)例子,我使用SASS變量定義了頁面在不同的寬度下不同的列寬值,這些值將傳遞到grid-template-rows屬性中。我對(duì)grid-gap屬性也做了同樣的操作,這樣頁面寬度不同時(shí)元素之間的間距也是不同的:

$wrapper: 1200px;
$col: 1fr;
$gutter: 20px;

$wrapper-l: 90%;
$col-l: calc((1000px - (13 * 40px)) / 12);
$gutter-l: 40px;

$col-xl: calc((1200px - (13 * 50px)) / 12);
$gutter-xl: 50px;

body {
    background-color: lighten(grey, 30%);
}

.wrapper {
    max-width: $wrapper;
    margin: 20px auto;
    
    @media (min-width: 1300px) {
        max-width: $wrapper-l;
    }
}

.grid {
    display: grid;
    padding: $gutter;
    grid-template-columns: 1fr repeat(12, $col) 1fr;
    grid-template-rows: repeat(2, minmax(150px, auto));
    grid-gap: $gutter;
    border: 1px solid grey;
    background: white;
    width: auto;
    
    @media (min-width: 1300px) {
        grid-template-columns: 1fr repeat(12, $col-l) 1fr;
        grid-gap: $gutter-l;
        padding: $col-l;
    }
    
    @media (min-width: 1500px) {
        grid-template-columns: 1fr repeat(12, $col-xl) 1fr;
        grid-gap: $gutter-xl;
        padding: $col-xl;
    }
}

.grid__item {
    border: 1px solid blue;
}

.grid__item--heading {
    grid-column: 2 / 11;
}

點(diǎn)擊查看上圖的全部代碼和實(shí)時(shí)效果

就如你所看到的,基本上必須在媒體查詢中再次寫出整個(gè)代碼塊來改變樣式,因?yàn)樽兞恳坏┒x就固定了。(我當(dāng)然可以使用mixin,但是最終效果是一樣的——一大塊代碼。)

使用CSS自定義屬性,可以減少代碼量,因?yàn)槲抑恍韪旅襟w查詢中的變量,瀏覽器就會(huì)重新計(jì)算網(wǎng)格。十行(sass)代碼可能看起來不是一個(gè)巨大的節(jié)省,但代碼的可讀性要高得多,因?yàn)椴槐卦诤脦讉€(gè)地方添加媒體查詢來處理我們的新變量,我只需在該組件的代碼開頭聲明它們,并且無需擔(dān)心是否已替換了正在使用的哪個(gè)值:

:root {
    --wrapper: 1200px;
    --col: 1fr;
    --gutter: 20px;
    
    @media (min-width: 1300px) {
        --wrapper: 90%;
        --col: calc((1000px - (13 * 40px)) / 12);
        --gutter: 40px;
    }
    
    @media (min-width: 1500px) {
        --wrapper: 90%;
        --col: calc((1200px - (13 * 50px)) / 12);
        --gutter: 50px;
    }
}

body {
    background-color: lighten(grey, 30%);
}

.wrapper {
    max-width: var(--wrapper);
    margin: 20px auto;
}

.grid {
    display: grid;
    padding: var(--gutter);
    grid-template-columns: 1fr repeat(12, var(--col)) 1fr;
    grid-template-rows: repeat(2, minmax(150px, auto));
    grid-gap: var(--gutter);
    border: 1px solid grey;
    background: white;
    width: auto;
}

.grid__item {
    border: 1px solid blue;
}

.grid__item--heading {
    grid-column: 2 / 11;
}

.grid__item--body {
    grid-column: 2 / 8;
    grid-row: 2 / span 1;
}

.grid__item--media {
    background: hotPink;
    grid-column: 11 / 14;
    grid-row: 1 / span 2;
}

點(diǎn)擊查看全部代碼和實(shí)時(shí)效果

我發(fā)現(xiàn)使用CSS Grid的一個(gè)特點(diǎn)是,語法非常冗長,而且并不容易快速、輕松地看到正在發(fā)生的事情,特別是在復(fù)雜的網(wǎng)格中。但是在這個(gè)例子中,使用CSS自定義屬性,可以為網(wǎng)格項(xiàng)的大小和坐標(biāo)設(shè)置變量,并且只寫一次grid-column和grid-row屬性。對(duì)我來說,這比每次都寫出完整的屬性要清楚得多,而且很容易一目了然地看到網(wǎng)格項(xiàng)的位置。

這里有一個(gè)隨機(jī)動(dòng)態(tài)改變自定義變量的DEMO,在這個(gè)示例中,我使用javascript循環(huán)網(wǎng)格項(xiàng),并在每次單擊按鈕時(shí)使用隨機(jī)值更新變量。沒有添加類或額外的CSS。

在這個(gè)的示例DEMO中,使用用戶輸入的值動(dòng)態(tài)更改網(wǎng)格項(xiàng)。這里要更新的只是x和y坐標(biāo)的三個(gè)變量以及網(wǎng)格項(xiàng)的大小。

太多的可能性了!

瀏覽器支持
目前,全球88%的瀏覽器都支持CSS自定義屬性——Internet Explorer 11及以下版本是明顯的例外。這與對(duì)CSS Grid網(wǎng)格布局的支持大致相同,這意味著要使用特性查詢來區(qū)分支持與不支持的瀏覽器。

可以這樣使用@supports聲明來測試對(duì)css自定義屬性的支持:

@supports(--css: variables) {
        .my-div {
            --size: 2;
            --posX: 3;
            grid-column: var("--posX") / span var("--size");
        }
    }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/114691.html

相關(guān)文章

  • CSS定義屬性+CSS Grid網(wǎng)格實(shí)現(xiàn)超級(jí)布局能力

    摘要:自定義屬性可以方便的實(shí)現(xiàn)很多功能例如主題變化。最近我一直在嘗試?yán)米远x屬性和網(wǎng)格的組合能實(shí)現(xiàn)什么神奇的效果,我需要在不同的斷點(diǎn)處重新定義和屬性。太多的可能性了瀏覽器支持目前,全球的瀏覽器都支持自定義屬性及以下版本是明顯的例外。 我在工作中使用CSS Grid已經(jīng)有幾個(gè)月了,我非常喜歡它在頁面布局時(shí)給我的靈活性。這么長時(shí)間以來,我們一直沒有一個(gè)真正的網(wǎng)格布局解決方案——用浮動(dòng)和flex...

    Panda 評(píng)論0 收藏0
  • CSS定義屬性+CSS Grid網(wǎng)格實(shí)現(xiàn)超級(jí)布局能力

    摘要:自定義屬性可以方便的實(shí)現(xiàn)很多功能例如主題變化。最近我一直在嘗試?yán)米远x屬性和網(wǎng)格的組合能實(shí)現(xiàn)什么神奇的效果,我需要在不同的斷點(diǎn)處重新定義和屬性。太多的可能性了瀏覽器支持目前,全球的瀏覽器都支持自定義屬性及以下版本是明顯的例外。 我在工作中使用CSS Grid已經(jīng)有幾個(gè)月了,我非常喜歡它在頁面布局時(shí)給我的靈活性。這么長時(shí)間以來,我們一直沒有一個(gè)真正的網(wǎng)格布局解決方案——用浮動(dòng)和flex...

    lx1036 評(píng)論0 收藏0
  • 翻譯 | CSS網(wǎng)格CSS Grid布局入門

    摘要:瀏覽器兼容性網(wǎng)格布局從開始收到支持,微軟在會(huì)更新對(duì)網(wǎng)格布局的支持。微軟的瀏覽器和有一種比較舊的實(shí)現(xiàn),所以有不少限制,我們會(huì)簡單介紹新的實(shí)現(xiàn)方式和老的實(shí)現(xiàn)方式之間的區(qū)別,這樣你能知道如何規(guī)避他們。 原文地址:Getting to know CSS Grid Layout 原文作者:Chris Wright 譯者:華翔 校對(duì)者:珂珂、干干 翻譯 | CSS網(wǎng)格(CSS Grid)布局入...

    Ashin 評(píng)論0 收藏0
  • CSS Grid 布局完全指南(圖解 Grid 詳細(xì)教程)

    摘要:重復(fù)網(wǎng)格區(qū)域的名稱導(dǎo)致內(nèi)容跨越這些單元格。中間一排將由兩個(gè)區(qū)域,一個(gè)是空單元格,一個(gè)區(qū)域組成。你可以使用任意數(shù)量的相鄰的點(diǎn)來聲明單個(gè)空單元格。只要這些點(diǎn)之間沒有空隙隔開,他們就代表一個(gè)單獨(dú)的單元格。? CSS Grid 布局是 CSS 中最強(qiáng)大的布局系統(tǒng)。與 flexbox 的一維布局系統(tǒng)不同,CSS Grid 布局是一個(gè)二維布局系統(tǒng),也就意味著它可以同時(shí)處理列和行。通過將 CSS 規(guī)則應(yīng)用...

    flybywind 評(píng)論0 收藏0
  • 如何用 CSS 網(wǎng)格快速做出網(wǎng)站原型

    摘要:簡評(píng)網(wǎng)格模塊是創(chuàng)建網(wǎng)站模型的絕佳工具。如果你對(duì)網(wǎng)格完全陌生,你可能要瀏覽一下我的分鐘介紹網(wǎng)格的文章。每一行代表一行,每一個(gè)字符,,,代表一個(gè)網(wǎng)格元素。無論標(biāo)簽在標(biāo)記中是如何放置的,我們都能隨意轉(zhuǎn)換。這被稱為源代碼的獨(dú)立性,這是的一大進(jìn)步。 簡評(píng):CSS 網(wǎng)格模塊是創(chuàng)建網(wǎng)站模型的絕佳工具。它是我嘗試過的任何其他系統(tǒng)中最快讓你體驗(yàn)布局的工具。 我們的網(wǎng)格 我們將從模仿一個(gè)經(jīng)典網(wǎng)站的非常基本...

    thursday 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<