Transform 引起的 z-index "失效"

前言

重新學(xué)習(xí)CSS后的第三天,學(xué)習(xí)制作陰影的過程中,發(fā)現(xiàn)的問題:
設(shè)置了box-shadow后展現(xiàn)的陰影:

添加transform:rotate(10deg);后的效果:

查看CodePen例子:陰影效果

一臉懵逼!再修改z-index完全沒有效果。

百度之后,找到了問題的答案,也自己摸索著找到了這個問題的解決辦法。下面與大家分享。

一、原因

  • 給元素設(shè)置transform屬性會創(chuàng)建一個新的stacking context,譯作層疊上下文的一個區(qū)域。
  • 原本的層疊規(guī)則就會發(fā)生變化,導(dǎo)致了設(shè)置了transform的元素變成了一個層疊上下文容器,也就相當(dāng)于最底層。
  • 與其他兄弟元素或者外層元素依然保持原來的層疊規(guī)則,影響的只是其子元素。

二、什么是層疊上下文

相信大家都知道,css是層疊樣式表,層疊上下文就是html文件渲染的時候,各個元素的堆疊規(guī)則,是css中非常重要的潛在規(guī)則。

詳細(xì)規(guī)則請點(diǎn)擊:層疊上下文和層疊順序

三、什么情況會創(chuàng)建新的區(qū)域

MDN上有相關(guān)的介紹:

  • 根元素(HTML)
  • 設(shè)置了position為absolute或relative,且z-index不是auto的元素
  • 設(shè)置了z-index,且不為auto的流動元素
  • 設(shè)置了opacity,且不為1的元素
  • 設(shè)置了transform,且不為none的元素
  • 設(shè)置了mix-blend-mode值,且不為normal的元素
  • 設(shè)置了isolation 為 isolate的元素on mobile WebKit and Chrome 22+,
  • 設(shè)置position為fixed的元素

四、解決辦法

不使用transform是不可能的了,那么該如何解決呢?我想到的辦法是再覆蓋,覆蓋掉不讓看見的東西。

1. 首先在元素里再創(chuàng)建一個標(biāo)簽
因?yàn)樵氐腷efore、after偽類都被占用了,只能再創(chuàng)建標(biāo)簽覆蓋。

2. 應(yīng)用新標(biāo)簽的before偽類

.shadow5 p::before {
    content: "";
    position: absolute;
    z-index: -1;
    background: #fff;
    box-shadow: 0 0 40px rgba(0, 0, 0, 0.1) inset;
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;
}

設(shè)置定位,以原來的元素為基準(zhǔn),top、bottom、right、left為0,以充滿整個容器
注意:z-index的設(shè)置與原來元素的before、after中的z-index有關(guān),必須比它的值大,不然after偽類又會顯示在上面。

參考

張鑫旭博文:深入理解css中的層疊上下文和層疊順序
Segmentfault回答:Transform 引起的 z-index "失效"
豆瓣文章:小心 CSS3 Transform 引起的 z-index "失效"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,347評論 2 377

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,779評論 1 92
  • 1.z-index簡介 (1) 概念 z-index屬性指定了元素與元素之間的z軸上的順序,而z軸決定元素之間發(fā)生...
    Bennt閱讀 24,009評論 2 10
  • 1.z-index基礎(chǔ) z-index屬性指定了元素及其子元素的[z順序],而[z順序]可以決定當(dāng)元素發(fā)生覆蓋的時...
    徐國軍_plus閱讀 6,400評論 1 6
  • 第一節(jié):z-index基礎(chǔ) 較大的z-index會覆蓋較小的那個z-index元素 z-index:auto 默認(rèn)...
    胖魚尾巴閱讀 1,034評論 0 0
  • z-index 與 css 定位屬性 z-index 只對定位元素有作用。 如果定位元素z-index沒有發(fā)生嵌套...
    soojade閱讀 886評論 0 2