現(xiàn)在的網(wǎng)站設(shè)計(jì)越來越注重用戶體驗(yàn),而在日歷模塊中,日歷的展現(xiàn)也越來越多樣化。其中,卷頁效果是一種比較受歡迎的展現(xiàn)方式。下面我們來介紹如何使用CSS實(shí)現(xiàn)日歷卷頁效果。
首先,我們需要用到三個(gè)div,分別是容器div(class為calendar-container)、卷頁div(class為calendar-sheet)和日歷div(class為calendar)。
<div class="calendar-container"> <div class="calendar-sheet"> <div class="calendar"> <!--這里是日歷的內(nèi)容--> </div> </div> </div>
然后,在CSS中設(shè)置寬高、背景色、邊框樣式等基本樣式。
.calendar-container { width: 300px; height: 300px; background-color: #FFF; border: 1px solid #CCC; position: relative; overflow: hidden; } .calendar-sheet { width: 100%; height: 100%; position: absolute; left: 0; top: 0; background-color: #FFF; box-shadow: 0 0 5px rgba(0,0,0,.3); transform-origin: 100% 0; } .calendar { width: 100%; height: 100%; padding: 10px; }
接著,我們需要使用CSS3的transform屬性來實(shí)現(xiàn)卷頁效果。將.calendar-sheet元素旋轉(zhuǎn)90度,同時(shí)設(shè)置transform-origin為右上角,這樣日歷就會(huì)垂直展示。
.calendar-sheet { transform: rotate(90deg); transform-origin: top right; }
然后我們需要使得卷頁自動(dòng)翻動(dòng),在這里我們使用JS來實(shí)現(xiàn)。定義一個(gè)變量angle,控制卷頁旋轉(zhuǎn)的角度。通過setInterval函數(shù)不斷地改變angle變量的值,使得卷頁不斷翻動(dòng)。
var angle = 0; var update = function() { angle += 1; angle = angle % 360; document.querySelector('.calendar-sheet').style.transform = 'rotate(' + angle + 'deg)'; } setInterval(update,20);
最后,我們再加上一些動(dòng)畫效果,讓日歷翻頁更加平滑。這里使用CSS3的transition屬性。將.calendar-sheet元素的transition屬性設(shè)置為transform 0.3s ease-in-out;這樣卷頁翻頁時(shí)就會(huì)有一個(gè)平滑的過渡效果。
.calendar-sheet { transition: transform 0.3s ease-in-out; }
這樣,我們使用CSS和JS就成功地實(shí)現(xiàn)了日歷卷頁效果。