0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何通過(guò)html+css樣式和js的方式實(shí)現(xiàn)星星圖的效果

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 18:13 ? 次閱讀

一、前言

在瀏覽一些圖片網(wǎng)站的時(shí)候,經(jīng)常會(huì)看到很多的漂亮的星空?qǐng)D,比如,下面的圖片。其實(shí)這種星星圖片的效果,也可以通過(guò)html+css樣式和js的方式來(lái)實(shí)現(xiàn)。今天教大家如何實(shí)現(xiàn)星星圖的效果。

二、項(xiàng)目準(zhǔn)備

軟件:Dreamweaver

三、實(shí)現(xiàn)的目標(biāo)

每次刷新產(chǎn)生隨機(jī)的星星個(gè)數(shù)。顯示畫(huà)布上。

四、項(xiàng)目實(shí)現(xiàn)

1. 創(chuàng)建canvas畫(huà)布<body> <canvas id='canvas'></canvas></body>2. 添加css樣式。

給canva 畫(huà)布加上邊框,方便觀察。

<style type="text/css"> canvas{ border:2px solid #f00;}</style>3.添加js樣式
3.1 設(shè)置canvas畫(huà)布大小 ,定義需要變量。<script type="text/javascript"> var _canvas=document.getElementById("canvas") _canvas.width=500; _canvas.height=500;var r,g ,b,a;</script>3.2 產(chǎn)生隨機(jī)圓。
for (var j = 0; j < 150; j++) { arc.x=Math.floor(Math.random()*_canvas.width); arc.y=Math.floor(Math.random()*_canvas.height); arc.r=Math.floor(Math.random()*31+10); r=Math.ceil(Math.random()*256); g=Math.ceil(Math.random()*256); b=Math.ceil(Math.random()*256); a=Math.random();
darw();}3.3 定義draw()方法,通過(guò)畫(huà)星星公式,將圓形轉(zhuǎn)換成星星狀 for 循環(huán)產(chǎn)生隨機(jī)位置星星。

如何畫(huà)星星?(公式解析)(圖片來(lái)源百度)

星星有內(nèi)切圓和外切圓,每?jī)蓚€(gè)點(diǎn)之間的角度是固定的,因此可得到星星的每個(gè)點(diǎn)的坐標(biāo),畫(huà)出星星。

隨機(jī)產(chǎn)生星星for (var i = 0; i < 5; i++) {
_ctx.lineTo(Math.cos((18+72*i)/180*Math.PI)*arc.r+arc.x, -Math.sin((18+72*i)/180*Math.PI)*arc.r+arc.y);
_ctx.lineTo(Math.cos((54+72*i)/180*Math.PI)*arc.r/2+arc.x, -Math.sin((54+72*i)/180*Math.PI)*arc.r/2+arc.y); }3.4 隨機(jī)產(chǎn)生顏色。

Math函數(shù)隨機(jī)產(chǎn)生0-225的RGB值。

隨機(jī)顏色 _ctx.fillStyle="rgba(" + r + "," + g + "," + b + "," + a + ")"; _ctx.fill(); _ctx.strokeStyle="rgba(" + r + "," + g + "," + b + "," + a + ")"; _ctx.stroke(); }3.5. 調(diào)用draw()方法實(shí)現(xiàn)功能。
darw();


審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • javascript
    +關(guān)注

    關(guān)注

    0

    文章

    519

    瀏覽量

    53888
  • Canvas
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    10999
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Tailwind CSS v4.0發(fā)布首個(gè)Beta版本

    Tailwind CSS 是一個(gè)為快速開(kāi)發(fā)而精心設(shè)計(jì)的原子類(lèi) CSS 框架,它提供了充滿設(shè)計(jì)感和應(yīng)用程序至上的能力來(lái)創(chuàng)建組件,它在最新的 2.0 版本中加入了暗黑模式,開(kāi)箱即用。
    的頭像 發(fā)表于 11-25 10:02 ?210次閱讀
    Tailwind <b class='flag-5'>CSS</b> v4.0發(fā)布首個(gè)Beta版本

    Taro 鴻蒙技術(shù)內(nèi)幕系列(二):如何讓 W3C 標(biāo)準(zhǔn)的 CSS跑在鴻蒙上

    HarmonyOS 采用自研的 ArkUI 框架作為原生 UI 開(kāi)發(fā)方案,這套方案有完善的布局系統(tǒng)和樣式控制,但是他的標(biāo)準(zhǔn)與 W3C 的 CSS 標(biāo)準(zhǔn)存在不一致性。這意味著,如果 Taro 直接
    的頭像 發(fā)表于 10-31 10:54 ?183次閱讀
    Taro 鴻蒙技術(shù)內(nèi)幕系列(二):如何讓 W3C 標(biāo)準(zhǔn)的 <b class='flag-5'>CSS</b>跑在鴻蒙上

    研發(fā)都應(yīng)該了解的如何在vite中接入現(xiàn)代化css工程化方案

    好的css工程化方案可以增強(qiáng)我們項(xiàng)目的可維護(hù)性、提高樣式的復(fù)用性、進(jìn)行自動(dòng)化處理等,在提高頁(yè)面加載速度和性能的同時(shí),我們可以有更多的精力進(jìn)行js邏輯的處理。
    的頭像 發(fā)表于 10-25 17:25 ?397次閱讀

    JS實(shí)現(xiàn)簡(jiǎn)單的屏幕錄像機(jī)

    作者:京東保險(xiǎn) 張潔 本文將介紹如何用JS實(shí)現(xiàn)簡(jiǎn)單的屏幕錄像機(jī)。 一、錄制準(zhǔn)備 創(chuàng)建一個(gè)按鈕 ? Start recording ? 書(shū)寫(xiě)JavaScript ? var
    的頭像 發(fā)表于 10-09 15:27 ?161次閱讀

    鴻蒙跨端實(shí)踐-JS虛擬機(jī)架構(gòu)實(shí)現(xiàn)

    類(lèi)似的框架,我們需要自行實(shí)現(xiàn)以確保核心基礎(chǔ)能力的完整。 鴻蒙虛擬機(jī)的開(kāi)發(fā)經(jīng)歷了從最初 ArkTs2V8 到 JSVM + Roma新架構(gòu)方案 。在此過(guò)程中,我們實(shí)現(xiàn)了完整的鴻蒙版的“J2V8”和 基于系統(tǒng)JSVM的JS虛擬機(jī)框架
    的頭像 發(fā)表于 09-30 14:42 ?2441次閱讀
    鴻蒙跨端實(shí)踐-<b class='flag-5'>JS</b>虛擬機(jī)架構(gòu)<b class='flag-5'>實(shí)現(xiàn)</b>

    推薦一個(gè)支持js的嵌入式設(shè)備開(kāi)發(fā)平臺(tái)

    可以通過(guò)vscode開(kāi)發(fā)js,實(shí)時(shí)推送js代碼到設(shè)備里運(yùn)行,無(wú)需編譯,支持屏幕,感興趣的可以看看 https://github.com/duoxianwulian/dxdop 提供很多js
    發(fā)表于 09-04 14:04

    雙軸測(cè)徑儀的四種樣式!

    儀設(shè)計(jì)了四種外觀樣式。 45°角布置的開(kāi)口測(cè)徑儀 這個(gè)樣式的雙軸測(cè)徑儀是目前大部分產(chǎn)線所使用的,樣式簡(jiǎn)單大氣。用于外徑及橢圓度尺寸的檢測(cè)。 45°角布置的閉口測(cè)徑儀 該樣式的雙軸測(cè)徑儀
    發(fā)表于 08-27 17:42

    PGA900能直接在CSS上編程嗎?

    您好,PGA900能直接在CSS上編程嗎? 可以通過(guò)XDS200下載程序到PGA900上面嗎?
    發(fā)表于 08-08 07:31

    bootstrap框架和vue框架的區(qū)別

    響應(yīng)式移動(dòng)優(yōu)先的網(wǎng)頁(yè)。Bootstrap的核心設(shè)計(jì)理念是“移動(dòng)優(yōu)先”,即優(yōu)先考慮移動(dòng)設(shè)備的顯示效果,然后通過(guò)媒體查詢(xún)等技術(shù)實(shí)現(xiàn)對(duì)不同設(shè)備的適配。Bootstrap提供了一套豐富的CSS
    的頭像 發(fā)表于 07-11 09:55 ?903次閱讀

    芯海應(yīng)用筆記:CSS34P16P(A)型應(yīng)用說(shuō)明文檔

    Type-C 和 USB 供電端口控制解決方案。芯片可根據(jù)用戶(hù)需求靈活配置,操作簡(jiǎn)便, 可快速實(shí)現(xiàn)方案功能。*附件:CSS34P16應(yīng)用說(shuō)明文檔.pdf
    發(fā)表于 05-16 14:46

    OpenHarmony實(shí)戰(zhàn)開(kāi)發(fā)-menu開(kāi)發(fā)指導(dǎo)

    3</option> </menu> </div> html /* xxx.css */ .container
    發(fā)表于 04-30 14:41

    OpenHarmony實(shí)戰(zhàn)開(kāi)發(fā)-switch開(kāi)發(fā)指導(dǎo)

    ;gt;</switch> </div> html /* xxx.css */ .container { flex-direction
    發(fā)表于 04-30 14:08

    Arm新Arm Neoverse計(jì)算子系統(tǒng)(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3

    Arm宣布了兩款新的Arm Neoverse計(jì)算子系統(tǒng)(CSS),它們基于“迄今為止最好的一代Neoverse技術(shù)”。是什么讓這些新產(chǎn)品在擁擠的計(jì)算技術(shù)領(lǐng)域脫穎而出? Arm的兩個(gè)新Arm
    的頭像 發(fā)表于 04-24 17:53 ?1099次閱讀
    Arm新Arm Neoverse計(jì)算子系統(tǒng)(<b class='flag-5'>CSS</b>):Arm Neoverse <b class='flag-5'>CSS</b> V3和Arm Neoverse <b class='flag-5'>CSS</b> N3

    HarmonyOS開(kāi)發(fā)實(shí)例:【圖片編輯應(yīng)用】

    通過(guò)動(dòng)態(tài)設(shè)置元素樣式方式,實(shí)現(xiàn)幾種常見(jiàn)的圖片操作,包括裁剪、旋轉(zhuǎn)、縮放和鏡像。
    的頭像 發(fā)表于 04-23 09:42 ?478次閱讀
    HarmonyOS開(kāi)發(fā)實(shí)例:【圖片編輯應(yīng)用】

    鴻蒙ArkTS的起源和簡(jiǎn)介

    交互問(wèn)題,它和HTML(負(fù)責(zé)頁(yè)面內(nèi)容)、CSS(負(fù)責(zé)頁(yè)面布局和樣式)共同組成了Web頁(yè)面/應(yīng)用開(kāi)發(fā)的基礎(chǔ)。隨著Web和瀏覽器的普及,以及Node.js進(jìn)一步將
    發(fā)表于 01-16 16:23