如何將'div”容器與公共 CSS 樣式隔離並防止其子級繼承全域樣式?
Oct 26, 2024 am 04:19 AM將Div 與公用CSS 樣式隔離
問題
考慮以下HTML 程式碼:
<code class="html"><div id="mydiv"> <img src="an image source" /> <h1>Hi it's test</h1> </div></code>
登入後複製
考慮以下HTML 程式碼:
<code class="css">img { width: 100px; height: 100px; } h1 { font-size: 26px; color: red; }</code>
登入後複製
應用以下內容樣式表:
問題出現了:我們如何防止為所有標籤會影響 #mydiv 容器中的元素嗎?
解決方案要將 #mydiv 中的元素與全域 CSS 樣式隔離,我們可以利用 all 簡寫屬性和中引入的 unset 關鍵字CSS 級聯和繼承等級 3。 透過在 #mydiv 上設定 all:initial,我們封鎖所有屬性的繼承並將其重設為預設值。這可以防止全域樣式級聯到容器中。 為了允許在 #mydiv 內繼承,我們可以在其後代上設定 all: unset。透過這樣做,我們可以使容器內定義的規則生效,而不受外部樣式的干擾。<code class="css">#mydiv { all: initial; } #mydiv * { all: unset; }</code>
登入後複製
這是修改後的CSS程式碼:
<code class="css">#mydiv::before, #mydiv::after, #mydiv *::before, #mydiv *::after { all: unset; }</code>
登入後複製
需要注意的是,這種技術適用於所有可能的 CSS 屬性,包括供應商前綴的屬性。為了確保廣泛的瀏覽器支持,建議也以偽元素為目標:
替代方法<code class="css">#mydiv { align-content: initial; align-items: initial; align-self: initial; ... color: inherit; ... } #mydiv::before, #mydiv::after, #mydiv *, #mydiv *::before, #mydiv *::after { align-content: initial; align-items: initial; align-self: initial; ... color: inherit; ... }</code>
登入後複製
或者,為了更廣泛的瀏覽器兼容性,您可以手動將每個CSS 屬性設定為其初始值#mydiv 上的值並繼承其後代,如下列程式碼所示:
瀏覽器支援- 以下瀏覽器支援all 簡寫屬性:
- Chrome 37
- Firefox 27
- Safari 9.1
- Edge 79
以上是如何將'div”容器與公共 CSS 樣式隔離並防止其子級繼承全域樣式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)