HTML藍色愛心

圖片

目錄

寫在前面

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來繪制心形線的動畫效果。

運行結果

圖片

系列推薦

序號目錄直達鏈接
1HTML實現3D相冊HTML實現3D相冊-CSDN博客
2HTML元素周期表HTML元素周期表-CSDN博客
3HTML黑客帝國字母雨HTML黑客帝國字母雨_字母雨html-CSDN博客
4HTML五彩繽紛的愛心HTML五彩繽紛的愛心-CSDN博客
5HTML飄落的花瓣HTML飄落的花瓣-CSDN博客
6HTML哆啦A夢HTML哆啦A夢_html哆啦a夢代碼-CSDN博客
7HTML愛情樹HTML愛情樹-CSDN博客
8HTML新春煙花盛宴HTML新春煙花盛宴-CSDN博客
9HTML想見你HTML想見你-CSDN博客
10HTML藍色愛心https://want595.blog.csdn.net/article/details/139136334
11HTML跳動的愛心https://want595.blog.csdn.net/article/details/139137326
12HTML橙色愛心HTML橙色愛心-CSDN博客
13HTML大雪紛飛https://want595.blog.csdn.net/article/details/139136829
14
15
16
17
18
19
20
21
22
23
24
25
26
27

寫在后面

我是一只有趣的兔子,感謝你的喜歡!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/16114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16114.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16114.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++-指針

在C中&#xff0c;指針是至關重要的組成部分。它是C語言最強大的功能之一&#xff0c;也是最棘手的功能之一。 指針具有強大的能力&#xff0c;其本質是協助程序員完成內存的直接操縱。 指針&#xff1a;特定類型數據在內存中的存儲地址&#xff0c;即內存地址。 指針變量的定…

2024.5組隊學習——MetaGPT(0.8.1)智能體理論與實戰(下):多智能體開發

傳送門&#xff1a; 《2024.5組隊學習——MetaGPT&#xff08;0.8.1&#xff09;智能體理論與實戰&#xff08;上&#xff09;&#xff1a;MetaGPT安裝、單智能體開發》《2024.5組隊學習——MetaGPT&#xff08;0.8.1&#xff09;智能體理論與實戰&#xff08;中&#xff09;&…

ModelBuilder之GDP空間化——批量值提取

一、前言 前面明確說到對于空間化過程中其實只有兩個過程可以進行批量操作,一個是我們燈光指數提取過程和批量進行值提取,這里補充一點,對于燈光指數計算可以實現批量計算總燈光指數和平均燈光指數,綜合燈光指數需要用平均燈光指數乘以面積占比求得,面積比就是(DN大于0的…

VS2022通過C++網絡庫Boost.asio搭建一個簡單TCP異步服務器和客戶端

基本介紹 上一篇博客我們介紹了通過Boost.asio搭建一個TCP同步服務器和客戶端&#xff0c;這次我們再通過asio搭建一個異步通信的服務器和客戶端系統&#xff0c;由于這是一個簡單異步服務器&#xff0c;所以我們的異步特指異步服務器而不是異步客戶端&#xff0c;同步服務器在…

BGP選路規則

配置地址&#xff0c;AS123使用ospf保證通訊&#xff0c;修改接口類型保證ospf學習環回20.0,30.0,100.0 地址時&#xff0c;是以24位掩碼學習&#xff0c;R1&#xff0c;R2&#xff0c;R3都處于BGP邊界&#xff0c;各自都需要宣告三者的私網環回 1&#xff0c; [R4]ip ip-prefi…

點分治練習

P3806 【模板】點分治 1 #include <bits/stdc.h> using namespace std;inline long long read() {char ch getchar();long long f 1,x 0;while (ch > 9 || ch < 0) { if (ch -)f -1; ch getchar(); }while (ch > 0 && ch < 9) { x (x <&l…

Thrift學習深入

Thrift學習深入 https://zhuanlan.zhihu.com/p/22934974 https://zhuanlan.zhihu.com/p/26993406 從具體的demo入手,我們需要學習的是三部分 IDLserver端client端一、IDL深入 IDL定義的通用類型有: 基礎數據類型結構體容器 list、set、map異常:語法與結構體無異,不過用…

第十二周筆記

微信小程序的自定義事件是指開發者可以自行定義并觸發的事件&#xff0c;以實現特定的功能或邏輯。通過自定義事件&#xff0c;開發者可以更靈活地管理小程序的交互和數據流動&#xff0c;提升用戶體驗和開發效率。下面我將詳細講解微信小程序自定義事件&#xff0c;包括定義、…

容器化部署

目錄 docker容器化部署 怎樣使用Docker Compose或Kubernetes等容器編排工具來管理和擴展聯邦學習系統 使用Docker Compose

【Qnx 】Qnx IPC通信PPS

Qnx IPC通信PPS Qnx自帶PPS服務&#xff0c;PPS全稱Persistent Publish/Subscribe Service&#xff0c;就是常見的P/S通信模式。 Qnx PPS的通信模式是異步的&#xff0c;Publisher和Subscriber也無需關心對方是否存在。 利用Qnx提供的PPS服務&#xff0c;Publisher可以通知多…

嵌入式進階——LED呼吸燈(PWM)

&#x1f3ac; 秋野醬&#xff1a;《個人主頁》 &#x1f525; 個人專欄:《Java專欄》《Python專欄》 ??心若有所向往,何懼道阻且長 文章目錄 PWM基礎概念STC8H芯片PWMA應用PWM配置詳解占空比 PWM基礎概念 PWM全稱是脈寬調制&#xff08;Pulse Width Modulation&#xff09…

Arduino下載與安裝(Windows 10)

Arduino下載與安裝(Windows 10) 官網 下載安裝 打開官網&#xff0c;點擊SOFTWARE&#xff0c;進入到軟件下載界面&#xff0c;選擇Windows 選擇JUST DOWNLOAD 在彈出的界面中&#xff0c;填入電子郵件地址&#xff0c;勾選Privacy Policy&#xff0c;點擊JUST DOWNLOAD即可 …

深入解析:Element Plus 與 Vite、Nuxt、Laravel 的結合使用

在現代前端開發中&#xff0c;選擇合適的工具和框架來提高開發效率和應用性能是至關重要的。 Element-Plus 是一個基于 Vue.js 3.0 的流行 UI組件庫&#xff0c;它可以與多種前端和后端框架結合使用&#xff0c;如 Vite、Nuxt 和 Laravel。本文將深入探討這三者與 Element Plus…

【腳本篇】---spyglass lint腳本

目錄結構 sg_lint.tcl &#xff08;頂層&#xff09; #1.source env #date set WORK_HOME . set REPORT_PATH ${WORK_HOME}/reports puts [clock format [clock second] -format "%Y-%m-%d %H:%M:%S"] #2.generate source filelist #3.set top module puts "##…

qt-C++筆記之QThread使用

qt-C筆記之QThread使用 ——2024-05-26 下午 code review! 參考博文&#xff1a; qt-C筆記之使用QtConcurrent異步地執行槽函數中的內容&#xff0c;使其不阻塞主界面 qt-C筆記之QThread使用 文章目錄 qt-C筆記之QThread使用一:Qt中幾種多線程方法1.1. 使用 QThread 和 Lambda…

ubuntu server 24.04 網絡 SSH等基礎配置

1 安裝參考上一篇: VMware Workstation 虛擬機安裝 ubuntu 24.04 server 詳細教程 服務器安裝圖形化界面-CSDN博客 2 網絡配置 #安裝 sudo apt install net-tools#查看 ifconfig #修改網絡配置 sudo vim /etc/netplan/50-cloud-init.yaml network:version: 2ethernets:en…

課時136:變量進階_變量實踐_高級賦值

2 變量進階 2.1 變量實踐 2.1.1 高級賦值 學習目標 這一節&#xff0c;我們從 基礎知識、簡單實踐、小結 三個方面來學習 基礎知識 簡介 所謂的高級賦值&#xff0c;是另外的一種變量值獲取方法&#xff0c;這里涉及到更多我們學習之外的一些shell內置變量格式,其實這部分…

飛雞:從小訓練飛行的雞能飛行嗎?為什么野雞能飛嗎?是同一品種嗎?今天自由思考

雞的飛行能力在很大程度上受到其生理結構的限制。盡管雞有翅膀&#xff0c;但與能夠長時間飛行的鳥類相比&#xff0c;雞的翅膀相對較小&#xff0c;且胸部肌肉較弱。再加上雞的身體較重&#xff0c;這些因素共同限制了雞的飛行能力。通常&#xff0c;雞只能進行短暫的、低空的…

【wiki知識庫】01.wiki知識庫前后端項目搭建(SpringBoot+Vue3)

&#x1f4dd;個人主頁&#xff1a;哈__ 期待您的關注 &#x1f33c;環境準備 想要搭建自己的wiki知識庫&#xff0c;要提前搭建好自己的開發環境&#xff0c;后端我使用的是SpringBoot&#xff0c;前端使用的是Vue3&#xff0c;采用前后端分離的技術實現。同時使用了Mysql數…