我今天做了一些實驗,發現問題歸結爲transform: rotateY(180deg)
和容器旋轉transform-style: preserve-3d
。我會再次描述細節。原來的問題是低於你可以簡單地忽略它。元素旋轉和變換樣式導致的顯示不一致:preserve-3d
這一次,我將啓用transform-style: preserve-3d;
在section
從一開始可以消除一些不相關的細節。
代碼:
section {
position: relative;
width: 400px;
height: 300px;
transform-style: preserve-3d;
/*adjust deg here*/
transform: rotateY(0deg);
}
img,div {
position: absolute;
top: 0;
left: 0;
}
div {
width: 267px;
height: 300px;
transform: rotateY(180deg);
background: rgba(10, 10, 10, 0.6);
}
<section>
<img src="http://www.weekends.net.cn/assets/img/blur.jpg">
<div id="back">abc</div>
</section>
請增加部分標籤的旋轉度高達180deg
。然後div將消失。不要停止並繼續增加,div會交替出現和消失,這會導致不一致和不可預測性。更糟糕的是,div
的寬度會影響這種「不一致性」。例如,將rotateY()的參數設置爲180deg後,將div
的寬度減少1像素,然後將出現div
!這是我發現的問題。這是瀏覽器的錯誤嗎?我在Mac上使用Chrome進行了測試。
原始問題: 我正在閱讀與此問題有關的CSS第8章:權威指南第4版。
我想做什麼: 頁面上有一個部分標籤,其中包含一個div
和一個img
標籤。 img
代表正面,而div
代表背面。當卡朝前時,用戶只能看到img
。當卡片朝後(通過懸停)時,用戶通過div
的透明背景可以看到div
和img
的背面。
我的代碼是:
section {
position: relative;
width: 400px;
height: 300px;
}
img,
div {
position: absolute;
top: 0;
left: 0;
}
div {
width: 200px;
height: 300px;
transform: rotateY(180deg);
backface-visibility: hidden;
background: rgba(255, 255, 255, 0.6);
}
section:hover {
transform: rotateY(180deg);
transform-style: preserve-3d;
}
<section>
<img src="http://www.weekends.net.cn/assets/img/blur.jpg">
<div id="back">abc</div>
</section>
正如你所看到的,div
如果你將鼠標懸停在其上僅僅覆蓋img
的一部分。如果我將div
的寬度增加到267px,那麼div
將'消失'。事實上,經過一些實驗後,div
將在寬度達到section
寬度的2/3後消失。我認爲這個問題可能與旋轉有關,但我無法弄清楚。請幫幫我。謝謝!
我已經將您的代碼片段。然而,它似乎工作得很好,我也增加了寬度,但我看不到任何問題 – vals
@vals切換「節」的懸停和增加「div」的寬度超過267px,那麼你應該能夠看到問題。我在Mac上用Chrome 56.0.2924.87(64位)和safari測試了這一點。隨着盤旋,'div'消失。 – krave