91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSS自定義屬性+CSS Grid網格實現超級的布局能力

發布時間:2020-08-07 17:07:01 來源:ITPUB博客 閱讀:154 作者:智云編程 欄目:web開發

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

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

$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;
}
CSS自定義屬性+CSS Grid網格實現超級的布局能力

就如你所看到的,基本上必須在媒體查詢中再次寫出整個代碼塊來改變樣式,因為變量一旦定義就固定了。(我當然可以使用mixin,但是最終效果是一樣的——一大塊代碼。)

使用CSS自定義屬性,可以減少代碼量,因為我只需更新媒體查詢中的變量,瀏覽器就會重新計算網格。十行(sass)代碼可能看起來不是一個巨大的節省,但代碼的可讀性要高得多,因為不必在好幾個地方添加媒體查詢來處理我們的新變量,我只需在該組件的代碼開頭聲明它們,并且無需擔心是否已替換了正在使用的哪個值:

: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;
}
CSS自定義屬性+CSS Grid網格實現超級的布局能力

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

為了幫助大家讓學習變得輕松、高效,給大家免費分享一大批資料,幫助大家在成為前端工程師,乃至全棧工程師的路上披荊斬棘。在這里給大家推薦一個前端全棧學習扣qun:784783012 歡迎大家進群。交流討論,學習交流,共同進步。
當真正開始學習的時候難免不知道從哪入手,導致效率低下影響繼續學習的信心。
但最重要的是不知道哪些技術需要重點掌握,學習時頻繁踩坑,最終浪費大量時間,所以有效資源還是很有必要的。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄢陵县| 邳州市| 青龙| 原平市| 北安市| 蒲江县| 蒙阴县| 乌恰县| 沂南县| 从江县| 崇明县| 大足县| 依兰县| 桑日县| 黎城县| 泸溪县| 广平县| 万盛区| 城固县| 同心县| 塔城市| 孟村| 古蔺县| 大理市| 河池市| 安多县| 佛冈县| 石城县| 宁安市| 临漳县| 武山县| 旺苍县| 河北区| 勐海县| 南靖县| 共和县| 玉山县| 太白县| 塘沽区| 蒲江县| 日土县|