大廠h5開源視頻系列css
是一個專題,前兩篇咱們一塊兒學習研究了京東,網易前端工程師對於h5的惟美細膩的態度,在這個專題中咱們會解析一些酷酷的線上h5,在每個細節,每個細膩的過渡背後都能看到前端工程師付出的心血,本篇帶來的是 👉👉 騰訊2012世界盃賽程魔方html
該h5分了3部分視頻前端
歡迎關注以往的文章:git
線上連接請複製地址查看(直接點擊會被重定向的啦) 👉👉 [騰訊2012世界盃賽程魔方](sports.qq.com/isocce/worl…github
當我第一次看到這個h5的時候,心裏是...挖槽!(無奈老夫沒文化,一句臥槽走天下!css的世界太美妙,要就整個花裏胡哨)。其實css的世界就像衣服,沒有很差看的衣服,只是咱們會不會搭配的問題,咱們先來看一眼騰訊的前端工程師的精心搭配寫出來的魔方效果吧web
那麼這兩個圓轉動的圈圈實現的方式我就直接貼上代碼吧,相信小夥伴們一看就明白的bash
<!--loading -->
<div class="load" style="display:block;">
<div class="loadImg">
<div class="loadTxt">loading</div>
<div class="circle"></div>
<div class="circle1"></div>
</div>
</div>
複製代碼
.circle{
background-color: rgba(0,0,0,0);
border: 5px solid rgba(251,241,107,0.9);
opacity: .9;
border-right-color: rgba(0,0,0,0);
border-left-color: rgba(0,0,0,0);
box-shadow: 0 0 30px #fbf49a;
width: 50px;
height: 50px;
margin: 0 auto;
border-radius: 50%;
animation: spinPulse 1s infinite linear;
}
.circle1{
background-color: transparent;
border: 5px solid rgba(251,241,107,1);
opacity: .9;
border-right-color: rgba(0,0,0,0);
border-left-color: rgba(0,0,0,0);
box-shadow: 0 0 15px #fbf49a;
width: 30px;
height: 30px;
margin: 0 auto;
position: relative;
top: -50px;
border-radius: 50%;
animation: spinoffPulse 1s infinite linear;
}
/* 外層圓 */
@keyframes spinPulse {
0%{
-webkit-transform: rotate(160deg);
transform: rotate(160deg);
opacity: 0;
box-shadow: 0 0 1px #2187e7;
}
50%{
-webkit-transform: rotate(145deg);
transform: rotate(145deg);
opacity: 1;
}
100%{
-webkit-transform: rotate(-320deg);
transform: rotate(-320deg);
opacity: 0;
}
}
/* 內層圓 */
@keyframes spinoffPulse {
0%{
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100%{
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
複製代碼
OK吧,分別寫兩個動畫,一些加前綴的兼容性代碼沒有貼出來,免得看的不清爽。接着纔是這個h5最秀的地方前端工程師
其實已經沒有第三屏了,首頁出來的那一刻全部屏都出來了,只是......只是出現的位置在後方了啦,來來來,我把底子翻給你看app
看到這一首頁出來的這一刻,其餘頁面此時在哪裏,在幹嗎,看!look!watch!see!post
這是我將首頁display:none掉的效果,哇!又想說一句臥槽!原來是這樣的,其餘頁面所有都出如今同一屏裏面只是悄悄躲在了後面,並被首頁遮擋了而已,看這些頁面的擺放位置是很講究的
transform: translateZ(333.5px)
複製代碼
因而只有一個頁面的位置都處在上圖(ABCDEFGH)這個頁面的位置,也就是往咱們的窗口朝裏面移了333.5像素
transform: rotateX(180deg)
複製代碼
transform: rotateX(-270deg)
複製代碼
transform: rotateX(-90deg)
複製代碼
做者採用了一個第三方的滑屏插件alloyTeam開源的alloyFinger來實現的監聽手指的滑動
簡單介紹一下alloyFinger的用法,點上方的alloyFinger,到github上就能下載alloy的庫,下載到項目中,在咱們的項目中引入這個包
<script src="./lib/alloy_finger/alloy_finger.js"></script>
複製代碼
var screen = document.querySelector('.screen'); // 獲取頁面上當前正前方的那個面(每一個面翻轉到正前方的時候做者都手動給其加了一個screen的類名)
var gesture = new AlloyFinger(screen,{ // 執行滑屏事件
swipe:function(evt){
var direction = evt.direction;
var current = getCurrentPage();
if (direction == "Up") { // 監測手指上滑
switch (current) {
case 0:$('.btn1').click();break; // 這裏三個是首頁的按鈕點擊事件
case 1:$('.btn2').click();break; // 點擊這三個按鈕也執行頁面的翻轉
case 2:$('.btn3').click();break; // 嘿嘿
case 3:$('.screen').attr("class","screen ease");break;
default:
}
}else if (direction == "Down"){ // 監測手指下滑
switch (current) {
case 0:return;
case 1:$('.screen').attr("class","screen ease");break;
case 2:$('.btn1').click();break;
case 3:$('.btn2').click();break;
default:
}
}
}
})
複製代碼
按道理來講這個h5沒有什麼很難的點,可是滿滿的都是細節和心血,你們寫h5的時候可能較少會想到一些花裏胡哨的效果,正如咱們所說的,css沒有太難理解的代碼,只是咱們不知道怎麼去玩轉它,以後咱們就一塊兒手拉手慢慢的來看大廠的開發是怎麼666起來的吧!
歡迎關注本系列文章,有問題能夠加入👇👇👇羣聊和我一塊兒討論。
該h5項目的完整源碼會分享到羣,聲明:該h5代碼由騰訊前端出品,我我的手拓學習版本,非商業用途,單純爲了學習交流