国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
Step2.序列幀動畫
Step3.添加動畫控制
首頁 web前端 html教程 揭秘騰訊burberry活動頁面中的特效_html/css_WEB-ITnose

揭秘騰訊burberry活動頁面中的特效_html/css_WEB-ITnose

Jun 24, 2016 pm 12:02 PM
揭秘 活動 特效 騰訊

4月24日,Burberry亞太地區(qū)規(guī)模最大的旗艦店在上海開幕。Burberry突破性地運用了諸多創(chuàng)新的數(shù)字營銷模式,借助與騰訊的合作,為更多未能到場的用戶創(chuàng)造了一個“平行的體驗”,也正式開啟了Burberry的創(chuàng)新數(shù)字營銷之旅。

騰訊的營銷頁面:?

其中多次用到了類似于云霧褪去的效果,如下圖。

我對這種神奇的特效產(chǎn)生的極大的興趣,于是通過chrome的審查元素里面Resources找到下面這張圖片(由于圖片是白色的png,為了讓大家看清楚我將背景調(diào)成了黑色)。

于是效果的實現(xiàn)方式就顯而易見了,是利用css3的-webkit-mask來實現(xiàn)的。

####Step1.為背景加上蒙板 ?

    <div class="stage">        <div class="sprite1"></div>    </div>
.stage{    width: 320px;    height: 480px;    position: absolute;    left: 50%;    top: 50%;    margin-top:-240px;    margin-left:-160px;    background: url('./img/bg.jpg') no-repeat;    background-size: auto 100%;}.stage .sprite1{    width: 100%;    height: 100%;    background: url('./img/bg2.jpg') no-repeat;    background-size: auto 100%;    -webkit-mask:url('./img/Touch1.png') no-repeat;    -webkit-mask-size: 100% 100%;}

這里為了在桌面瀏覽器中觀看方便,將畫面大小調(diào)整成了320*480并居中。在 sprite1中添加 background的同時也增加了蒙板。

-webkit-mask:url('./img/Touch1.png') no-repeat;-webkit-mask-size: 100% 100%;

我們這里將蒙板的大小設(shè)置為100%來觀察蒙板的效果。圖中畫圈圈的地方就是sprite1透過蒙板展示出來的部分。

我們看到這個蒙板Touch1.png應(yīng)該是一個序列幀組成的圖片,我們只需要將其一幀幀的顯示出來就可以實現(xiàn)動畫了。
點擊查看歷史代碼

Step2.序列幀動畫

.stage .sprite1{    ......    -webkit-mask-size: 400% 300%;    -webkit-mask-position: 0% 0%;}

Touch1.png 是序列幀的整合圖片,其中一排有4幀一共有3排,所以我們將 -webkit-mask-size 設(shè)為 400% 300% 。將 -webkit-mask-postion 設(shè)為 0% 0% 表示從第一幀開始。做動畫時只需要依次修改 -webkit-mask-position 的x與y值,每次將x增加25%(100/每排的幀數(shù)4)直到75%,y增加33.33%(100/每牌的幀數(shù)3)直到66.66%。我們需要將每一幀的position狀態(tài)在不同的時間賦給sprite1,這只需要用 setTimeout 就可以了。

我們新建一個spriteClip類,并傳入(dom,w,h,time)四個參數(shù),其中dom用來定位sprite1這個元素,w為一排有幾幀,h為一共有幾行,time為每一幀之間的間隔。

function spriteClip(dom,w,h,time){    if(dom){        this.dom = dom;        this.w = w ||0;        this.h = h ||0;        this.time = time || 0;    }else{        return false;    }}

新建run方法。遍歷w與h算出時間與位置,用setTimeout設(shè)置好延時執(zhí)行

spriteClip.prototype.run = function(){    for(var w=0;w<this.w for h="0;h<this.h;h++){" var time="(h*self.time*self.w+w*self.time);" settimeout self.dom.style.webkitmaskposition="(100/(self.w-1))*w+'%">  <br>  <br>  <p></p>  <p> 新建并運行spriteClip。</p>  <p> </p>  <pre name="code" class="sycode">var sprite1 = document.querySelector('.sprite1');var sp1 = new spriteClip(sprite1,4,3,50);sp1.run();


運行代碼:

點擊查看歷史代碼

Step3.添加動畫控制

有了sprite1后,再添加3個sprite,將所有的動畫按照順序播放來形成完整的轉(zhuǎn)場。為了實現(xiàn)按照順序的播放,我們需要為動畫添加播放控制。即在播放動畫完成后給dom觸發(fā)一個finish事件,dom接到完成事件后執(zhí)行下一個動畫。同時添加show和hide用來控制動畫的顯示/隱藏。

function spriteClip(dom,w,h,time){    if(dom){        ......        //記錄dom初始的display狀態(tài)        this.display = this.dom.style.display;        //記錄動畫是否播放過        this.played = false;    }else{        return false;    }}spriteClip.prototype.run = function(){    //如果動畫已經(jīng)播放過則不做任何動畫    if(this.played)        return false;    //標(biāo)記為已播放完成    this.played = true;    //讓dom顯示    this.show();    for(var w=0;w<this.w for h="0;h<this.h;h++){" var time="(h*self.time*self.w+w*self.time);" settimeout ...... if>= self.w-1 && h>=self.h-1){                        //動畫結(jié)束                        var event = document.createEvent('HTMLEvents');                        event.initEvent('finish', true, true);                        event.eventType = 'message';                        event.content =  'finish';                        //觸發(fā)finish事件                        self.dom.dispatchEvent(event);                    }                },time);            })(w,h,this);        }    }}//隱藏domspriteClip.prototype.hide = function(){    this.dom.style.display = 'none';}//顯示domspriteClip.prototype.show = function(){    this.dom.style.display = this.display;}//接收finish時間并用callback函數(shù)處理spriteClip.prototype.finish = function(callback){    this.dom.addEventListener('finish',callback);}var sprite1 = document.querySelector('.sprite1');var sp1 = new spriteClip(sprite1,4,3,50);//在做動畫之前讓sprite隱藏sp1.hide();document.addEventListener('touchend',function(){    //手指抬起后運行動畫    sp1.run();});document.addEventListener('click',function(){    //點擊后運行動畫    sp1.run();});sp1.finish(function(){    //動畫完成    console.log('finish');});</this.w>


下面添加剩下的3個sprite。

.......stage .sprite2{    width: 100%;    height: 100%;    position: absolute;    left: 0px;    top: 0px;    background: url('./img/bg2.jpg') no-repeat;    background-size: auto 100%;    -webkit-mask:url('./img/Touch2.png') no-repeat;    -webkit-mask-size: 400% 300%;    -webkit-mask-position: 0% 0%;}.stage .sprite3{    width: 100%;    height: 100%;    position: absolute;    left: 0px;    top: 0px;    background: url('./img/bg2.jpg') no-repeat;    background-size: auto 100%;    -webkit-mask:url('./img/Touch3.png') no-repeat;    -webkit-mask-size: 400% 300%;    -webkit-mask-position: 0% 0%;}.stage .sprite4{    width: 100%;    height: 100%;    position: absolute;    left: 0px;    top: 0px;    background: url('./img/bg2.jpg') no-repeat;    background-size: auto 100%;    -webkit-mask:url('./img/Touch4.png') no-repeat;    /* Touch4是4*5 */    -webkit-mask-size: 400% 500%;    -webkit-mask-position: 0% 0%;}......<div class="stage">    <div class="sprite1"></div>    <div class="sprite2"></div>    <div class="sprite3"></div>    <div class="sprite4"></div>
</div>.....//新建4個spritevar sprite1 = document.querySelector('.sprite1');var sprite2 = document.querySelector('.sprite2');var sprite3 = document.querySelector('.sprite3');var sprite4 = document.querySelector('.sprite4');var sp1 = new spriteClip(sprite1,4,3,80);var sp2 = new spriteClip(sprite2,4,3,80);var sp3 = new spriteClip(sprite3,4,3,80);var sp4 = new spriteClip(sprite4,4,5,80);sp1.hide();sp2.hide();sp3.hide();sp4.hide();document.addEventListener('touchend',function(){    sp1.run();});document.addEventListener('click',function(){    sp1.run();});sp1.finish(function(){    //sprite1結(jié)束后運行sprite2    sp2.run();});sp2.finish(function(){    //sprite2結(jié)束后運行sprite3    sp3.run();});sp3.finish(function(){    //sprite3結(jié)束后運行sprite4    sp4.run();})......


運行代碼:


查看所有代碼請去Github

如有問題或者建議請微博@UED天機(jī)。我會及時回復(fù),也可以提供其他特效一起討論其實現(xiàn)方法。


本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
大模型App騰訊元寶上線!混元再升級,打造可隨身攜帶的全能AI助理 大模型App騰訊元寶上線!混元再升級,打造可隨身攜帶的全能AI助理 Jun 09, 2024 pm 10:38 PM

5月30日,騰訊宣布旗下混元大模型全面升級,基于混元大模型的App“騰訊元寶”正式上線,蘋果及安卓應(yīng)用商店均可下載。相比此前測試階段的混元小程序版本,面向工作效率場景,騰訊元寶提供了AI搜索、AI總結(jié)、AI寫作等核心能力;面向日常生活場景,元寶的玩法也更加豐富,提供了多個特色AI應(yīng)用,并新增了創(chuàng)建個人智能體等玩法?!膀v訊做大模型不爭一時之先?!彬v訊云副總裁、騰訊混元大模型負(fù)責(zé)人劉煜宏表示:“過去的一年,我們持續(xù)推進(jìn)騰訊混元大模型的能力爬坡,在豐富、海量的業(yè)務(wù)場景中打磨技術(shù),同時洞察用戶的真實需求

王者榮耀共赴花期活動攻略大全 王者榮耀共赴花期活動攻略大全 Mar 24, 2024 pm 12:36 PM

王者榮耀開啟了共赴花期活動,玩家參與活動可以免費領(lǐng)取頭像框和超多好禮,活動有時間限制,共為玩家提供了四個關(guān)卡,小編今天給大家?guī)砹斯哺盎ㄆ诨顒庸ヂ源笕M軒椭酱蠹彝瓿申P(guān)卡挑戰(zhàn)。王者榮耀共赴花期活動攻略大全王者榮耀共赴花期活動介紹活動玩法:1、共赴花期是一個翻牌的活動,玩家需要通過翻牌來通關(guān)。2、玩家在活動期間完成任務(wù)獲得花露就能夠翻牌。3、活動面板中每四張通關(guān)牌連成一條線(包括橫線、豎線和對角線)即可通過一個小關(guān)卡。4、每通關(guān)一個關(guān)卡就能獲得對應(yīng)的獎勵,同時幫助好友翻牌也能獲得額外獎勵?;?/p>

騰訊 2025 校招啟動:畢業(yè)時間從一年拓寬至兩年 騰訊 2025 校招啟動:畢業(yè)時間從一年拓寬至兩年 Aug 07, 2024 pm 08:17 PM

本站8月7日消息,昨日騰訊2025校園招聘正式啟動,繼2024年實習(xí)生招聘、“青云計劃”AI大模型招聘專項后再次發(fā)出“擴(kuò)招”信號:不僅招聘規(guī)模相較前兩年有較大增長,面向人群的畢業(yè)時間范圍也進(jìn)一步擴(kuò)大。據(jù)介紹,騰訊2025年校園招聘開放技術(shù)、產(chǎn)品、市場、設(shè)計、職能5個大類70余種崗位。今年的騰訊校園招聘將有多處變化,校招面向人群的畢業(yè)時間范圍從一年拓寬至兩年。畢業(yè)時間為2024年1月至2025年12月的同學(xué)(中國大陸/內(nèi)地以畢業(yè)證為準(zhǔn),中國港澳臺及海外地區(qū)以學(xué)位證為準(zhǔn))均可通過騰訊招聘官網(wǎng)及“騰訊

真我身世揭秘:究竟是OPPO的子品牌嗎? 真我身世揭秘:究竟是OPPO的子品牌嗎? Mar 23, 2024 pm 09:24 PM

“真我”身世揭秘:究竟是OPPO的子品牌嗎?隨著智能手機(jī)市場的不斷發(fā)展,各個手機(jī)品牌紛紛推出新款產(chǎn)品來滿足消費者不斷變化的需求。其中,一款名為“真我”的手機(jī)品牌近年來備受關(guān)注,其高性價比和優(yōu)質(zhì)的用戶體驗受到了許多消費者的歡迎。然而,關(guān)于“真我”手機(jī)的身世和品牌背景,一直以來都籠罩著一層神秘的面紗。近日,有消息稱“真我”手機(jī)是OPPO的子品牌,這一消息在手機(jī)圈

Up主已經(jīng)開始鬼畜,騰訊開源「AniPortrait」讓照片唱歌說話 Up主已經(jīng)開始鬼畜,騰訊開源「AniPortrait」讓照片唱歌說話 Apr 07, 2024 am 09:01 AM

AniPortrait模型是開源的,可以自由暢玩?!感∑普竟硇髤^(qū)的新質(zhì)生產(chǎn)力工具。」近日,騰訊開源發(fā)布的一個新項目在推上獲得了如此評價。這個項目是AniPortrait,其可基于音頻和一張參考圖像生成高質(zhì)量動畫人像。話不說多,我們先看看可能會被律師函警告的demo:動漫圖像也能輕松開口說話:該項目剛上線幾天,就已經(jīng)收獲了廣泛好評:GitHubStar數(shù)已經(jīng)突破2800。下面我們來看看AniPortrait的創(chuàng)新之處。論文標(biāo)題:AniPortrait:Audio-DrivenSynthesisof

騰訊手游《胡桃日記》復(fù)活,1.7萬人報名測試!預(yù)計三月中下旬正式開測 騰訊手游《胡桃日記》復(fù)活,1.7萬人報名測試!預(yù)計三月中下旬正式開測 Mar 12, 2024 pm 03:28 PM

近日,騰訊去年(2023年2月15日12點00分)停運的《胡桃日記》宣布重啟,并開啟了二測招募。據(jù)官方透露,2000人的測試規(guī)模,報名報了1w7多人,測試預(yù)計在三月中下旬開啟。原版《胡桃日記》是由巨人網(wǎng)絡(luò)開發(fā)、騰訊游戲發(fā)行的一款美少女陪伴養(yǎng)成手游,于2021年4月16日發(fā)布,臺服于2021年10月14日發(fā)布。號稱“玩家可與風(fēng)靡全網(wǎng)的表情包少女七瀨胡桃共同生活、一起種田,輕松養(yǎng)成你的胡桃”。但上線后《胡桃日記》收入情況一直不佳,最終在2022年12月下架,2023年2月停運。萌百顯示,本作主角七瀨

《命運方舟》日服今日正式停運 騰訊代理的國服也會涼嗎? 《命運方舟》日服今日正式停運 騰訊代理的國服也會涼嗎? Mar 21, 2024 am 10:21 AM

于2020年9月在日本上線的MMORPG端游《命運方舟》,經(jīng)過近3年半的運營時間,于今日正式關(guān)閉日本服務(wù)器。但一直以來,韓游和日游幾乎就是完全不相容的兩個派系,口味風(fēng)格相差非常巨大(尤其是網(wǎng)游),這也是一直以來韓國網(wǎng)游都很難在日本站住腳跟的原因?!睹\方舟》日服停運也算是意料之中吧。那么問題來了,騰訊代理的《命運方舟》國服呢?首當(dāng)其沖的是廣大玩家最為關(guān)心的人氣問題。就目前來看,現(xiàn)在玩《命運方舟》的總共有三類人:土豪、普通玩家和搬磚黨。土豪不必多說了,任何游戲的土豪玩起來都是比較爽的,《命運方舟》

Go語言編程難度揭秘:實際上有多難? Go語言編程難度揭秘:實際上有多難? Mar 10, 2024 am 10:48 AM

Go語言編程難度揭秘:實際上有多難?近年來,隨著云計算、大數(shù)據(jù)、人工智能等技術(shù)的不斷發(fā)展,編程語言也在不斷更新?lián)Q代。其中,作為一種近年來備受關(guān)注的編程語言,Go語言因其簡潔高效的特點,在程序員圈中逐漸嶄露頭角。然而,對于許多初學(xué)者來說,Go語言的學(xué)習(xí)卻充滿了挑戰(zhàn)。那么,Go語言究竟有多難?本文將結(jié)合具體的代碼示例,揭秘Go語言編程的難易程度。Go語言的優(yōu)勢和

See all articles