目錄
寫在前面
HTML入門
完整代碼
代碼分析
運行結果
系列推薦
寫在后面
寫在前面
最近好冷吖,小編給大家準備了一個超級炫酷的愛心,一起來看看吧!
HTML入門
HTML全稱為HyperText Markup Language,是一種標記語言,用于創建網頁結構和內容。HTML使用標簽來描述網頁的不同部分,如標題、段落、鏈接和圖像等。
HTML的基本結構由<!DOCTYPE>聲明、<html>標簽、<head>標簽和<body>標簽組成。<!DOCTYPE>聲明定義了HTML文檔的類型,告訴瀏覽器如何解析和顯示頁面。<html>標簽是HTML文檔的根元素,包含了整個頁面的內容。而<head>標簽用于指定頁面的元數據,如標題、樣式表和腳本等。最后,<body>標簽包含了頁面的可見內容,如文字、圖像和鏈接等。
在HTML中,標簽用尖括號括起來,通常成對出現,包括一個開始標簽和一個結束標簽。開始標簽使用尖括號包圍,結束標簽使用尖括號和斜杠/包圍。例如,<h1>標簽用于表示標題,開始標簽為<h1>,結束標簽為</h1>。
除了常用的標簽,HTML還提供了一些特殊的標簽,如<ul>和<li>標簽用于創建無序列表,<ol>和<li>標簽用于創建有序列表,<a>標簽用于創建鏈接,<img>標簽用于插入圖像等。
除了標簽,HTML還使用屬性來添加額外的信息或功能。屬性位于標簽的開始標簽中,并用鍵值對的形式表示。例如,<a>標簽可以使用href屬性來指定鏈接的目標地址,<img>標簽可以使用src屬性來指定圖像的URL。
在編寫HTML時,可以使用文本編輯器來編輯HTML文件,然后保存為.html文件格式。然后,可以使用瀏覽器來打開HTML文件,以查看該網頁的效果。瀏覽器會解析HTML文件,并將其轉化為可見的網頁。
總結來說,HTML是一種標記語言,用于創建網頁結構和內容。通過使用標簽和屬性,可以實現各種不同的效果,如標題、段落、鏈接和圖像等。學習HTML的基礎知識是了解網頁開發的重要第一步。
完整代碼
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>?</title>
</head>
<style>body {background-color: blue;}#drawing {height: 100%;width: 100%;}
</style><body><canvas id="drawing"></canvas>
</body>
<script>var drawing = document.getElementById("drawing"); //獲取canvas元素var cheight = document.body.scrollHeight;var cwidth = document.body.scrollWidth;drawing.width = cwidth; //設置畫布大小drawing.height = cheight;if (drawing.getContext) { //獲取繪圖上下文var content = drawing.getContext("2d"),radian = 0, //設置初始弧度radian_add = Math.PI / 180; //設置弧度增量content.beginPath(); //開始繪圖var drawWidth = cwidth / 2;var drawHeight = cheight / 2;content.translate(drawWidth, drawHeight); //設置繪圖原點var list1 = [];var list2 = [];while (radian <= (Math.PI * 2)) { //每增加一次弧度,繪制一條線radian += radian_add;X = getX(radian);Y = getY(radian);list1.push({ x: X, y: Y });//求邊緣點 0,0到x,y 邊緣矩形4條邊if (X != 0 && Y < 0 && (Y / X < -1 || Y / X > 1)) {//y = -drawHeight A = -drawHeight * X / Y;B = -drawHeight;} else if (Y != 0 && X > 0 && (Y / X > -1 && Y / X < 1)) {// x=drawWidthA = drawWidth;B = Y / X * drawWidth;} else if (X != 0 && Y > 0 && (Y / X < -1 || Y / X > 1)) {//y=drawHeightA = drawHeight * X / Y;B = drawHeight;} else {//x=-drawWidthA = -drawWidth;B = -drawWidth * Y / X;}list2.push({ a: A, b: B });}draw();}var interVal;var time = 0;function draw() {var size = list1.length;time++;if (size > 0) {var j = Math.floor(Math.random() * size);content.beginPath();content.moveTo(list2[j].a, list2[j].b);content.lineTo(list1[j].x, list1[j].y);var grd = content.createLinearGradient(list2[j].a, list2[j].b, list1[j].x, list1[j].y)//漸變起始和結束坐標grd.addColorStop(0, "skyblue");//漸變顏色grd.addColorStop(0.3, "lightskyblue");grd.addColorStop(0.6, "lightskyblue")grd.addColorStop(1, "cyan");content.lineWidth = 3;content.strokeStyle = grd;content.stroke();list1.splice(j, 1)list2.splice(j, 1)size--;if (time < 3) {draw();} else {time = 0;interVal = window.requestAnimationFrame(draw);}} else {window.cancelAnimationFrame(interVal);}}function getX(t) { //獲取心型線的X坐標return 9 * (16 * Math.pow(Math.sin(t), 3))}function getY(t) { //獲取心型線的Y坐標return -9 * (13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t))}</script></html>
代碼分析
這段HTML代碼是一個創造心形線動畫的示例,讓我們分析一下代碼吧:
1. <!DOCTYPE html>:這是HTML文檔的聲明,指定文檔類型為HTML。
2. <html>:HTML文檔的根元素。
3. <head>:包含了文檔的元數據,如字符編碼和標題。
4. <meta charset="utf-8" />:定義了文檔的字符編碼為UTF-8,以支持各種語言和字符。
5. <title>?</title>:設置文檔的標題為一個心形符號。
6. <style>:包含了文檔的樣式表。
7. body {background-color: blue;}:設置頁面的背景顏色為藍色。
8. #drawing {height: 100%; width: 100%;}:設置id為"drawing"的canvas元素的高度和寬度為整個頁面的尺寸。
9. </style>:樣式表的結束標簽。
10. <body>:包含了頁面的可見內容。
11. <canvas id="drawing"></canvas>:創建了一個canvas元素,并指定了id為"drawing"。canvas元素用于繪制圖形和動畫。
12. <script>:包含了JavaScript代碼。
13. var drawing = document.getElementById("drawing");:獲取id為"drawing"的canvas元素。
14. var cheight = document.body.scrollHeight; var cwidth = document.body.scrollWidth;:獲取頁面的高度和寬度。
15. drawing.width = cwidth; drawing.height = cheight;:設置canvas的寬度和高度為頁面的尺寸。
16. if (drawing.getContext) { ... }:檢查瀏覽器是否支持canvas,并執行下面的繪圖代碼。
17. var content = drawing.getContext("2d"):獲取canvas的2D繪圖上下文。
18. var radian = 0; var radian_add = Math.PI / 180;:設置初始弧度和弧度增量。
19. content.beginPath():開始繪圖。
20. content.translate(drawWidth, drawHeight):設置繪圖原點為canvas的中心點。
21. while (radian <= (Math.PI * 2)) { ... }:循環繪制心形線的每一條線段。
22. X = getX(radian); Y = getY(radian);:計算當前弧度下心形線的X坐標和Y坐標。
23. list1.push({ x: X, y: Y }):將X和Y坐標添加到list1列表中。
24. 根據X和Y的值,計算出邊緣點的A和B坐標,并將其添加到list2列表中。
25. content.moveTo(list2[j].a, list2[j].b); content.lineTo(list1[j].x, list1[j].y):繪制一條線段。
26. var grd = content.createLinearGradient(list2[j].a, list2[j].b, list1[j].x, list1[j].y):創建線性漸變對象。
27. grd.addColorStop(0, "skyblue"); grd.addColorStop(0.3, "lightskyblue"); ...:設置漸變的顏色。
28. content.lineWidth = 3; content.strokeStyle = grd;:設置線段的寬度和顏色。
29. content.stroke():繪制線段。
30. list1.splice(j, 1) list2.splice(j, 1):從列表中移除已經繪制過的點。
31. if (time < 3) {draw();} else {time = 0; interVal = window.requestAnimationFrame(draw);}:控制動畫的繪制速度。
32. window.cancelAnimationFrame(interVal):停止動畫的繪制。
33. function getX(t) { ... } 和 function getY(t) { ... }:根據參數t計算心形線的X坐標和Y坐標。
34. </script>:JavaScript代碼的結束標簽。
以上就是這段HTML代碼的詳細分析,它使用了canvas和JavaScript來繪制心形線的動畫效果。
運行結果
系列推薦
序號 | 目錄 | 直達鏈接 |
1 | HTML實現3D相冊 | HTML實現3D相冊-CSDN博客 |
2 | HTML元素周期表 | HTML元素周期表-CSDN博客 |
3 | HTML黑客帝國字母雨 | HTML黑客帝國字母雨_字母雨html-CSDN博客 |
4 | HTML五彩繽紛的愛心 | HTML五彩繽紛的愛心-CSDN博客 |
5 | HTML飄落的花瓣 | HTML飄落的花瓣-CSDN博客 |
6 | HTML哆啦A夢 | HTML哆啦A夢_html哆啦a夢代碼-CSDN博客 |
7 | HTML愛情樹 | HTML愛情樹-CSDN博客 |
8 | HTML新春煙花盛宴 | HTML新春煙花盛宴-CSDN博客 |
9 | HTML想見你 | HTML想見你-CSDN博客 |
10 | HTML藍色愛心 | https://want595.blog.csdn.net/article/details/139136334 |
11 | HTML跳動的愛心 | https://want595.blog.csdn.net/article/details/139137326 |
12 | HTML橙色愛心 | HTML橙色愛心-CSDN博客 |
13 | HTML大雪紛飛 | https://want595.blog.csdn.net/article/details/139136829 |
14 | ||
15 | ||
16 | ||
17 | ||
18 | ||
19 | ||
20 | ||
21 | ||
22 | ||
23 | ||
24 | ||
25 | ||
26 | ||
27 |
寫在后面
我是一只有趣的兔子,感謝你的喜歡!