文將向您展示如何創建簡單而新式的頁面切換的過渡效果。也許你已經發現了一些在或Keep Portland Weird等網站上看到的很酷的效果,其中兩層或多層疊加層在頁面上進行動畫處理以顯示一些新內容。讓我們看看他們如何做到這一點。我們只關注動畫部分,而不是內容的加載。對于效果,我們將使用CSS動畫。
對于我們的簡單演示,我們將創建一個完整的寬度和高度布局,其中一些箭頭將觸發疊加動畫。想法是顯示一個頁面,并在疊加動畫的中間,切換到另一個頁面。雖然使用的是靜態內容,但你可以在動畫過程中插入動態解決方案,以便即時獲取一些數據。
我們的HTML標簽如下:
疊加層的結構將使用JavaScript插入,它作為一個固定元素放在所有其他元素之上。根據頁面指示方向,為該元素提供一些CSS樣式類,以正確地應用樣式。疊加層將包含預先定義好的多個層。每個層都設置不同的背景顏色以及特定的動畫。
頁面代碼類似如:
每層還設置不同的背景顏色。為了展示獨特的效果,將為每個層設置不同的動畫。為此,我們最初將父層設置為屏幕外(off-screen)位置,然后將該層動畫化。主要元素的初始設置在腳本中完成(見下文)。然后在樣式表中定義層的動畫行為,這取決于效果類,以及要顯示的頁面的其他樣式。
首先,讓我們看一下我們的主體,容器和頁面的一些常規樣式(省略供應商前綴):
我們希望我們的頁面是全寬和高度,并隱藏任何溢出。默認情況下,使用JS(我們使用Modernizr),頁面被隱藏,當前類將相應的頁面設置為可見。我們希望確保我們的布局在沒有JavaScript的情況下正常運行,因此我們添加了"條件"樣式。
讓我們來展示的風格是怎樣的。我們開始層置于所有之上,而且具有固定的位置:
根據當前使用的方向,需要設置一些初始定位樣式。正如稍后將看到的JavaScript角本,我們將設置一些其他的變換,以確保我們的初始層的頂部始終是面向屏幕的那個。這將簡化效果,因為內層動畫將始終相同(向上移動),因此如果父項旋轉并正確定位,我們無需為每個方向定義新動畫:
圖層將具有默認背景顏色,然后以動態方式為每個效果單獨定位:
接下來,讓我們看看一個示例效果。三層效果通過特殊的為每個圖層添加動畫。anim-Effect類被添加到主體中,以便我們知道我們目前使用的是哪種效果。該revealer–animate是考慮到初始順序和觸發動畫。
正如我們在這里看到的,我們將向所有圖層添加相同的動畫屬性,但動畫名稱除外。通過三種不同的動畫,我們定義了關鍵幀中每個動畫的延遲。就像我們一樣,我們確保所有動畫在同一時刻結束,但允許不同的外觀時間:
我們在這里做的是讓第一層先移動,然后在中間"暫停"直到75%,同時在可見屏幕的頂部。然后我們將其移向相反的方向以顯示新內容。對于其他兩個層也是如此,只是在這里我們在不同的關鍵幀處啟動它們,減少"暫停"。最后一層根本沒有暫停,只是從25%開始到另一邊。
我們做了一個小插件,根據一些選項創建了revealer 。默認選項如下:
添加啟動器及其圖層和相應效果類的功能如下所示:
最關鍵的函數設置我們的揭密元素的初始定位,并添加用于觸發動畫和所選效果的控件類。
根據我們選擇的方向,我們需要確保揭示元素獲得正確的變換。請記住,我們只是簡單地旋轉和定位探測器,使頂部始終面向屏幕,以便層始終向上移動。對于角落情況,我們需要確保展示器的寬度和高度正確設置到頁面的對角線。對于左右兩種情況,我們需要確保展示器的高度是屏幕的寬度,因為我們將它旋轉90度。
以上講述了通過CSS和JavaScript實現多層頁面的切換動畫效果,希望這個小的技巧能對你有所幫助。如果感興趣,你還可以訪問以下地址,查看動畫的效果的Demo。
http://www.ikinsoft.com/demo/ani_effects/index.html
著html5的來襲,我們不難發現,生活工作中瀏覽的網站也變的高大上起來,在這背后我們就要考慮這些高大上的效果如何去實現,如何更接地氣,那么我們今天來說一個簡單的小例子:利用CSS3動畫知識實現三角形疊加效果,來來來看圖說話。
CSS3三角形疊加效果
看完動態效果大家更想知道其代碼設計咯,我們一起來看核心代碼:
-moz-transition: all 0.5s ease-out;
-ms-transition: all 0.5s ease-out;
-o-transition: all 0.5s ease-out;
-webkit-transition: all 0.5s ease-out;
更多詳細實現過程,可以點擊如下講解:
<script src="https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>
更多案例分享可加群142991222關注
邊距重疊
外邊距重疊指的是,當兩個垂直外邊距相遇時,它們將形成一個外邊距。合并后的外邊距的高度等于兩個發生合并的外邊距的高度中的高度如果都是正邊界,邊界寬度是相鄰邊界寬度中最大的值。如果出現負邊界,則在最大的正邊界中減去絕對值最大的負邊界。如果沒有正邊界,則從零中減去絕對值最大的負邊界。只有外邊距才可以是負值,內邊距不允許為負值在 CSS 中,相鄰的兩個盒子的外邊距可以結合成一個單獨的外邊距,這種合并外邊距的方式被稱為折疊,并且因而所結合成的外邊距稱為折疊外邊距。
重疊情況
1、兩個相鄰的外邊距都是正數時,折疊的結果是它們兩者之間較大的值
2、兩個相鄰的外邊距都是負數時,折疊結果是兩者絕對值得較大值
3、兩個外邊距一正一負時,折疊結果是兩者的相加的和
4、外邊距不重疊的情況
水平 margin 永遠不會重合
設置了 overflow 屬性(visible 除外)的元素和它的子元素之間的 margin 不會重疊
設置了絕對定位( --tt-darkmode-color: #9E9ECD;">設置了 display:inline-block 的元素,垂直 margin 不會重疊,和子元素之間也不會重疊
根元素(如 html)與 body 的 margin 不會重疊
5、防止外邊距重疊的方法
元素絕對定位 postion:absolute;一般用在內層元素
內層元素 加 float:left;或 display:inline-block;
外層元素用 padding 增加邊距
外層元素設置 overflow:hidden;
內層元素透明邊框 border:1px solid transparent;
*請認真填寫需求信息,我們會在24小時內與您取得聯系。