層疊上下文z-index只是解決兩個元素覆蓋,誰離使用者更近的問題。而CSS混合模式,則是處理兩個元素覆蓋部分如何混合的問題。如果了解photoshop的話,對這種現象應該不陌生。 CSS3有兩個與混合模式相關的屬性:mix-blend-mode
和background-blend-mode
,本文將詳細介紹CSS混合模式
元素混合mix-blend-mode套用於兩個元素之間的混合
mix-blend-mode
初始值: normal
應用於: 所有元素
繼承性: 無
(亮度) | initial(初始) | inherit(繼承) | unset(復原)
相容性: IE瀏覽器、android4.4-不支持,safari和IOS需要添加-webkit-前綴
背景混合
背景混合background-blend-mode應用於一個元素的多背景圖或背景圖與背景顏色之間的混合
#background -blend-mode初始值: normal
套用於: 所有元素
繼承性: 無
套用) | multiply(正片疊底) | screen(濾色) | overlay(疊加) | darken(變暗) | lighten(變亮) | color-dodge(顏色減淡) | color-burn(顏色加深) | hard- light(強光) | soft-light(柔光) | difference(差) | exclusion(排除) | hue(色相) | saturation(飽和度) | color(顏色) | luminosity
(亮度) | initial (初始) | inherit(繼承) | unset(復原)
相容性: IE瀏覽器、android4.4-不支持,safari和IOS需要添加-webkit-前綴
#
隔離
隔離isolation的作用是建立一個堆疊上下文stacking context,主要用於與mix-blend-mode屬性一起使用時,將混合模式只應用於某一個元素或某一組元素
isolation
初始值: auto
繼承性: 無
<style> body{background-color: gray;} .test1,.test2{display: inline-block;width: 100px;height: 100px;border:1px solid black;} .test2{isolation: isolate;} .in{width: 50px;height: 50px;background-color: red;mix-blend-mode: screen;} </style> </head> <body> <p class="test1"> <p class="in"></p> </p> <p class="test2"> <p class="in"></p> </p>如果不使用
isolation: isolate
建立堆疊上下文,由於
#和
.test2