ccs3 transform
,transition
,animation
了解下
這是PHP?
我一個(gè)菜逼前端 BB一句?
是不是 $this 指向的問(wèn)題?
@donglegend 你好,謝謝,基本上可以,但是這種方式感覺(jué)有缺陷,如下:
//假設(shè)我想在1s中完成動(dòng)畫(huà)(滑動(dòng)250px)
//那么我需要函數(shù)執(zhí)行多少次呢?
//很顯然,如果我想動(dòng)畫(huà)看上去越順滑,那必須每次移動(dòng)的像素就越小,所以函數(shù)執(zhí)行越頻繁;
//相反,如果函數(shù)間隔時(shí)間越大,動(dòng)畫(huà)會(huì)非常難看(一次移動(dòng)的像素太多)
問(wèn)題:假設(shè)我滑動(dòng)的距離足夠大(1000px),執(zhí)行的時(shí)間足夠短(0.3s),看上去動(dòng)畫(huà)要足夠順滑(每次移動(dòng)5px),那么函數(shù)需要多長(zhǎng)時(shí)間執(zhí)行一次呢? 。0.3 / (1000 / 5) ,0.3s要執(zhí)行200次函數(shù),每 0.0015s 執(zhí)行一次,這么頻繁的執(zhí)行函數(shù)到底有沒(méi)有問(wèn)題呢?如果每次只能移動(dòng)1px呢?
再者就是這些計(jì)算麻煩,不如css3動(dòng)畫(huà)來(lái)得方便。
我用css實(shí)現(xiàn)的動(dòng)畫(huà)和js鉤子實(shí)現(xiàn)的作比較,都是0.3s,總感覺(jué)css的動(dòng)畫(huà)要快,要順滑。
<template>
<transition
v-on:before-enter="beforeEnter"
v-on:enter="enter"
v-on:leave="leave"
>
<slot></slot>
</transition>
</template>
<script>
export default {
name: 'animation',
data() {
return {
enterTimer: null,
leaveTimer: null
}
},
methods: {
beforeEnter: function(el) {
//設(shè)置滑塊的初始位置(滑塊的寬度)
el.style.bottom = '-250px'
},
enter: function(el, done) {
clearInterval(this.leaveTimer)
let _v = 0
//假設(shè)我想在1s中完成動(dòng)畫(huà)(滑動(dòng)250px)
//那么我需要函數(shù)執(zhí)行多少次呢?
//很顯然,如果我想動(dòng)畫(huà)看上去越順滑,那必須每次移動(dòng)的像素就越小,所以函數(shù)執(zhí)行越頻繁;
//相反,如果函數(shù)間隔時(shí)間越大,動(dòng)畫(huà)會(huì)非常難看(一次移動(dòng)的像素太多)
this.enterTimer = setInterval(() => {
if (_v < 250) {
_v += 2.5
} else {
_v = 250
clearInterval(this.enterTimer)
done()
}
el.style.opacity = _v
el.style.transform = `translateY(-${_v}px)`
}, 3)
},
leave: function(el, done) {
clearInterval(this.enterTimer)
let _v = 250
this.leaveTimer = setInterval(() => {
if (_v > 0) {
_v -= 2.5
} else {
_v = 0
clearInterval(this.leaveTimer)
done()
}
el.style.opacity = _v
el.style.transform = `translateY(-${_v}px)`
}, 3)
}
}
}
</script>
之前一直以為官方價(jià)紹了兩種方式是等價(jià)的,并且兩種方式對(duì)應(yīng)的demo不是等效的,感覺(jué)這是巨大的一個(gè)坑
在地圖上倒好做了,德高百度啥的直接有現(xiàn)成的接口,設(shè)定路徑就行了。
之前整理過(guò)這類問(wèn)題,請(qǐng)先參考: https://zhuanlan.zhihu.com/p/...
(主要就是嘗試用canvas并且我寫(xiě)了一個(gè)簡(jiǎn)單的工具...)
如果還有問(wèn)題,也歡迎進(jìn)一步交流。
src="img[nowIndex].src" 一樣的啊
es6:
var items = document.querySelectorAll("li");
for(let i = 0; i<items.length;i++){
items[i].onclick = function(){
console.log(i)
}
}
es5:
var items = document.querySelectorAll("li");
for(var i = 0; i<items.length;i++){
(function(i){
items[i].onclick = function(){
console.log(i)
}
})(i)
}
for循環(huán)直接就運(yùn)行了跑了6次,等你點(diǎn)擊的時(shí)候i已經(jīng)等于5
axios 的攔截器可以試一下
//添加請(qǐng)求攔截器
axios.interceptors.request.use(config => {
//在發(fā)送請(qǐng)求之前做某事,比如說(shuō) 設(shè)置loading動(dòng)畫(huà)顯示
return config
}, error => {
//請(qǐng)求錯(cuò)誤時(shí)做些事
return Promise.reject(error)
})
//添加響應(yīng)攔截器
axios.interceptors.response.use(response => {
//對(duì)響應(yīng)數(shù)據(jù)做些事,比如說(shuō)把loading動(dòng)畫(huà)關(guān)掉
return response
}, error => {
//請(qǐng)求錯(cuò)誤時(shí)做些事
return Promise.reject(error)
})
可以用v-show+vue過(guò)渡動(dòng)畫(huà),這樣就可以實(shí)現(xiàn)
在顯示動(dòng)畫(huà)中,加上動(dòng)畫(huà)延時(shí),這樣就不會(huì)出現(xiàn)同步和重疊的情況,
但這樣會(huì)有一種情況就是初始化的時(shí)候會(huì)慢,如果想要解決,還可以初始化后給他們加上一個(gè)class,
然后.fade-enter-active.xxxx 兩個(gè)class都有就加上動(dòng)畫(huà)延時(shí),transtion-delay,就能解決
this.$nextTick(()=>{
this.$set(......)
})
cocos2d-js
你應(yīng)該把進(jìn)退場(chǎng)動(dòng)畫(huà)放在動(dòng)態(tài)元素上。
<div *ngFor="let item of projects" [@myanim]>
...
</div>
一個(gè)想法(實(shí)際是不是這樣做的就不知道了):每次滾動(dòng)播放一定的幀數(shù),如果出現(xiàn)連續(xù)滾動(dòng)則要做防抖動(dòng)處理,并根據(jù)滾動(dòng)距離進(jìn)行幀的播放??淳W(wǎng)站的效果似乎還用了緩動(dòng)函數(shù),因?yàn)闈L動(dòng)一次的時(shí)候從開(kāi)始到停止并不是很流暢。
原來(lái)這個(gè)原因:
/**
* 觸摸小配件中
*/
partTouchMove: function (e) {
//獲取當(dāng)前小配件的partTouchData
//let partTouchData = e.currentTarget.dataset.item.partTouchData;
//獲取當(dāng)前小配件的id
let id = e.currentTarget.dataset.item.id;
let partTouchData = this.data.showDogs[id].partTouchData
把
let partTouchData = e.currentTarget.dataset.item.partTouchData;
改為
let partTouchData = this.data.showDogs[id].partTouchData
完美解決!?。?/p>
可能是通過(guò)data-綁定了復(fù)雜數(shù)據(jù),不斷循環(huán)獲取的時(shí)候,會(huì)嚴(yán)重影響性能。
使用.bind(this)
綁定上下文
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。