精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

CSS層疊技術:優化CSS重置,打造獨特樣式

開發 前端
在構建Pink Design的過程中,我們有幸為開發者這種類型的用戶提供服務,他們通常會定期更新瀏覽器。因此,我們選擇了采用這種新的、利用CSS層進行開發的方法。

這篇文章介紹了一種名為CSS層疊的技術,用于優化CSS重置過程。它解釋了CSS重置的概念,即通過刪除瀏覽器默認樣式來確保在不同瀏覽器上呈現一致的外觀。然后,它引入了CSS層疊技術,以更好地控制樣式的層次結構和優先級。

文章詳細討論了CSS層疊技術的使用方法和優勢。它介紹了幾個關鍵概念,包括層疊順序、z軸定位和層疊上下文等。它還提供了實際的示例和代碼片段,以幫助讀者理解如何使用CSS層疊來實現更好的樣式控制和管理。

該文章還提到了使用CSS層疊技術時可能遇到的一些挑戰和注意事項。它建議在使用CSS層疊時要小心處理層疊順序和優先級,以避免樣式沖突和不一致的呈現。

下面是正文~~

我一直是傾向于使用更為積極的CSS重置方法的人。這些方法會清除瀏覽器中大部分默認的樣式,例如,它會移除從<h1>到<h6>元素默認的標題樣式,這些樣式通常具有較大的字體大小和字體粗細。

然而,我也喜歡 Normalize CSS 如何處理陰影 DOM 元素,這是我們在任何 CSS 重置方法中都沒有的。

然而,我也喜歡Normalize CSS處理影子DOM元素的方式,這是我們在任何CSS重置方法中都沒有的。 因此,我總是在尋找方法將它們兩者結合起來。即便如此,我仍然遇到了一些CSS優先級問題,需要找到一種解決方法。

快進到今天,所有的瀏覽器現在都支持CSS層。因此,在開發Appwrite的開源設計系統Pink Design時,我們開始重新思考如何更好地處理這個問題。

在我們開始之前,讓我們先談談一些關于CSS重置方法的內容。

CSS重置方法

多年來,一直存在著一種“爭論”,即哪種CSS重置方法更好。

在這次比賽中,我們采用了兩種熟悉的方法:

  1. **Normalize CSS ** — 一種溫和的方法,可以修復瀏覽器之間的差異,同時保留HTML元素的本地樣式,例如 <h1> , <h2> 等標題元素。

如之前提到的,Normalize CSS也負責處理在不同瀏覽器中可能會有差異展現的Shadow DOM元素。

Normalize CSS 中處理 Shadow DOM 元素的演示:

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}
  1. CSS Reset —— 相較而言,CSS重置是一種更為激進的方法,常常會廢除瀏覽器“用戶代理樣式表”的默認樣式。

CSS重置演示:

此代碼將撤銷 <h1> 的特殊 font-size 、 font-weight 和 margin ,將其轉換為 <h6> 元素:

h1, h2, h3, h4, h5, h6 {
  margin: 0;
  font-size: inherit; 
  font-weight: inherit;
}

方法的結合

通過結合 Normalize CSS 和 CSS Reset 兩種方法,你可以從兩種方法中獲益。

這樣可以確保處理內部 shadow DOM元素,并忽略從“用戶代理樣式表”繼承的無用樣式。實現這一點最簡單的方法是同時加載兩者。以下是如何在Sass預處理器中實現的演示:

/* CSS Resets */
@use 'normalize';
@use 'reset';

你可能會認為,如果我們首先加載Normalize CSS,然后再加載CSS Reset,這會使我們的CSS Reset具有更強的特異性,對嗎?不完全是這樣的;讓我們談談這方面的一些問題。

合并方法的問題

在Appwrite Pink中,我們使用Normalize CSS,同時與“新的CSS重置方法”結合使用。“新的CSS重置方法”是一種新的重置CSS的方式,利用了新的原生CSS重置功能。

對于“Normalize CSS”和“The New CSS Reset”這兩個項目,我們都是原封不動地使用它們(來自NPM),甚至包括來自Normalize CSS的不必要部分,比如修復<h1>元素的不同樣式,這將會在CSS重置中被移除。

“Normalize CSS”中的 Header <h1> 樣式:

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

在“The New CSS Reset”中,通用移除樣式(包括元素):

/*
    Remove all the styles of the "User-Agent-Stylesheet", 
    except for the 'display' property.
    - The "symbol *" part is to solve Firefox SVG sprite bug
 */
*:where(:not(html, iframe, canvas, img, svg, video, audio):not(svg *, symbol *)) {
    all: unset;
    display: revert;
}

但是這里開始出現了問題。為了理解這些問題,讓我們先談談基本的CSS,它定義了我們的樣式:

順序很重要

CSS選擇器的順序很重要。這是因為通常情況下,后面的樣式比前面的樣式更強。在我們的情況下,CSS重置文件的順序是正確的。

首先,我們想要加載“Normalize CSS”,它將規范化不同瀏覽器之間的差異,然后我們想要使用CSS重置來刪除我們不需要的內容,在我們的情況下,這是使用“The New CSS Reset”完成的。

Scss 導入的示例:

/* CSS Resets files order */
@use 'normalize'; /* 1 */
@use 'reset';     /* 2 */
/* In general, last code is stronger in CSS */

CSS 優先級

我們根據CSS選擇器的強度(元素、類名和ID名)來定義我們選擇器的優先級。從最弱到最強的選擇器依次為元素選擇器、類選擇器和ID選擇器。

在這個例子中,ID選擇器將贏得“CSS特異性戰爭”,因為ID選擇器比類名選擇器或元素選擇器更強。

這意味著 <h1> 元素的顏色將會是粉色。

<h1 class="title" id="mainTitle">some content</h1>
#mainTitle { color:pink;   } /* 1 (ID), 0 (Classes), 0(element) */
.title     { color:yellow; } /* 0 (ID), 1 (Classes), 0(element) */
h1         { color:red;    } /* 0 (ID), 0 (Classes), 1(element) */

我們的CSS特異性沖突

如果我們看一下<h1> 元素的Normalize CSS選擇器,它具有一個元素的能力:

/* 0 (ID), 0 (Classes), 1 (element) */
h1 {...}

這是一個相對較低強度的選擇器。

讓我們來看一下來自“The New CSS Reset”的主要CSS重置選擇器:

/* 0 (ID), 0 (Classes), 0 (element) */
*:where(:not(html, iframe, canvas, img, svg, video, audio):not(svg *, symbol *)) {...}

為了盡可能地降低特異性,使用 :where() 偽選擇器。 :where() 偽選擇器的主要思想之一是消除選擇器創建的任何CSS特異性。

但這里產生了沖突,<h1>的樣式比CSS重置的樣式更為強大,這對我們來說是個問題。

解決這個沖突的一種方法是移除 Normalize CSS 中不必要的部分,也就是移除所有非 Shadow DOM 部分的樣式。但是,如果我們從 NPM 包中自動加載項目,這可能會成為一個問題,因為這樣很難維護。

CSS Layers 來拯救

CSS層是為了解決這樣的問題而發明的,即我們希望告訴瀏覽器,特定的層比其他層更重要,并忽略其他層的CSS優先級。

為了做到這一點,我們有@layer規則,這規則定義了一個層。它將部分樣式包裹起來,定義層的部分,并在層自身內部實行CSS優先級。

這個做法本身就能解決我們的問題。

為了更精確地定義層的順序,我們可以添加一個 @layer,這將決定你希望代碼按何種順序出現。

@layer normalize {
  /* CSS Normalize Here */
}
@layer the-new-css-reset {
  /* CSS Reset here */
}

這本身就會解決我們的問題。為了更精確地定義層的順序,我們可以添加“layer statement”,以確定你希望代碼出現的順序。

示例:

/* layer statement - define the order, 
   even if the order of the code will not be in the same way */
@layer normalize, the-new-css-reset;

@layer normalize {
  /* CSS Normalize Here */
}
@layer the-new-css-reset {
  /* CSS Reset here */
}

Sass 預處理器支持

@use 'sass:meta';

@layer normalize, the-new-css-reset;

@layer normalize {
  @include meta.load-css('normalize');
}
@layer the-new-css-reset {
  @include meta.load-css('the-new-css-reset');
}

這樣,我們可以將CSS層分別保存在不同的文件中,并確保在保持代碼整潔的同時,最后一層能在“樣式優先級之爭”中勝出。

瀏覽器支持

CSS layers  已經在所有主流瀏覽器中實現了相當長的時間

圖片圖片

總結

本文主要探討了我們如何解決CSS優先級問題,尤其是關于CSS重置層面的問題。

隨著我們接近2023年底,隨著用戶升級他們的瀏覽器,這種使用CSS層來解決CSS沖突的方法將越來越常見。

在構建Pink Design的過程中,我們有幸為開發者這種類型的用戶提供服務,他們通常會定期更新瀏覽器。因此,我們選擇了采用這種新的、利用CSS層進行開發的方法。

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2022-11-28 08:45:56

前端CSS

2010-09-06 14:11:32

CSS

2010-08-31 09:39:17

CSS樣式表

2010-08-06 14:52:35

FlexCSS層疊樣式表

2010-08-27 09:19:32

CSS層疊繼承

2015-10-09 09:43:28

CSS CSS3

2017-07-20 11:11:39

前端CSS書寫規范

2010-09-13 13:44:35

CSS表格CSS表單

2022-03-30 14:34:21

鴻蒙HarmonyOScss

2024-04-26 08:27:15

JavaScriptCSSHTML元素

2010-09-01 09:29:51

CSS層疊CSS繼承

2010-09-03 14:39:53

CSSCSS樣式表

2022-12-28 08:16:30

CSS新規范樣式

2022-03-22 09:07:34

開發CSS技術

2010-08-31 16:49:58

2010-08-16 16:17:21

2010-08-23 10:30:05

CSS超鏈接

2010-08-26 15:18:27

CSS樣式

2010-08-31 12:42:22

CSS a標簽

2010-08-24 13:05:23

CSS超鏈接
點贊
收藏

51CTO技術棧公眾號

成人永久免费视频| 色综合色综合| 色综合中文字幕国产| 亚洲精品高清视频| 精品久久久久久亚洲综合网站| 欧美日韩蜜桃| 亚洲欧洲午夜一线一品| 激情文学亚洲色图| 91吃瓜在线观看| 国产欧美日韩亚州综合| 亚洲在线第一页| 久久艹免费视频| 91精品一区国产高清在线gif | 毛片一区二区三区四区| 草草影院在线观看| 不卡在线观看av| 国产精品自产拍在线观看| 精品在线免费观看视频| 日韩在线不卡| 精品无人国产偷自产在线| 免费网站在线观看黄| 在线观看v片| 亚洲精品视频观看| 午夜老司机精品| 性高潮久久久久久久久久| 国产一区二区在线免费观看| 国产成人小视频在线观看| 国产精品成人网站| 伊人久久大香线| 一本色道久久88精品综合| 日韩精品人妻中文字幕有码 | 中文字幕第69页| 青草久久视频| 精品国产免费人成电影在线观看四季 | 天堂av中文在线| 国产精品美女久久福利网站| 欧美成熟毛茸茸复古| 国产成人精品无码高潮| 久久99国产精品久久99果冻传媒| 日韩免费不卡av| 五月婷婷激情网| 极品日韩av| 欧美福利视频在线| 天天看片中文字幕| 国产精品7m凸凹视频分类| 尤物99国产成人精品视频| 亚洲精品视频大全| 欧美人妖视频| 日韩精品高清在线观看| chinese麻豆新拍video| 久久九九热re6这里有精品| 日韩欧美aaaaaa| 中文字幕55页| 欧美一级片网址| 91精品国产日韩91久久久久久| 免费看污污网站| 91精品国产66| 欧美日韩国产一级| 亚洲制服在线观看| 免费观看亚洲天堂| 亚洲成avwww人| 秘密基地免费观看完整版中文 | 久久久99精品| 亚洲天堂偷拍| 69av在线视频| 久久精品视频1| 日韩激情在线观看| 成人久久精品视频| 99在线精品视频免费观看软件| 国产精品一区在线观看乱码| 成人av播放| 香蕉视频国产在线| 国产天堂亚洲国产碰碰| 日韩中文字幕一区| 日本高清视频在线观看| 亚洲综合色区另类av| 老太脱裤子让老头玩xxxxx| 成人影院入口| 欧美日韩中文字幕一区| 欧美性猛交xxxx乱大交91| 视频一区日韩精品| 日韩av最新在线观看| 国产精品久久免费观看| 91麻豆国产自产在线观看亚洲| 欧美插天视频在线播放| 日本熟妇色xxxxx日本免费看| 久久成人免费| 国产在线视频欧美| 日本国产在线观看| 国产调教视频一区| 免费人成自慰网站| 日韩一区二区三区在线免费观看 | 国产精品一区专区欧美日韩| 国产精品毛片一区二区在线看舒淇 | 一区二区三区中文| 91精品国产91久久久久福利| 中文字幕 人妻熟女| 国产精品18久久久久久久久久久久| 国产欧美一区二区三区另类精品 | 无码精品黑人一区二区三区 | 妺妺窝人体色www聚色窝仙踪| 夜夜精品视频| 91免费电影网站| 四虎在线视频| 亚洲激情男女视频| 99视频在线视频| 国产精品美女在线观看直播| 中文欧美在线视频| 日本学生初尝黑人巨免费视频| 精品在线免费视频| 久久久精彩视频| av电影高清在线观看| 在线免费观看视频一区| 丰满熟女人妻一区二区三区| 日韩免费av| 国产69久久精品成人| 国产黄色片网站| 国产精品美女一区二区三区| 亚洲午夜无码av毛片久久| 国产一区二区三区黄网站| 亚洲女人天堂成人av在线| 九九热这里有精品视频| 久久超碰97人人做人人爱| 久久这里精品国产99丫e6| 五月婷婷视频在线观看| 欧洲人成人精品| 好吊日免费视频| 在线亚洲自拍| 国产91aaa| 在线中文字幕视频观看| 欧美久久久久久久久| 日本xxxxxxxxx18| 国产婷婷精品| 国产一区二区精品免费| 呦呦在线视频| 91精品免费在线观看| 一区二区三区在线播放视频| 久久国产66| 明星裸体视频一区二区| 美女搞黄视频在线观看| 日韩精品www| 亚洲伊人成人网| 97精品久久久午夜一区二区三区| 国产曰肥老太婆无遮挡| 999久久精品| 久久久久久91| 日本黄视频在线观看| 亚洲va欧美va人人爽午夜| 高清中文字幕mv的电影| 影音先锋亚洲电影| 久久综合久久久| 中文字幕人成乱码在线观看| 亚洲精选在线观看| 国产精品久免费的黄网站| 91美女在线视频| 日韩网址在线观看| 国产一区不卡| 国产精品视频色| 九色porny在线| 日韩欧美色综合网站| 久久久全国免费视频| 成人免费视频免费观看| 日本一道本久久| 久久爱www成人| 国产精品露脸av在线| 免费涩涩18网站入口| 色天天色综合| 国产91色在线|免| www日韩tube| 制服视频三区第一页精品| 欧美日韩综合一区二区| 成人精品电影在线观看| 浮妇高潮喷白浆视频| 欧美极品中文字幕| 亚洲a在线播放| 99热99re6国产在线播放| 精品亚洲国产视频| 一卡二卡在线观看| 亚洲自拍偷拍图区| 免费观看av网站| 久久99精品久久久| 日本午夜激情视频| 日韩在线观看电影完整版高清免费悬疑悬疑 | 国产美女在线观看一区| 性欧美大战久久久久久久| 精品高清久久| 97久草视频| 老司机成人影院| 欧美另类第一页| 欧美巨乳在线| 日韩一区二区三区在线观看| 成人免费a视频| 一区精品在线播放| 免费成人深夜夜行p站| 蜜臀av一区二区| 国产精品999视频| 久久精品国产www456c0m| 国产高清在线一区二区| 成人精品三级| 国产91|九色| 成人直播在线| 国产亚洲精品久久久优势| 国产成人av免费看| 欧美性大战久久久久久久| 天堂资源在线播放| 国产精品久久久久久久岛一牛影视| 日韩少妇一区二区| 国产自产视频一区二区三区| 国产乱子夫妻xx黑人xyx真爽| 综合激情婷婷| 亚洲v国产v| 日韩av网址大全| 91手机在线视频| 99热播精品免费| 97在线视频观看| 手机av在线播放| 久久精品美女视频网站 | 日韩性xxxx爱| 毛片网站在线| 亚洲精品乱码久久久久久按摩观| 国产熟女一区二区三区四区| 在线欧美一区二区| 日韩欧美在线观看免费| 亚洲最大色网站| 乱h高h女3p含苞待放| 日本一二三四高清不卡| 中国黄色a级片| 99久久精品国产一区二区三区| 亚洲高清在线不卡| 蜜臀国产一区二区三区在线播放| 超碰网在线观看| av成人国产| 欧美a v在线播放| 亚洲私拍自拍| 国产曰肥老太婆无遮挡| 欧美日韩调教| 国产在线无码精品| 欧美一区影院| 香蕉视频免费版| 女人色偷偷aa久久天堂| 特级毛片在线免费观看| 天天影视欧美综合在线观看| 亚洲欧美综合一区| 水蜜桃久久夜色精品一区| 亚洲国产一区二区在线| 欧美精品色图| 视频一区视频二区视频三区高| 国产欧美日韩影院| 色视频一区二区三区| 欧美精品久久久久久| 亚洲欧洲免费无码| 国产精品97| 免费的一级黄色片| 亚洲片区在线| 波多野结衣家庭教师视频| 日韩激情中文字幕| 日本黄色的视频| 国产乱子轮精品视频| 亚洲香蕉中文网| 91视频在线看| www久久久久久久| 亚洲素人一区二区| 黄网站免费在线| 日韩欧美在线国产| 少妇又紧又色又爽又刺激视频 | 久久国产中文字幕| 国产免费一区二区三区四在线播放 | 国产不卡免费视频| 在线观看国产免费视频| 久久精品夜色噜噜亚洲aⅴ| av网站免费在线看| 亚洲色图都市小说| 中文字幕在线字幕中文| 日本道在线观看一区二区| 亚洲影视一区二区| 欧美精品一区二区久久久| 欧美理论在线观看| 北条麻妃久久精品| 国产传媒在线| 国产精品日韩欧美综合| 6080亚洲理论片在线观看| 欧美久久久久久| 亚洲精品电影| 国产午夜福利视频在线观看| 麻豆成人综合网| 亚洲精品激情视频| 欧美国产视频在线| 国产极品美女高潮无套嗷嗷叫酒店| 欧美性少妇18aaaa视频| 国产伦理吴梦梦伦理| 亚洲国产私拍精品国模在线观看| caoporn国产精品免费视频| 欧美老少配视频| 91精品影视| 国产亚洲一区二区三区在线播放 | 高清欧美精品xxxxx| 日本特黄久久久高潮| 欧美一级片在线免费观看| 久久九九99视频| 国产一级淫片免费| 欧美日韩国产综合久久 | 嫩草国产精品入口| 在线视频精品一区| 蜜桃视频一区| 四虎精品一区二区| 亚洲女同一区二区| 最新在线中文字幕| 亚洲精品黄网在线观看| 国产一区久久精品| 国产精品男女猛烈高潮激情| 国产精品任我爽爆在线播放| 国产精品久久成人免费观看| 久久综合图片| 日本japanese极品少妇| 亚洲欧美日韩中文字幕一区二区三区 | 欧美精品黄色| 国产成人在线综合| 国产欧美一区二区精品性色| 91美女免费看| 亚洲精品久久久久久久久久久 | 91成人国产在线观看| 视频一区日韩| 国产午夜精品视频一区二区三区| 日本欧美一区二区| av中文字幕免费观看| 天天影视涩香欲综合网| 亚洲高清精品视频| 欧美xxxx做受欧美.88| 日韩在线电影| 亚洲精品成人自拍| 蜜臀av一区二区在线观看| 中文字幕免费高清| 色综合色综合色综合 | 色老头一区二区三区| 欧美成人精品三级网站| 欧美日韩精品一区| 午夜亚洲精品| 男生裸体视频网站| 红桃av永久久久| 性xxxxbbbb| 日本视频久久久| 国产精品入口久久| 国产精品乱码久久久久| 国产日产欧产精品推荐色| 一级一片免费看| 亚洲男人的天堂在线| 免费观看亚洲| 日韩欧美在线观看强乱免费| 日韩和的一区二区| 婷婷综合在线视频| 欧美男同性恋视频网站| 免费在线看a| 亚洲999一在线观看www| 欧美日韩18| 午夜男人的天堂| 欧美丝袜美女中出在线| 国产小视频在线播放| 国产精品88a∨| 日韩欧美在线中字| 91插插插影院| 亚洲成人免费影院| 天堂中文在线资| 国产精品女主播视频| 99久久夜色精品国产亚洲1000部| 91欧美一区二区三区| 亚洲风情在线资源站| 日本一区二区三区在线观看视频| 国产极品精品在线观看| 999久久久免费精品国产| 国产裸体视频网站| 午夜精品成人在线| 丁香婷婷在线| 91在线播放视频| 亚洲欧美日本视频在线观看| 亚洲色图第四色| 欧美一级高清片| 在线黄色的网站 | 精品白丝av| 日本xxx在线播放| 欧美日韩黄色影视| 好看的中文字幕在线播放| 欧美午夜精品久久久久久蜜| 久久精品国产一区二区三| 国产一级做a爱免费视频| 亚洲欧洲激情在线| 欧美欧美在线| 欧美亚洲日本在线观看| 亚洲精品国产品国语在线app| 香蕉视频免费看| 91亚洲午夜在线| 久久精品导航| 免费在线观看黄色av| 国产一区二区欧美日韩| 99亚洲乱人伦aⅴ精品| 亚洲性生活网站| 亚洲成a人v欧美综合天堂 | 欧亚精品一区| 91性高潮久久久久久久| 日韩欧美亚洲国产一区| 日本理论片午伦夜理片在线观看|