Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 91精品国产色综合久久不卡蜜,国产精品51麻豆cm传媒,最新国产精品亚洲

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          必看!這9部奧斯卡動(dòng)畫短片,時(shí)間短、畫面干凈,趕緊安

          必看!這9部奧斯卡動(dòng)畫短片,時(shí)間短、畫面干凈,趕緊安排


          個(gè)被無(wú)限拉長(zhǎng)的春節(jié)假期里,有一個(gè)群體絕對(duì)不能忽視。


          他們天性活潑,有旺盛的精力,處在快速成長(zhǎng)階段……


          你坐得住,他們可不讓你坐得住。


          全國(guó)家長(zhǎng)都懂:娃不瘋,我先瘋。


          雖然,看電視傷眼睛的道理誰(shuí)都懂,但已經(jīng)到了第二個(gè)14天,再不拿出動(dòng)畫片來封印深獸,恐怕真的要瘋!


          ▲今年奧斯卡獲獎(jiǎng)的最佳動(dòng)畫短片《發(fā)之戀》


          既然總歸要看的,不如看點(diǎn)真正的好片子!


          時(shí)長(zhǎng)合理,對(duì)眼睛有一定保護(hù);沒有恐怖畫面,不會(huì)增加晚上哄睡的負(fù)擔(dān);綠色環(huán)保,杜絕少兒不宜


          于是我們從歷屆20多部奧斯卡提名和獲獎(jiǎng)的動(dòng)畫短片中,選出了含金量最高的9部,推薦給大家!


          這是一輛開往幼兒園的車,孩子們,上車!



          *這些影片的在線觀看鏈接,我也都整理好了,都是網(wǎng)上能夠找到的相對(duì)高清的版本,復(fù)制鏈接用瀏覽器打開就行了。


          關(guān)鍵詞 :親情 堅(jiān)持



          片長(zhǎng):7分鐘

          獲獎(jiǎng):第92屆奧斯卡金像獎(jiǎng) 最佳動(dòng)畫短片

          觀看地址:復(fù)制鏈接用瀏覽器打開

          https://www.iqiyi.com/v_19rvqwgjds.html


          這部短片算是在上周奧斯卡中爆冷奪得最佳動(dòng)畫短片,故事很簡(jiǎn)單,講的是一位爸爸第一次給女兒扎辮子的故事。


          這是重要的一天,小女孩Zuri準(zhǔn)備打扮美美的,可是一頭蓬松爆炸的頭發(fā),卻難倒了她。



          自己嘗試失敗后,決定向爸爸求助,這段與魔法怪獸拼死搏斗的畫面特別有趣,像極了爸爸們給女兒梳頭的樣子,相信很多爸爸會(huì)有共鳴感。



          一番搏斗后,爸爸還是敗了,打算用帽子壓住頭發(fā)了事。最后,被媽媽的話鼓舞的爸爸,決定再次嘗試。



          這一次,他們成功了!



          畫面一轉(zhuǎn)到病房,媽媽因?yàn)樯≈委煟旯饬祟^發(fā)。不過收到女兒送她的畫,決定勇敢面對(duì)。


          短片沒有過多的隱喻和獵奇畫風(fēng),特別貼近生活,卻演繹出一個(gè)打動(dòng)人心的故事。同時(shí)也傳達(dá)給我們一個(gè)信念:前路或許艱辛,但你終會(huì)到達(dá),只要一點(diǎn)努力,加上滿滿的愛。


          關(guān)鍵詞:成長(zhǎng) 獨(dú)立 勇敢



          片長(zhǎng):6分03秒

          獲獎(jiǎng):第89屆奧斯卡金像獎(jiǎng) 最佳動(dòng)畫短片

          觀看地址:復(fù)制鏈接用瀏覽器打開

          https://v.qq.com/x/cover/mzc00200k549l9q/l3044jlpfzr.html


          這部動(dòng)畫,我一度以為是紀(jì)錄片,特效真的太逼真,每一幅畫面都美的可以截圖當(dāng)桌面。



          短短6分鐘,無(wú)對(duì)白,無(wú)字幕,一個(gè)簡(jiǎn)單的故事,卻描繪出一個(gè)關(guān)于成長(zhǎng)的真諦。


          一只小鷸張大嘴巴等媽媽喂食,媽媽卻一直呼喚它來海邊自己覓食。



          不曾想還沒吃到東西,就被浪潮打濕,回到家里瑟瑟發(fā)抖,拒絕再去。媽媽卻沒有因此心軟,而是一再的鼓勵(lì)它。



          再次出海的小鷸遇上了小寄居蟹,學(xué)著它們躲進(jìn)沙子躲避浪潮,卻發(fā)現(xiàn)了完全不一樣的景觀,也打開了新世界大門。



          最后看到小鷸不再害怕,肆意在海灘上覓食的樣子,真的會(huì)忍俊不禁。



          小鷸的成長(zhǎng)就像我們每個(gè)人的的縮影,父母適時(shí)的放手,才能讓孩子更好地成長(zhǎng)。親人的鼓勵(lì)、好友的扶持,終會(huì)讓你戰(zhàn)勝恐懼,成為更好的自己。


          必須說一下,小鷸真的萌翻了!老母親和小寶貝雙雙被擊中!


          關(guān)鍵詞:母愛 家庭 放手



          片長(zhǎng):8分鐘

          獲獎(jiǎng):第91屆奧斯卡金像獎(jiǎng) 最佳動(dòng)畫短片

          觀看地址:復(fù)制鏈接用瀏覽器打開

          https://www.iqiyi.com/v_19rqtkymnw.html


          這是一部中國(guó)風(fēng)的動(dòng)畫,短短8分鐘就能讓人了解到中國(guó)人的脾氣、習(xí)慣以及中國(guó)式家庭的親情關(guān)系。



          故事很簡(jiǎn)單,一個(gè)包子有了生命,這位媽媽把它當(dāng)成孩子一樣撫養(yǎng)長(zhǎng)大,包寶寶漸漸長(zhǎng)大,渴望獨(dú)立,有自己的生活,但她卻無(wú)法接受。



          最終矛盾爆發(fā),媽媽一口把它吞下了。看到這里時(shí),我嚇了一大跳,還好,故事并沒有結(jié)束,原來這一切都是媽媽的噩夢(mèng)。



          其實(shí)想想,這是我們很多人經(jīng)歷過的故事。父母對(duì)孩子過分保護(hù)、不愿放手的心態(tài),這種以愛之名養(yǎng)育子女,卻也可能將子女吞噬。



          這部動(dòng)畫孩子看會(huì)覺得很可愛軟萌,但我更想推薦給爸爸媽媽們看,在養(yǎng)育孩子的同時(shí),給與孩子足夠的空間和自由,不正是我們新一代爸媽該學(xué)習(xí)的嗎?


          關(guān)鍵詞:勇氣 責(zé)任 守護(hù)



          片長(zhǎng):8分鐘

          獲獎(jiǎng):第91屆奧斯卡最佳動(dòng)畫短片(提名)

          觀看地址:復(fù)制鏈接用瀏覽器打開

          https://www.iqiyi.com/v_19rqtkymnw.html


          這是一部治愈系動(dòng)畫短片,畫風(fēng)可愛,歷險(xiǎn)的故事很精彩,出鏡了非常多小動(dòng)物,很適合寶貝看。


          短片開始就是驚心動(dòng)魄,Bilby為了食物一路奔跑逃竄,一下就感覺到它生存環(huán)境的惡劣。



          找食物的途中,Bilby遇到了一直呆萌的幼鳥,本想一走了之,卻心生憐憫,帶著它開始逃亡之路。隨之是接踵而來的各種危險(xiǎn),眼鏡蛇、蝎子、食人魚、鱷魚......


          最終逃到了一處懸崖之上,結(jié)果又被老鷹抓走,Bilby再起鼓起勇氣去解救它。最后,幼鳥長(zhǎng)大了,兩只動(dòng)物成了好朋友,相互陪伴。



          正因?yàn)橐婚_始就看到Bilby生存的惡劣,它之后的善良舉動(dòng)才更顯得珍貴。我們?nèi)艘惨粯樱m然平凡弱小,可當(dāng)我們有了想要守護(hù)的東西,就會(huì)變得勇敢無(wú)懼。父母與孩子,何嘗不是如此呢?


          關(guān)鍵詞:友情 治愈 成長(zhǎng)



          片長(zhǎng):9分鐘

          獲獎(jiǎng):第92屆奧斯卡金像獎(jiǎng) 最佳動(dòng)畫短片(提名)

          觀看地址:復(fù)制鏈接用瀏覽器打開

          https://v.qq.com/x/cover/mzc00200k549l9q/l3044jlpfzr.html


          特別暖心的一部動(dòng)畫短片,講述一只流浪貓Kit與斗牛犬Bull從生疏防備到親密無(wú)間的故事。



          雖然是二維動(dòng)畫,卻體現(xiàn)了皮克斯一貫的高水準(zhǔn)。細(xì)節(jié)的刻畫特別棒,尤其是小貓的動(dòng)作、神態(tài),捕捉的特別好。


          一點(diǎn)聲響就被嚇到,將Kit是一只流浪貓,生性膽小,極其沒有安全感的狀態(tài)展示出來。



          而bull呢,看起來有人照顧,其實(shí)一直在遭受主人的虐待。


          兩只小動(dòng)物,從充斥著敵意,相互試探,到后來發(fā)現(xiàn)彼此內(nèi)心的善意。這段故事,特別適合孩子從中領(lǐng)會(huì)什么是友誼?


          ▲雖然很恐懼,仍會(huì)幫Bull舔傷口給它安慰。


          更讓我感動(dòng)的是,它們?cè)谠馐芰四敲炊鄠螅赃x擇對(duì)世界抱以善良的心。最終,它們也“被溫柔以待”,找到了好主人。



          我想這也是我們想讓孩子明白的:只要心懷善念,雖然歷經(jīng)苦難,世界終將還你愛與溫暖。


          關(guān)鍵詞:人際關(guān)系 幽默



          片長(zhǎng):3分鐘

          獲獎(jiǎng):第74屆奧斯卡金像獎(jiǎng) 最佳動(dòng)畫短片

          觀看地址:復(fù)制鏈接用瀏覽器打開

          https://www.iqiyi.com/w_19s0kqcg75.html


          皮克斯出品,延續(xù)了一貫輕松搞笑的風(fēng)格。


          一群小鳥聚在電線上嘰嘰喳喳吵個(gè)不停,不速之客大鳥的到來,打破了原來的平衡。


          小鳥們突然團(tuán)結(jié)起來一致對(duì)外,打算把大鳥排擠出去,可成功在即之時(shí),意外發(fā)生了。



          小鳥們因?yàn)閼T性被彈到天空中,羽毛全部脫落得光禿禿,只好躲到大鳥身后了。



          短片只有3分鐘,卻像是一出幽默的小品。一群小鳥和一只大鳥斗智斗勇,動(dòng)作和表情都非常夸張,非常適合小齡寶貝看。

          大人可以感受影片背后映射的某些社會(huì)現(xiàn)象,孩子比較難理解,但可以問孩子一些簡(jiǎn)單的問題,比如小鳥們的行為是對(duì)是錯(cuò)呢?怎樣對(duì)待大鳥更好呢?


          關(guān)鍵詞:閱讀 想象力



          片長(zhǎng):15分鐘

          獲獎(jiǎng):2012年奧斯卡金像獎(jiǎng)最佳動(dòng)畫短片獎(jiǎng)

          觀看地址:復(fù)制鏈接用瀏覽器打開

          https://www.iqiyi.com/v_19rrh6izps.html#curid=226621500_0d52db7c805aee21d30fc41fc2ebf428


          如果要提到在繪本界最有名的一部動(dòng)畫短片,那一定非《神奇飛書》莫屬,因?yàn)檫@是一部關(guān)于“書”的動(dòng)畫,也是一部獻(xiàn)給愛書者的短片。


          在一個(gè)平靜的小鎮(zhèn),一個(gè)男子正坐在陽(yáng)臺(tái)上閱讀,他的身邊堆滿了書。突然狂風(fēng)大作,所有的東西就連書上的文字都被吹走。



          當(dāng)男子四處游蕩時(shí),他跟著一本書來到了一棟滿是書的房子,從此留在這里,與書相伴。



          短片里藏著很多細(xì)節(jié),可以和孩子多看幾遍,一起發(fā)現(xiàn)。


          富有想象力,無(wú)論是被風(fēng)吹起的字幕,還是躺在巨大的書籍睡覺,最讓孩子驚喜,還是里面各種飛翔的書,每一本書都有生命。



          有段“救活”一本書的情節(jié),用各種方法搶救,但唯一的方法,是打開它,閱讀它。


          所以,告訴孩子們,去閱讀吧!只有書本傳遞的力量與快樂,才是永恒的,才能讓原本黑白的世界變成彩色。


          關(guān)鍵詞:陪伴 信任 包容



          片長(zhǎng):5分49秒

          獲獎(jiǎng):第82屆奧斯卡入圍最佳動(dòng)畫提名的附贈(zèng)短片

          觀看地址:復(fù)制鏈接用瀏覽器打開

          https://v.qq.com/x/page/o0642zh1spq.html


          這是皮克斯2009《飛屋環(huán)游記》的加映短片,畫面呆萌可愛,動(dòng)畫人物的表情非常生動(dòng),是寶貝們會(huì)愛的款!


          講述了一個(gè)很奇幻的故事,“孩子”是由天空中有生命的云朵們創(chuàng)造的,由送子鸛將他們送到不同的家。



          有一朵烏云Gus,和其他云不同,它制造的孩子都是那些攻擊性很強(qiáng)的孩子,比如,牙齒鋒利的鱷魚寶寶、有著硬角的山羊?qū)殞殹喩硎谴痰拇题瑢殞?..看的時(shí)候,還真有點(diǎn)心疼送子鸛Peck。


          就在我們以為遍體鱗傷的Peck受不了,選擇了離開,卻沒想到它只是去穿了一套防護(hù)套裝,繼續(xù)回到Gus身邊,這一幕真的超暖心。



          Gus和Peck之間的關(guān)系,很讓人感動(dòng)。每個(gè)人或許都會(huì)有與世界格格不入的棱角,就像這些制造出來的“危險(xiǎn)”。可是留在你身邊的人,不管是朋友家人,還是愛人,總會(huì)給你信任和包容。



          總之,這真的是一部可愛有趣又令人動(dòng)容的動(dòng)畫。


          關(guān)鍵詞:付出 陪伴 克制



          片長(zhǎng):6分鐘

          獲獎(jiǎng):第87屆奧斯卡金像獎(jiǎng) 最佳動(dòng)畫短片

          觀看地址:復(fù)制鏈接用瀏覽器打開

          https://v.qq.com/x/cover/76wjn5jwry03mhu/w0015u0o190.html?ptag=360kan.cartoon.free


          通過小狗溫斯頓的視角,來講述了男主人的愛情故事。


          整片的主線可是溫斯頓的食物,從最初狗糧,到后來的牛排、炸肉餅、煎蛋...溫斯頓的可謂是登上了狗生巔峰啊!和男主人一塊兒度過了一段天堂般的美食歲月。

          ▲看它吃東西我都要饞了


          直到男主人邂逅了生命中的另一半,溫斯頓的伙食每況愈下,直到男主人失戀了...


          令人意想不到的是,竟然是溫斯頓拯救了男主人的愛情,而它最后又是怎樣再次享受上各種美食的,看完你肯定會(huì)笑出來。


          且不說一只狗的“美食盛宴”里吃出了愛情和人生,光是整部短片展現(xiàn)的歡樂,就值得和孩子一起看一次,相信最后你也會(huì)喜歡上這只貪吃的小狗!


          愿你們度過一段特別的親子時(shí)光~



          當(dāng)然啦,給寶貝看動(dòng)畫也要注意控制時(shí)間。


          美國(guó)兒科學(xué)會(huì)建議:18個(gè)月以下的嬰幼兒最好不要看電視;18個(gè)月至2歲的孩子每天的屏幕時(shí)間也不能超過1小時(shí),爸爸媽媽們一定要嚴(yán)格執(zhí)行哦。


          最后,也想和大家聊一下動(dòng)畫這種藝術(shù)創(chuàng)作。


          李安曾說過:一部好的電影,改變一個(gè)人看待世界的方式


          好的動(dòng)畫,同樣如此。它超越想象的邊界,在潛移默化中,不僅能讓人看到豐富多彩的世界,更有著催人向上的作用。


          那好的動(dòng)畫又是怎樣的呢?我想除了蘊(yùn)含童趣、詼諧幽默又不乏寫實(shí),更重要的是,它一定是由愛和真誠(chéng)善良所組成。


          在這些動(dòng)畫中,始終不會(huì)離開“愛”的主題,這是我們所需要的,也是想我們想教給孩子的:不管在任何時(shí)刻,都要保持愛的力量!

          么是Canvas

          <canvas> 是HTML中的一個(gè)元素,它可被用來通過 JavaScript(Canvas API 或 WebGL API)繪制圖形及圖形動(dòng)畫。

          Canvas API 提供了一個(gè)通過 JavaScriptHTML<canvas> 元素來繪制圖形的方式。它可以用于動(dòng)畫、游戲畫面、數(shù)據(jù)可視化、圖片編輯以及實(shí)時(shí)視頻處理等方面。

          <canvas>標(biāo)簽本身沒有繪圖能力,它僅僅是圖形的容器。在HTML,一般通過Javascript語(yǔ)言來完成實(shí)際的操作。

          創(chuàng)建HTML頁(yè)面并添加繪圖容器

          本文通過Javascript操作Canvas制作一個(gè)簡(jiǎn)單的顯示當(dāng)前時(shí)間的動(dòng)畫時(shí)鐘,了解和學(xué)習(xí)簡(jiǎn)單的canvas用法,僅以拋磚引玉。

          首先創(chuàng)建一個(gè)HTML文件,為了方便管理,使用一個(gè)div標(biāo)簽包裹兩個(gè)canvas標(biāo)簽,并加上一些簡(jiǎn)單的css樣式。

          <!doctype html>
          <html lang="zh-cn">
          <head><title>Canvas繪制動(dòng)畫時(shí)鐘</title>
          <style>
          html,body{margin:0;padding:0}
          #clockWrap {
          	position: relative;
          }
          canvas {
          	position: absolute;
          }
          #clock-ui {
          	z-index: 2;
          }
          #clock-plate {
          	z-index: 1;
          }
          </style>
          </head>
          <body>
            <div id="clockWrap">
            <canvas id="clock-plate"></canvas>
            <canvas id="clock-ui"></canvas>
          </div>
          <script></script>
          </body></html>

          本示例中使用了兩個(gè)canvas標(biāo)簽(為什么使用兩個(gè),一個(gè)不是更簡(jiǎn)單嗎?),一個(gè)用于繪制鐘面,一個(gè)根據(jù)當(dāng)前時(shí)間實(shí)時(shí)顯示和更新時(shí)針、分針和秒針的動(dòng)態(tài)指向。好了,話不多說,開干。

          繪制鐘面刻度

          一個(gè)簡(jiǎn)單的時(shí)鐘,可以分為鐘面上的刻度和指針。其中刻度和12個(gè)數(shù)字是固定的,我們可以將它們繪制在當(dāng)作背景的canvas上(示例中id為clock-plate的canvas)。

          (1)要使用canvas,首先必須通過容器獲取渲染上下文:

          var $=function(id){return document.querySelector(id);}//這個(gè)函數(shù)只是為了方便獲取dom元素
          const canvasbg=$("#clock-plate"),
                canvas=$("#clock-ui"),
                ctx=canvasbg.getContext("2d"),//背景容器上下文
                ctxUI=canvas.getContext("2d");//指針容器上下文,后面代碼要用
          //定義畫布寬度和高度,時(shí)鐘圓直徑,并設(shè)置畫布大小
          const oW=1000,oH=800,cW=400,r=cW/2,oX=oW/2,oY=oH/2;
          canvas.width=oW;
          canvas.height=oH;
          canvasbg.width=oW;
          canvasbg.height=oH;

          (2)畫鐘的邊框,為了好看,這里畫兩個(gè)圈:

           //畫出時(shí)鐘外圓框
            ctx.lineWidth=12;
          	ctx.beginPath();
          	ctx.arc(oX, oY, r+14, 0, 2 * Math.PI);
          	ctx.stroke();
          	ctx.closePath();
          	ctx.lineWidth=8;
          	//畫出時(shí)鐘內(nèi)圓框(刻度圈)
          	ctx.beginPath();
          	ctx.arc(oX, oY, r, 0, 2 * Math.PI);
          	ctx.stroke();
          	ctx.closePath();
          	ctx.beginPath();

          邊框效果圖

          (3)繪制刻度線和數(shù)字,可以利用三角函數(shù)計(jì)算出每個(gè)刻度的坐標(biāo):

          利用三角函數(shù)計(jì)算刻度線的坐標(biāo)位置

          鐘面上有12個(gè)大格,從正上方12開始,它們的度數(shù)分別是270,300,330,0,30,60,90,120,150,180,210,240。然后利用JS的Math.sin和Math.cos分別計(jì)算出各大格的坐標(biāo)。注意:js中Math.sin()和Math.cos()的參數(shù)不是角度數(shù)弧度。可以使用Math.PI/180*角度來轉(zhuǎn)化,比如將30度轉(zhuǎn)換成弧度=Math.PI/180*30

          //繪制鐘表中心點(diǎn)
          	ctx.beginPath();
          	ctx.arc(oX, oY, 8, 0, 2 * Math.PI);//圓心
          	ctx.fill();
          	ctx.closePath();
          	//設(shè)置刻度線粗細(xì)度
          	ctx.lineWidth=3;
          	//設(shè)置鐘面12個(gè)數(shù)字的字體、大小和對(duì)齊方式
          	ctx.font="30px serif";
          	ctx.textAlign="center";
          	ctx.textBaseline="middle";
          	var kdx,kdy;
          	//繪制12個(gè)大刻度和12個(gè)數(shù)字
          	//為方便計(jì)算,先定義了0-11這12個(gè)刻度對(duì)應(yīng)的度數(shù),也可以直接定義對(duì)應(yīng)的弧度。
          	const hd=Math.PI/180,degr=[270,300,330,0,30,60,90,120,150,180,210,240];
          	for(var i=0;i<12;i++){
          		kdx=oX+Math.cos(hd*degr[i])*(r-3);
          		kdy=oY+Math.sin(hd*degr[i])*(r-3);
          		ctx.beginPath();
          		ctx.arc(kdx, kdy, 6, 0, 2 * Math.PI);//畫圓形大刻度
          		ctx.fill();
              //繪制刻度對(duì)應(yīng)的數(shù)字
          		ctx.strokeText(i==0? 12 : i,oX+Math.cos(hd*degr[i])*(r-24),oY+Math.sin(hd*degr[i])*(r-24));
          		ctx.closePath();
          	}
          	
          	//繪制小刻度
          	ctx.lineWidth=2;
          	for(var i=0;i<60;i++){
          		if(i % 5==0) continue;//跳過與刻度重疊的刻度
          		x0=Math.cos(hd*i*6);
          		y0=Math.sin(hd*i*6);
          		ctx.beginPath();
          		ctx.moveTo(oX+x0*(r-10), oY+y0*(r-10)); 
          		ctx.lineTo(oX+x0*r, oY+y0*r); //畫短刻度線
          		ctx.stroke(); 
          		ctx.closePath();
          	}

          效果如圖:

          鐘面效果圖

          (4)根據(jù)當(dāng)前時(shí)間繪制指針

          習(xí)慣上,時(shí)針粗短,分針略粗而長(zhǎng),秒針細(xì)長(zhǎng)。為加大區(qū)別,示例中秒針細(xì)長(zhǎng)并且繪制成紅色。

          function drawHp(i){//繪制時(shí)針
          	const x0=Math.cos(hd*i*30),y0=Math.sin(hd*i*30);
          	drawPointer(oX,oY,oX+x0*(r-90),oY+y0*(r-90),10,"#000000");
          }
          function drawMp(i){//繪制分針
          	const x0=Math.cos(hd*i*6),y0=Math.sin(hd*i*6);
          	drawPointer(oX,oY,oX+x0*(r-60),oY+y0*(r-60),5,"#000000");
          }
          function drawSp(i){//繪制秒針
          	const x0=Math.cos(hd*i*6),y0=Math.sin(hd*i*6);
          	drawPointer(oX,oY,oX+x0*(r-20),oY+y0*(r-20),2,"#FF0000");
          }
          //抽取出繪制三種指針時(shí)共同的部分,注意指針繪制在渲染上下文ctxUI中
          function drawPointer(ox,oy,tx,ty,width,color){
          	ctxUI.strokeStyle=color;
          	ctxUI.lineCap="round";
          	ctxUI.lineWidth=width;
          	ctxUI.beginPath();
          	ctxUI.moveTo(ox, oy);
          	ctxUI.lineTo(tx,ty);
          	ctxUI.stroke();
          	ctxUI.closePath();
          }

          現(xiàn)在已經(jīng)有了繪制三種指針的方法,參數(shù)是當(dāng)前時(shí)間的時(shí)、分和秒,將根據(jù)它們的值確定指針的坐標(biāo)。不過,因?yàn)槭褂玫氖悄J(rèn)的convas坐標(biāo)體系,0值實(shí)際指向3的位置,需要小小的修正一下。

          window.requestAnimationFrame(function fn(){
          		var d=new Date();
          		ctxUI.clearRect(0,0,oW,oH);
          		//度數(shù)從0開始,而0在3刻度(15分/秒位置),修正為全值減15,如果小于0則修正回來
              var hour=d.getHours(),minute=d.getMinutes()-15,second=d.getSeconds()-15;
          		hour=hour>11? hour-15 : hour-3;
          		drawHp(hour>=0? hour : 12+hour);
          		drawMp(minute>=0? minute : 60+minute);
          		drawSp(second>=0? second : 60+second);
          		window.requestAnimationFrame(fn);
          });

          接下來,調(diào)用window.requestAnimationFrame,在其中繪制并更新指標(biāo)的位置。看看效果如何:

          指針繪制情況與實(shí)際時(shí)間相符

          貌似效果有了,截圖時(shí)電腦上的時(shí)間是10時(shí)17分,指針繪制上,時(shí)針指向10時(shí),分針指向17。嗯,感覺有點(diǎn)別扭?對(duì)了,時(shí)針和分針怎么是端端正正地指向它們的整時(shí)整分刻度上呢?實(shí)際鐘表上時(shí)針和分針是展示動(dòng)態(tài)進(jìn)度的,此時(shí)時(shí)針應(yīng)該越過10時(shí)的位置才對(duì)。沒關(guān)系,我們?cè)诶L制時(shí)針和分針時(shí)別點(diǎn)東西,讓它的角度值加上分針和秒針的值試試。

          //修改后的繪制三種指針的方法
          function drawHp(i,f,m){//繪制時(shí)針,參數(shù):時(shí),分,秒
          	const x0=Math.cos(hd*(i+(f/60)+(m/600))*30),y0=Math.sin(hd*(i+(f/60)+(m/600))*30);
          	drawPointer(oX,oY,oX+x0*(r-90),oY+y0*(r-90),10,"#000000");
          }
          function drawMp(i,f){//繪制分針,參數(shù),分,秒
          	const x0=Math.cos(hd*(i+(f/60))*6),y0=Math.sin(hd*(i+(f/60))*6);
          	drawPointer(oX,oY,oX+x0*(r-60),oY+y0*(r-60),5,"#000000");
          }
          function drawSp(i){//繪制秒針
          	const x0=Math.cos(hd*i*6),y0=Math.sin(hd*i*6);
          	drawPointer(oX,oY,oX+x0*(r-20),oY+y0*(r-20),2,"#FF0000");
          }

          再來看看效果,嗯,立竿見影呀:

          指針指向更合理了

          到此為止,canvas繪制一個(gè)簡(jiǎn)易時(shí)鐘就完成了。下面繼續(xù)優(yōu)化一下。剛才使用requestAnimationFrame方法即時(shí)更新繪制情況。這個(gè)方法與刷新率有關(guān),看看mdn上面怎么說的:

          window.requestAnimationFrame() 方法會(huì)告訴瀏覽器你希望執(zhí)行一個(gè)動(dòng)畫。它要求瀏覽器在下一次重繪之前,調(diào)用用戶提供的回調(diào)函數(shù)。

          對(duì)回調(diào)函數(shù)的調(diào)用頻率通常與顯示器的刷新率相匹配。雖然 75hz、120hz 和 144hz 也被廣泛使用,但是最常見的刷新率還是 60hz(每秒 60 個(gè)周期/幀)。為了提高性能和電池壽命,大多數(shù)瀏覽器都會(huì)暫停在后臺(tái)選項(xiàng)卡或者隱藏的 <iframe> 中運(yùn)行的 requestAnimationFrame()。

          本示例中,更新指針的位置并不需要很高的刷新頻率,可以通過節(jié)流進(jìn)行一下優(yōu)化:

          var fps=5, fpsInterval=1000 / fps,lastTime=new Date().getTime(); //記錄上次執(zhí)行的時(shí)間
          function runStep() {
              requestAnimationFrame(runStep);
              var d=new Date(),now=d.getTime()
              var elapsed=now - lastTime;
              if (elapsed > fpsInterval) {
          				ctxUI.clearRect(0,0,oW,oH);
                  lastTime=now - (elapsed % fpsInterval); 
          			//度數(shù)從0開始,而0在3刻度(15分/秒位置),修正為全值-15,如果小于0則用60減回
                  var hour=d.getHours(),minute=d.getMinutes()-15,second=d.getSeconds()-15;//console.log(d.getSeconds(),second);
                  hour=hour>11? hour-15 : hour-3;
                  drawHp(hour>=0? hour : 12+hour,minute+15,second+15);
                  drawMp(minute>=0? minute : 60+minute,second+15);
                  drawSp(second>=0? second : 60+second);
              }
          }
          runStep();

          當(dāng)然,實(shí)現(xiàn)時(shí)鐘的方法是很多,比如可以使用畫布的旋轉(zhuǎn)(rotate方法)來實(shí)現(xiàn)指針的動(dòng)態(tài)轉(zhuǎn)動(dòng)等等。

          完整HTML+JS源碼:

          現(xiàn)代網(wǎng)頁(yè)設(shè)計(jì)中,動(dòng)畫和過渡是提升用戶體驗(yàn)的重要手段。通過使用 CSS,我們可以在不影響頁(yè)面性能的前提下,實(shí)現(xiàn)平滑和吸引人的視覺效果。本文將介紹 CSS 動(dòng)畫和過渡的基礎(chǔ)知識(shí),并通過幾個(gè)例子展示如何在你的網(wǎng)站中應(yīng)用它們。

          CSS 過渡(Transitions)

          CSS 過渡允許你在 CSS 屬性值之間創(chuàng)建平滑的動(dòng)畫效果。當(dāng)一個(gè)元素的屬性值改變時(shí),過渡效果會(huì)在一定時(shí)間內(nèi)平滑地過渡到新的屬性值。

          基本語(yǔ)法

          transition: property duration timing-function delay;
          
          • property:指定要添加過渡效果的 CSS 屬性。
          • duration:過渡效果的持續(xù)時(shí)間。
          • timing-function:定義速度曲線的函數(shù)。
          • delay:過渡效果的延遲時(shí)間。

          例子 1:鼠標(biāo)懸停放大圖片

          img:hover {
            transform: scale(1.2);
            transition: transform 0.3s ease-in-out;
          }
          

          這個(gè)例子中,當(dāng)鼠標(biāo)懸停在圖片上時(shí),圖片會(huì)在0.3秒內(nèi)放大到原來的1.2倍大小,過渡效果為ease-in-out。

          CSS 動(dòng)畫(Animations)

          CSS 動(dòng)畫提供了更強(qiáng)大的控制,允許你創(chuàng)建復(fù)雜的動(dòng)畫序列,通過定義關(guān)鍵幀(keyframes)來控制動(dòng)畫的中間狀態(tài)。

          基本語(yǔ)法

          @keyframes animation-name {
            from {
              /* 初始狀態(tài) */
            }
            to {
              /* 結(jié)束狀態(tài) */
            }
          }
          

          或者使用百分比來定義多個(gè)關(guān)鍵幀:

          @keyframes animation-name {
            0% { /* 初始狀態(tài) */ }
            50% { /* 中間狀態(tài) */ }
            100% { /* 結(jié)束狀態(tài) */ }
          }
          

          例子 2:無(wú)限旋轉(zhuǎn)圖標(biāo)

          @keyframes spin {
            from { transform: rotate(0deg); }
            to { transform: rotate(360deg); }
          }
          
          .icon-spin {
            animation: spin 2s linear infinite;
          }
          

          這個(gè)例子創(chuàng)建了一個(gè)名為spin的動(dòng)畫,使得圖標(biāo)無(wú)限期地旋轉(zhuǎn)。

          實(shí)戰(zhàn)例子

          接下來,我們將通過幾個(gè)實(shí)戰(zhàn)例子來展示 CSS 動(dòng)畫和過渡的具體應(yīng)用。

          例子 3:按鈕點(diǎn)擊波紋效果

          .button {
            position: relative;
            overflow: hidden;
            transition: background-color 0.3s;
          }
          
          .button:after {
            content: '';
            position: absolute;
            top: 50%;
            left: 50%;
            width: 5px;
            height: 5px;
            background: rgba(255, 255, 255, 0.7);
            opacity: 0;
            border-radius: 100%;
            transform: scale(1, 1) translate(-50%);
            transform-origin: 50% 50%;
          }
          
          .button:active:after {
            width: 300px;
            height: 300px;
            opacity: 1;
            transition: width 0.5s, height 0.5s, opacity 0s 0.5s;
          }
          

          在這個(gè)例子中,當(dāng)按鈕被點(diǎn)擊時(shí),會(huì)產(chǎn)生一個(gè)波紋效果,模擬水波紋擴(kuò)散。

          例子 4:淡入淡出切換效果

          .fade-in {
            animation: fadeIn 1s ease-in-out;
          }
          
          @keyframes fadeIn {
            from { opacity: 0; }
            to { opacity: 1; }
          }
          
          .fade-out {
            animation: fadeOut 1s ease-in-out;
          }
          
          @keyframes fadeOut {
            from { opacity: 1; }
            to { opacity: 0; }
          }
          

          這個(gè)例子中定義了兩個(gè)動(dòng)畫,一個(gè)用于元素的淡入,另一個(gè)用于元素的淡出。

          示例

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>CSS Animation and Transition Example</title>
          <style>
            body {
              font-family: 'Arial', sans-serif;
              margin: 0;
              padding: 0;
              background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
              background-size: 400% 400%;
              animation: gradientBG 15s ease infinite;
              display: flex;
              justify-content: center;
              align-items: center;
              flex-direction: column;
              min-height: 100vh;
            }
          
            @keyframes gradientBG {
              0% { background-position: 0% 50%; }
              50% { background-position: 100% 50%; }
              100% { background-position: 0% 50%; }
            }
          
            .logo {
              font-size: 2em;
              color: #007bff;
              margin-bottom: 20px;
              animation: spin 3s linear infinite;
            }
          
            .scrolling-text {
              margin: 20px 0;
              background-color: #333;
              color: #fff;
              padding: 10px;
              white-space: nowrap;
              overflow: hidden;
              position: relative;
            }
          
            .scrolling-text p {
              position: absolute;
              width: 100%;
              height: 100%;
              margin: 0;
              line-height: 50px;
              text-align: center;
              /* Starting position */
              transform: translateX(100%);
              /* Apply animation to this element */
              animation: scroll-text 10s linear infinite;
            }
          
            @keyframes scroll-text {
              0% { transform: translateX(100%); }
              100% { transform: translateX(-100%); }
            }
          
            .interactive-card {
              background-color: #fff;
              box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
              padding: 20px;
              margin: 20px;
              border-radius: 10px;
              transition: transform 0.3s ease, box-shadow 0.3s ease;
            }
          
            .interactive-card:hover {
              transform: translateY(-10px);
              box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
            }
          
            .color-block {
              width: 100px;
              height: 100px;
              background-color: #17a2b8;
              margin: 20px;
              border-radius: 50%;
              transition: background-color 0.5s ease, transform 0.5s ease;
            }
          
            .color-block:hover {
              background-color: #28a745;
              transform: rotate(180deg);
            }
          </style>
          </head>
          <body>
          
          <div class="logo">
            <i class="fas fa-sync-alt"></i> Animated Logo
          </div>
          
          <div class="scrolling-text">
            <p>This text scrolls infinitely. Pay attention to how it moves smoothly from right to left.</p>
          </div>
          
          <div class="interactive-card">
            <h3>Interactive Card</h3>
            <p>Hover over this card to see it move. It's a simple yet effective way to add interactivity to your design.</p>
          </div>
          
          <div class="color-block"></div>
          
          </body>
          </html>
          

          • .logo 類定義了一個(gè)徽標(biāo),它具有字體大小和顏色,并應(yīng)用了一個(gè)名為 spin 的關(guān)鍵幀動(dòng)畫,使徽標(biāo)無(wú)限旋轉(zhuǎn)。
          • .scrolling-text 類定義了一個(gè)包含滾動(dòng)文本的容器,設(shè)置了背景顏色、文字顏色和內(nèi)邊距。
          • .scrolling-text p 選擇器定義了滾動(dòng)文本的樣式,包括動(dòng)畫 scroll-text,使文本從右向左無(wú)限滾動(dòng)。
          • .interactive-card 類定義了一個(gè)交互式卡片,它具有背景顏色、陰影、內(nèi)邊距和圓角。當(dāng)鼠標(biāo)懸停時(shí),它會(huì)向上移動(dòng)并增加陰影,這是通過 transition 屬性實(shí)現(xiàn)的。
          • .color-block 類定義了一個(gè)顏色塊,設(shè)置了寬度、高度、背景顏色和圓角。當(dāng)鼠標(biāo)懸停時(shí),它的背景顏色會(huì)改變,并且會(huì)旋轉(zhuǎn) 180 度。
          • body 的背景被設(shè)置為一個(gè)線性漸變,包含四種顏色。通過 background-size 屬性,我們擴(kuò)大了背景尺寸,這樣動(dòng)畫在運(yùn)行時(shí)會(huì)有更多的空間進(jìn)行顏色的過渡。
          • @keyframes gradientBG 關(guān)鍵幀動(dòng)畫被創(chuàng)建來改變背景的位置,從而在不同的顏色之間產(chǎn)生平滑過渡的效果。
          • 該動(dòng)畫被設(shè)置為無(wú)限循環(huán),并且每次循環(huán)持續(xù) 15 秒,通過 ease 時(shí)間函數(shù)來平滑過渡。

          結(jié)語(yǔ)

          CSS 動(dòng)畫和過渡是前端開發(fā)者的強(qiáng)大工具,它們可以在不犧牲性能的情況下為用戶提供流暢、引人注目的界面交互。通過掌握這些技術(shù),你可以創(chuàng)造出更加動(dòng)態(tài)和生動(dòng)的網(wǎng)頁(yè)體驗(yàn)。記住,動(dòng)畫應(yīng)該用來增強(qiáng)用戶體驗(yàn),而不是分散用戶的注意力,適量而恰當(dāng)?shù)厥褂脛?dòng)畫效果是關(guān)鍵。


          主站蜘蛛池模板: 爆乳熟妇一区二区三区霸乳| 亚洲欧美国产国产综合一区| 亚洲AV无码国产精品永久一区| 精品国产一区二区三区久久狼 | 97久久精品一区二区三区| 无码喷水一区二区浪潮AV| 武侠古典一区二区三区中文| 亚洲丰满熟女一区二区哦| 国产一区二区三区乱码| 日韩精品无码一区二区三区四区| 国产一区二区草草影院| 国产一区二区三区播放心情潘金莲| 无码精品人妻一区二区三区人妻斩 | 日韩精品一区二区三区影院| 夜夜精品视频一区二区| 冲田杏梨AV一区二区三区| 亚洲AV无码片一区二区三区| 亚洲一区二区三区写真| 日日摸夜夜添一区| 国产91大片精品一区在线观看| 91一区二区视频| 国产一区在线mmai| 亚洲欧美日韩一区二区三区在线| 亚洲av综合av一区二区三区| 97精品国产一区二区三区| 国产福利微拍精品一区二区 | 熟女性饥渴一区二区三区| 在线视频一区二区三区三区不卡| 国产免费播放一区二区| 天堂Aⅴ无码一区二区三区| 日本一区精品久久久久影院| 国产AV午夜精品一区二区入口 | 亚洲一区二区三区偷拍女厕| 日本高清不卡一区| 亚洲综合一区二区| 国产麻豆精品一区二区三区| 无码精品久久一区二区三区 | 日韩av片无码一区二区不卡电影| 久久精品国内一区二区三区 | 国产精品无码一区二区三区毛片| 日韩精品一区在线|