1. 程式人生 > >關於z-index與transform同時使用時的一些感想

關於z-index與transform同時使用時的一些感想

這篇文章是在我做一個效果是產生的。

<div class="card">
            <div class="card_front" style="transition:2s ease">
                <img class="frontImg" src="image/timg%20(1).gif" alt="">
                <p class="content">
                    <span class="title">陪我逛街卡</span>
                    <span>使用該卡,無條件陪逛街3小時</span>
                </p>
            </div>
            <div class="card_rear" style="transition:2s ease">
                <div class="card_bg"></div>
            </div>
        </div>

我要做的效果是js點選翻牌效果,將正面div設定為旋轉180度,反面為負180度,同時設定正面z-index為1,反面為2;但是在我給背面新增hover效果時,發現觸發滑鼠事件時會出現bug,在剛開始我以為是我對卡牌正面一些子元素設定引起的,但是在我認真檢查後沒有發現,後來發現當我滑鼠移入時,左邊獲取的是卡牌正面,右邊獲取的是卡牌背面;

在我搜索了之後發現是因為z-index與transform同時作用是會引起z-index失效,但是在我檢視張鑫旭大神的博文時卻發現好像只有safari瀏覽器有這個問題。我不知道為什麼我也會出現這個問題。同時我測試使用推薦的方法去進行處理,比如將父級設定為overflow:hidden;這個時候雖然解決了這個問題,但是在點選翻牌時卻失去了效果。也就是說overflow:hidden;使得transform-style:preserve-3d;這個效果失效了;因為在我測試中發現就是因為這個屬性使得堆疊次序出現問題;這讓我很絕望,然後我發現了一種解決方法;

backface-visibility:hidden;方法


這個是w3cschool的介紹,w3cschool都說很有用;這種方法是一種規避的方法,不管其在z軸方向的堆疊次序,直接將卡牌正面的可見性給隱藏掉。相當於間接解決了這個問題