微信小程序--實(shí)踐


fullpage效果實(shí)現(xiàn):

情景需求:頁(yè)面分為上下塊红淡,上方固定高魔策,下方不固定高氓皱,做fullpage效果滞造。如圖:

Paste_Image.png

布局:
似乎這種情景续室,在小程序中只能采用縱向的flex布局,別無(wú)他法谒养。上方固定高挺狰,下方flex:1;

fullpage效果方案探索一:

采用小程序組件:scroll-view。
先說(shuō)個(gè)結(jié)論:這種方案實(shí)現(xiàn)不了fullpage效果买窟,因?yàn)槲覠o(wú)法阻止該組件的scroll事件丰泊。
再來(lái)談為什么要用這個(gè)組件:在小程序中,當(dāng)以手勢(shì)滑動(dòng)屏幕的時(shí)候始绍,會(huì)拉扯頁(yè)面波動(dòng)瞳购。導(dǎo)致fullpage 效果不那么完美。所以設(shè)想:利用scroll-view組件亏推,當(dāng)手勢(shì)滑動(dòng)時(shí)候学赛,頁(yè)面也跟隨滑動(dòng)(這樣可以避免頁(yè)面波動(dòng)),滑到一定位置頁(yè)面自動(dòng)切換到下一屏幕吞杭。但是很可惜盏浇,愿望是美好的,現(xiàn)實(shí)是殘酷的芽狗。小程序的scroll-view組件绢掰,沒(méi)法阻止scroll事件。

fullpage效果方案探索二:

采用swiper方案
這里有個(gè)坑:在體驗(yàn)小程序時(shí)候译蒂,swiper 有縱向方向曼月。但是去文檔中查找,咋么也找不到柔昼。幸好有高人指點(diǎn)哑芹,設(shè)置"vertical=true"即可。不然這一方案也被否定了捕透。

fullpage效果方案探索三:

自己動(dòng)手
步驟一:封裝一個(gè)判斷手勢(shì)方向的函數(shù)
步驟二:結(jié)合動(dòng)畫(huà)API animation 滑動(dòng)頁(yè)面


數(shù)字run起來(lái)效果實(shí)現(xiàn)

情景需求:當(dāng)點(diǎn)擊卡片的時(shí)候聪姿,卡片中間顯示一個(gè)數(shù)字,數(shù)字從0跑到100乙嘀。如圖所示:

Paste_Image.png

數(shù)字效果方案探索一:

采用定時(shí)器
關(guān)于這一塊核心代碼:

timer && clearInterval(timer);
timer = setInterval(function() {
  if (startPercent >= endPercent) {
    clearInterval(timer);
    return;
  }
  startPercent++;
  option.start_percent = startPercent;
  me.setData({
    topics: topics
  });
}, 10);

但是在微信開(kāi)發(fā)工具或者真機(jī)上末购,數(shù)字跑起來(lái)有明顯的卡頓現(xiàn)象,感覺(jué)小程序?qū)Χ〞r(shí)器支持不好;⑿弧盟榴!

數(shù)字效果方案探索二:

優(yōu)化定時(shí)器代碼:降低設(shè)置setData({})的頻率,由startPercent++ 改為startPercent+=2; 延長(zhǎng)定時(shí)器的時(shí)間婴噩,由10ms改為20ms擎场。理由:在一定時(shí)間內(nèi)羽德,減少DOM操作(個(gè)人理解)。

timer && clearInterval(timer);
timer = setInterval(function() {
  if (startPercent >= endPercent) {
    clearInterval(timer);
    return;
  }
  startPercent+=2;
  option.start_percent = startPercent;
  me.setData({
    topics: topics
  });
}, 20);

但事實(shí)是:沒(méi)有鳥(niǎo)用,卡頓依然存在迅办。

數(shù)字效果方案探索三:

采用requestAnimationFrame
requestAnimationFrame是瀏覽器用于定時(shí)循環(huán)操作的一個(gè)接口宅静,類(lèi)似于setTimeout, 主要用途是按幀對(duì)網(wǎng)頁(yè)進(jìn)行重繪。具體的就不在這介紹了站欺!

timer = requestAnimationFrame(runNum);
function runNum(){
   if(startPercent >= endPercent){
    cancelAnimationFrame(timer);
    return;
  }
  startPercent++;
  option.start_percent = startPercent;
  me.setData({ 
    topics: topics 
  });
  timer = requestAnimationFrame(runNum);
}

但事實(shí)是:小程序在ios 居然不支持requestAnimationFrame姨夹,報(bào)錯(cuò)!矾策!只好放棄磷账。另外在安卓上,卡頓現(xiàn)象也依然存贾虽。

數(shù)字效果方案探索四:

采用canvas够颠,利用canvas 和定時(shí)器畫(huà)數(shù)字。事實(shí)發(fā)現(xiàn):卡頓消失了榄鉴,但存一些bug。先來(lái)分析卡頓為什么消失了蛉抓?個(gè)人覺(jué)的是:利用canvas,可以免去setData({topics: topics})這一步(類(lèi)似于不操作DOM)庆尘,所以整個(gè)畫(huà)面變得十分流暢。再來(lái)說(shuō)bug:

  • canvas遇到transform等巷送,并不會(huì)隨著父級(jí)進(jìn)行transform,而是保留在原地驶忌。

最后,再總結(jié)一些開(kāi)發(fā)微信小程序遇到的坑:

  • promise語(yǔ)法 在不同的開(kāi)發(fā)工具版本中笑跛,支持情況不一樣付魔。在0.10版本中支持,在0.11版本中不支持
  • requestAnimationFrame 在IOS 中報(bào)錯(cuò)
  • canvas 并不會(huì)隨著父級(jí)進(jìn)行transform飞蹂,而是保留在原地几苍; canvas需添加id,且id 名不能重復(fù),否則畫(huà)布狀態(tài)為:display:none;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陈哑,一起剝皮案震驚了整個(gè)濱河市妻坝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惊窖,老刑警劉巖刽宪,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異界酒,居然都是意外死亡圣拄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)毁欣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)庇谆,“玉大人岳掐,你說(shuō)我怎么就攤上這事∽迕” “怎么了岩四?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)哥攘。 經(jīng)常有香客問(wèn)我剖煌,道長(zhǎng),這世上最難降的妖魔是什么逝淹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任耕姊,我火速辦了婚禮,結(jié)果婚禮上栅葡,老公的妹妹穿的比我還像新娘茉兰。我一直安慰自己,他們只是感情好欣簇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布规脸。 她就那樣靜靜地躺著,像睡著了一般熊咽。 火紅的嫁衣襯著肌膚如雪莫鸭。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天横殴,我揣著相機(jī)與錄音被因,去河邊找鬼。 笑死衫仑,一個(gè)胖子當(dāng)著我的面吹牛梨与,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播文狱,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粥鞋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了如贷?” 一聲冷哼從身側(cè)響起陷虎,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杠袱,沒(méi)想到半個(gè)月后尚猿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡楣富,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年凿掂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庄萎,死狀恐怖踪少,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糠涛,我是刑警寧澤援奢,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站忍捡,受9級(jí)特大地震影響集漾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砸脊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一具篇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凌埂,春花似錦驱显、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至孩哑,卻和暖如春熔恢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背臭笆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秤掌,地道東北人愁铺。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像闻鉴,于是被迫代替她去往敵國(guó)和親茵乱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評(píng)論 25 707
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點(diǎn)贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 46,756評(píng)論 22 665
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)孟岛、插件瓶竭、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,096評(píng)論 4 62
  • 感謝五月天 讓我擁有一個(gè)這樣美好的高中時(shí)代。 想起給每個(gè)同學(xué)畫(huà)過(guò)的荷包蛋寫(xiě)過(guò)的簽名 想念那些讓我哭過(guò)笑過(guò)的人 想念...
    playmay閱讀 71評(píng)論 0 0
  • 罪與伊甸園——重讀《小王子》 雖然還是有些東西讀不明白渠羞,但正是人們的“誤讀”才使這本書(shū)的內(nèi)涵豐富起來(lái)斤贰。 第一次見(jiàn)這...
    稼軒李德智閱讀 760評(píng)論 0 1