CSS3是一種用于美化網頁的語言,其中包含了許多有趣的動畫效果。其中,讓我們感受到視覺上的沖擊的效果就是翻書效果。它是如何實現的呢?下面我們來一步步揭開它的奧秘。
首先,我們需要了解一下翻書效果的實現原理,即在鼠標移動的過程中,通過改變元素的transform屬性,實現元素的旋轉以及3D效果。其次,我們需要將兩頁書分別設置為背面和正面。當我們翻頁時,只需要將我們的動態遮罩層逐漸移除,就可以看到正面與背面的轉換效果。
/*首先我們需要定義元素的左右兩邊陰影*/ .book { box-shadow: inset 0px 0px 50px rgba(0,0,0,0.5); position: relative; width: 300px; height: 200px; margin: 100px auto; } .book:before, .book:after { content: ''; position: absolute; top: 0; bottom: 0; width: 50%; background: rgba(0,0,0,0.1); z-index: 2; } .book:before { left: 0; transform-origin: left center; transform: perspective(1500px) rotateY(-25deg); box-shadow: 0px 0px 50px rgba(0,0,0,0.5); } .book:after { right: 0; transform-origin: right center; transform: perspective(1500px) rotateY(25deg); box-shadow: 0px 0px 50px rgba(0,0,0,0.5); }
現在,我們已經成功地將兩頁書的背面和正面分別定義了出來。接著,我們需要給動態遮罩層做準備。首先,需要定義遮罩層的大小和背景顏色。在遮罩層中,我們很關鍵的一步就是將元素固定在一個平面上,這樣才能實現后期的翻轉效果。
.book .mask { position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.9); transition: transform .5s ease-out; transform-style: preserve-3d; }
現在我們已經將遮罩層定義好了,那么我們需要給遮罩層添加一些鼠標事件以及相關CSS,如下:
.book:hover .mask { transform: rotateY(180deg); } .book .mask:before, .book .mask:after { content: ''; position: absolute; top: 0px; left: 0px; width: 50%; height: 100%; background-color: rgba(255, 255, 255, 0.9); transform: rotateY(180deg); z-index: -1; } .book .mask:before { transform-origin: right center; transform: rotateY(-180deg); } .book .mask:after { transform-origin: left center; transform: rotateY(180deg); }
現在,我們已經將翻書效果實現了。通過上面的代碼,我們可以看到效果非常棒。我們只需要在需要應用翻書效果的元素上,設置相關的CSS,就可以實現視覺上非常具有沖擊力的翻書效果。
上一篇css3置頂標簽
下一篇css3網頁圖片文字動畫