言
在之前的一篇文章《用HTML5的canvas來畫一個夢幻星空,來學習一下吧》中,我們使用HTML5的canvas畫出了一個夢幻星空的效果。今天這篇文章我們繼續使用canvas來畫出幾個簡單的小球運動效果,一起來看看吧。
本文源碼已經開源到Github上,感興趣的可以自取,Github地址如下。
https://github.com/zhouxiongking/article-pages/tree/master/articles/movaByCanvas
HTML5
小球直線運動
首先我們來看看小球直線運動的效果圖,如下所示。
運動效果圖
然后我們來分析下,這個效果是如何實現的。
首先設置畫布寬高等信息,然后利用canvas畫出一個小球,設定初始狀態,包括顏色,半徑,初始位置等信息。
設定一個定時器,每次動態更新小球的位置,由于定時器時間比較短,肉眼觀察下,相當于小球運動的效果。
通過上述的分析,我們得出以下的代碼。
對于canvas頁面的HTML代碼永遠都只包含一個元素。
HTML代碼
接下來是主要的Javascript代碼,首先是畫布,小球初始信息的設置,并設置定時器函數。
小球初始信息
然后是執行的定時器函數,動態更新小球的位置,當小球運動出畫布范圍后,重新從起點位置開始運動。
定時器函數
就這兩段代碼,就可以實現出以上的小球勻速直線運動的效果。
小球圓周運動
首先,我們來看看小球勻速圓周運動的效果圖,如下所示。
運動效果圖
接下來我們同樣來分析下這個效果是如何實現的。
首先畫出兩個小圓,一個是藍色,一個是紅色,設定初始信息和上述例子一樣。
設定定時器,每次清除畫布后,重新渲染,并且更新小藍球的位置,由于是圓周運動,并不會出現上述例子中移出畫布的情況。
通過上面的描述,我們得出以下代碼,HTML代碼一樣,這里不再給出。
首先是原始小藍球的繪制,并設置定時器。
小藍球的繪制
然后是小紅球的繪制。
小紅球的繪制
最后是定時器函數的實現,在該函數中會讓小藍球旋轉一定的角度。
定時器函數
至此,小球的勻速圓周運動效果代碼就完全實現了。
總結
今天這篇文章主要是利用HTML5的canvas實現了一些簡單的小球運動效果,你學會了嗎?
#34;夏哉ke":quangneng.com/5065/
HTML5的介紹和案例實戰
HTML5 是 HTML 的第五個主要版本,是用于構建和呈現網頁內容的最新標準。它引入了許多新特性和改進,使得開發者能夠創建更豐富、更交互性的網頁應用。HTML5 的一些主要特性包括:
- 語義化標記: HTML5 引入了許多新的語義化標簽,如 <header>, <footer>, <nav>, <article> 等,使得開發者能夠更清晰地描述網頁的結構,有助于搜索引擎優化(SEO)和可訪問性(Accessibility)。
- 多媒體支持: HTML5 提供了原生支持音頻和視頻的 <audio> 和 <video> 標簽,不再需要依賴第三方插件如 Flash。開發者可以直接在網頁中嵌入音頻和視頻,并控制播放、暫停等操作。
- Canvas 繪圖: HTML5 的 <canvas> 元素允許開發者使用 JavaScript 繪制圖形、動畫和其他視覺效果。Canvas 提供了一種靈活的方式來創建交互式圖形,如游戲、數據可視化等。
- 本地存儲: HTML5 引入了 Web Storage 和 IndexedDB,允許開發者在客戶端存儲數據,而無需依賴服務器。這對于創建離線應用程序和提高性能有很大幫助。
- 響應式設計: HTML5 提供了更好的支持響應式設計的能力,使得網頁能夠適應不同設備的屏幕大小和分辨率,提供更好的用戶體驗。
- Web 組件: HTML5 引入了 Web Components,允許開發者創建可重用的自定義 HTML 元素,從而提高開發效率和代碼復用性。
- 更嚴格的語法和錯誤處理: HTML5 規范對 HTML 的語法進行了更新和優化,使得瀏覽器能夠更好地處理語法錯誤,并提供更準確的錯誤提示。
案例實戰可以是:
- 音樂播放器應用: 使用 HTML5 的 <audio> 標簽和 JavaScript,創建一個簡單的音樂播放器應用,允許用戶播放、暫停和切換音樂。
- 圖像畫廊: 使用 HTML5 的 <canvas> 元素和 JavaScript,在網頁上創建一個交互式的圖像畫廊,允許用戶查看和縮放圖片。
- 在線游戲: 使用 HTML5 和 Canvas 繪圖功能,開發一個簡單的在線游戲,如拼圖、打磚塊等,展示 HTML5 在游戲開發中的應用。
- 數據可視化應用: 使用 HTML5、CSS 和 JavaScript,創建一個數據可視化應用,展示數據圖表、地圖等,并允許用戶與數據進行交互。
- 響應式網站: 使用 HTML5 和 CSS3,創建一個響應式網站,使得網頁能夠在不同設備上自適應布局,并提供良好的用戶體驗。
這些案例實戰可以幫助開發者熟悉 HTML5 的各種特性和用法,并在實際項目中應用它們來構建豐富、交互性強的網頁應用。
CSS3的介紹和案例實戰
CSS3 是 CSS 的第三個主要版本,是用于樣式化網頁內容的最新標準。它引入了許多新特性和改進,使得開發者能夠創建更漂亮、更交互性的網頁設計。CSS3 的一些主要特性包括:
- 新的選擇器: CSS3 引入了許多新的選擇器,如屬性選擇器、偽類選擇器和偽元素選擇器,使得開發者能夠更精確地選中文檔中的元素,并對其應用樣式。
- 盒子模型: CSS3 提供了更靈活的盒子模型,允許開發者使用 box-sizing 屬性控制盒子的尺寸計算方式,包括 content-box 和 border-box,從而更方便地設計布局。
- 圓角和陰影: CSS3 提供了 border-radius 屬性和 box-shadow 屬性,使得開發者能夠輕松地為元素添加圓角和陰影效果,增強頁面的美觀度。
- 漸變和背景圖像: CSS3 允許開發者使用線性漸變和徑向漸變來創建平滑的過渡效果,同時支持多個背景圖像疊加,使得頁面的背景更加豐富多彩。
- 動畫和過渡: CSS3 提供了 @keyframes 規則和 transition 屬性,使得開發者能夠創建簡單的動畫和過渡效果,而無需使用 JavaScript 或 Flash。
- 響應式布局: CSS3 提供了媒體查詢(Media Queries)功能,允許開發者根據設備的特性和屏幕大小來應用不同的樣式,從而創建響應式布局的網頁設計。
- 字體和文本效果: CSS3 支持自定義字體(@font-face),以及文本陰影、文字溢出效果等,使得開發者能夠更加靈活地設計文本樣式。
- Flexbox 和 Grid 布局: CSS3 引入了 Flexbox 和 Grid 布局模型,使得開發者能夠更方便地設計復雜的網頁布局,實現水平和垂直居中、自適應布局等功能。
案例實戰可以是:
- 響應式導航菜單: 使用 CSS3 的媒體查詢和動畫效果,創建一個響應式導航菜單,在不同設備上呈現不同的布局和樣式。
- 圖片展示畫廊: 使用 CSS3 的過渡和漸變效果,創建一個圖片展示畫廊,實現圖片的平滑過渡和點擊放大效果。
- 卡片式布局: 使用 CSS3 的 Flexbox 或 Grid 布局,創建一個卡片式布局的網頁,實現卡片的等高排列和自適應布局。
- 輪播圖效果: 使用 CSS3 的動畫效果,創建一個簡單的輪播圖效果,實現圖片的自動切換和淡入淡出動畫。
- 按鈕樣式設計: 使用 CSS3 的邊框樣式、陰影效果和漸變背景,設計一組漂亮的按鈕樣式,增強用戶交互體驗。
這些案例實戰可以幫助開發者熟悉 CSS3 的各種特性和用法,并在實際項目中應用它們來實現各種炫酷的網頁設計效果。
JavaScript的介紹和案例實戰:
JavaScript 是一種高級的、動態的、解釋性的編程語言,主要用于為網頁添加交互性和動態功能。它是 Web 開發中最常用的腳本語言之一,可以直接嵌入到 HTML 中,也可以作為外部文件引入到 HTML 頁面中。
JavaScript 的特點包括:
- 客戶端腳本語言: JavaScript 主要運行在用戶的瀏覽器中,用于處理網頁的交互邏輯,與用戶進行實時的交互。
- 輕量級和靈活性: JavaScript 的語法簡潔明了,學習曲線較為平緩,開發者可以快速上手。同時,JavaScript 也是一種靈活的語言,支持多種編程范式,如面向對象編程(OOP)、函數式編程等。
- 事件驅動和異步編程: JavaScript 是一種事件驅動的語言,可以通過監聽用戶的交互事件(如點擊、滾動、鍵盤輸入等)來觸發相應的操作。同時,JavaScript 也支持異步編程模式,通過回調函數、Promise 或 async/await 等機制來處理異步操作,保持頁面的流暢性和響應性。
- 跨平臺性: 由于 JavaScript 運行在瀏覽器中,因此具有較好的跨平臺性,無論是在 Windows、macOS、Linux 還是移動設備上,都能夠正常運行。
- 豐富的生態系統: JavaScript 生態系統非常豐富,擁有大量的開源庫和框架,如jQuery、React、Angular、Vue.js 等,可以幫助開發者快速構建復雜的 Web 應用程序。
案例實戰可以是:
- 交互式表單驗證: 使用 JavaScript 實現表單的實時驗證功能,包括驗證必填字段、郵箱格式、密碼強度等,并在用戶輸入不符合要求時給出相應的提示信息。
- 圖片輪播效果: 使用 JavaScript 編寫輪播圖組件,實現圖片的自動播放、手動切換、指示器顯示等功能,提升網頁的視覺效果和用戶體驗。
- 無限滾動加載: 使用 JavaScript 監聽頁面滾動事件,當用戶滾動到頁面底部時,自動加載更多的內容,實現無限滾動效果,提升頁面的內容呈現效果。
- 實時搜索功能: 使用 JavaScript 編寫實時搜索組件,當用戶在搜索框中輸入關鍵字時,自動展示匹配的搜索結果,并支持關鍵字高亮顯示,提升搜索體驗。
- 模態框和彈出窗口: 使用 JavaScript 編寫模態框(Modal)或彈出窗口(Popup)組件,實現在頁面上彈出特定內容的交互式窗口,如登錄框、消息提示框等。
這些案例實戰可以幫助開發者熟悉 JavaScript 的語法和常用操作,理解 JavaScript 在網頁開發中的應用場景,從而更好地運用 JavaScript 來實現各種動態和交互式的功能。
言
隨著HTML5的火熱,越來越多的人投入到HTML5開發中了,canvas作為HTML5中比較重要的一個元素,在很多官網的主頁面中被使用到。今天我們一起來看看如何使用canvas畫出一個夢幻的星空背景,還會有流星運動。
本文的代碼已經放到Github上了,感興趣的可以自取,Github地址如下。
https://github.com/zhouxiongking/article-pages/blob/master/articles/starry/starry.html
HTML5
實現效果
首先我們來看看通過canvas實現的星空效果圖,如下所示。
效果圖
代碼實現
接下來我們看看這個效果是如何通過代碼一步步實現的。
首先來看看頁面上的HTML代碼,只有一個Div元素。
HTML代碼
Javascript代碼
首先我們需要定義一些常量,比如畫布的寬和高,星星數量,流星個數。在這個星空中流星其實是星星的一個,只是添加了動態效果。
頁面初始化
然后是設定一個定時器,通過一段隨機時間生成一個流星的索引號。
流星索引號
緊接著來看看生成一個星星的方法,該方法返回一個星星的各項參數,包括x,y軸坐標,透明度,x,y軸偏移量。
生成星星的參數
然后是最重要的render方法,通過該方法可以將星星渲染至畫布上,我們將這個方法拆開看,首先是對流星的繪制,流星索引號通過上面metor方法獲得。
畫流星
然后是對于星星各項參數的處理,比如有的星星生成的點坐標超出了屏幕寬高,有的透明度是負數,都要將其處理成正常參數。
各項參數判斷
最后是在畫布中進行繪制。
畫布繪制
至此,這個畫面效果的講解完畢,如果代碼正確的話,就可以看到文中出現的效果圖。
結束語
今天這篇文章主要是借助HTML5中的canvas畫出了一個夢幻星空的效果,你學會了嗎?