日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端每日实战:116# 视频演示如何用 CSS 和原生 JS 开发一个监控网络连接状态的页面...

發布時間:2025/3/8 HTML 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端每日实战:116# 视频演示如何用 CSS 和原生 JS 开发一个监控网络连接状态的页面... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

效果預覽

按下右側的“點擊預覽”按鈕可以在當前頁面預覽,點擊鏈接可以全屏預覽。

https://codepen.io/comehope/pen/oPjWvw

可交互視頻

此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。

請用 chrome, safari, edge 打開觀看。

https://scrimba.com/p/pEgDAM/ceNm8CW

源代碼下載

每日前端實戰系列的全部源代碼請從 github 下載:

https://github.com/comehope/front-end-daily-challenges

代碼解讀

navigator.onLine 屬性用于獲取在線狀態,再配合相應的事件觸發,就可以開發一個在線檢測工具了。整個過程分成兩部分,先畫出視覺效果,再檢測在線/離線狀態。

定義 dom,容器中包含客戶端、信號和服務器:

<div class="detector"><div class="client"></div><div class="signal"></div><div class="server"></div> </div>

居中顯示:

body {margin: 0;height: 100vh;display: flex;align-items: center;justify-content: center; }

在頂部增加一個橫條,用于顯示當前狀態是在線還是離線,用綠色表示在線:

:root {--status-color: green; }body {background: linear-gradient(var(--status-color) 5vh, #ccc 5vh); }

定義容器尺寸:

.detector {width: 40em;height: 14em;font-size: 10px; }

定義子元素(客戶端、信號、服務器)的整體布局和主色:

.detector {display: flex;justify-content: space-between;align-items: center;color: #333; }

設置子元素(客戶端、信號、服務器)和它們的偽元素的共有屬性:

.detector > * {position: relative;box-sizing: border-box; }.detector > *::before, .detector > *::after {content: '';position: absolute;box-sizing: border-box; }

畫出客戶端的顯示器:

.client {width: 17em;height: 10em;border: 0.5em solid;border-radius: 0.5em; }

用偽元素畫出顯示器的底座:

.client {display: flex;flex-direction: column;align-items: center;margin-top: -4em; }.client::before {width: 1.5em;height: 3em;background-color: currentColor;top: 9.5em; }.client::after {width: 5em;height: 1em;background-color: currentColor;border-radius: 0.3em;top: 12.5em; }

畫出服務器的機箱:

.server {width: 7em;height: 14em;border: 0.5em solid;border-radius: 0.5em; }

用偽元素畫出硬盤,留意此處陰影的用法,用陰影畫出了第二塊硬盤:

.server::before {width: 5em;height: 1em;background-color: currentColor;border-radius: 0.2em;top: 8em;left: 0.5em;box-shadow: 0 1.5em 0; }

用偽元素畫出按鈕,和上面陰影同樣的用法,這次用陰影畫出了第二個按鈕:

.server::after {width: 0.6em;height: 0.6em;background-color: currentColor;border-radius: 50%;right: 1.5em;bottom: 0.5em;box-shadow: 1em 0 0 0.1em; }

畫出信號,注意配色用的是代表在線/離線的顏色,目前是綠色:

.signal, .signal::before, .signal::after {width: 1em;height: 1em;background-color: var(--status-color);border-radius: 50%; }.signal::before {right: 2.5em; }.signal::after {left: 2.5em; }

給信號增加動畫效果:

.signal, .signal::before, .signal::after {animation: blink 0.6s infinite; }@keyframes blink {50% {filter: opacity(0.1);} }

為第 2 個信號和第 3 個信號設置動畫延時,延時的值用變量定義:

:root {--second-signal-delay: 0.2s;--third-signal-delay: 0.4s; }.signal::before {animation-delay: var(--second-signal-delay); }.signal::after {animation-delay: var(--third-signal-delay); }

至此,視覺效果已經完成,目前是在線狀態的效果,在 :root 中一共定義了 3 個變量,頂部橫條和信號是綠色,信號燈依次閃爍表示正在傳輸數據:

:root {--status-color: green;--second-signal-delay: 0.2s;--third-signal-delay: 0.4s; }

通過修改這 3 個變量的值,可以得到離線狀態的視覺效果,頂部橫條和信號變為紅色,信號燈一起閃爍表示線路不通:

:root {--status-color: orangered;--second-signal-delay: 0s;--third-signal-delay: 0s; }

接下來通過檢測在線/離線狀態,動態應用這 2 種效果。

定義在線狀態主題:

const ONLINE_THEME = {statusColor: 'green',secondSignalDelay: '0.2s',thirdSignalDelay: '0.4s' }

類似地,定義離線狀態主題:

const OFFLINE_THEME = {statusColor: 'orangered',secondSignalDelay: '0s',thirdSignalDelay: '0s' }

創建一個函數,用于根據在線/離線狀態顯示不同的主題:

function detectOnlineStatus() {let theme = navigator.onLine ? ONLINE_THEME : OFFLINE_THEMElet root = document.documentElementroot.style.setProperty('--status-color', theme.statusColor)root.style.setProperty('--second-signal-delay', theme.secondSignalDelay)root.style.setProperty('--third-signal-delay', theme.thirdSignalDelay) }detectOnlineStatus()

現在,關掉 wifi 連接,然后刷新頁面,頁面會采用紅色主題;再打開 wifi 連接,然后刷新頁面,頁面會采用綠色主題。

接下來把檢測函數與系統事件綁定,當連接斷開或重新連接時,頁面會自動設置主題,不用手動刷新頁面了:

window.addEventListener('online', detectOnlineStatus) window.addEventListener('offline', detectOnlineStatus)

大功告成!

總結

以上是生活随笔為你收集整理的前端每日实战:116# 视频演示如何用 CSS 和原生 JS 开发一个监控网络连接状态的页面...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美性生交xxxxxdddd | 亚洲少妇一区 | 播放黄色一级片 | 天天干天天爱天天射 | 黑人巨大精品欧美一区二区 | 在线观看91视频 | 欧美在线网站 | 国产日韩欧美91 | 91免费大片 | 国产精品网友自拍 | 久久免费少妇高潮久久精品99 | 少女忠诚电影高清免费 | 久久精品国产亚洲av麻豆 | 国产成人av一区二区三区在线观看 | 黄色国产大片 | 逼逼av| 91在线视频观看 | 亚洲一区二区三区四区五区xx | 国产视频精品一区二区三区 | 老王66福利网 | 国产精品久久久久9999爆乳 | 国产精品久久久久久久久久久新郎 | 男生草女生的视频 | 欧美操穴视频 | 日日骚一区 | 久久国产精品一区二区 | 欧美91视频| 精品视频区 | 自拍视频在线观看 | 老太太av | 封神榜二在线高清免费观看 | 性色欲网站人妻丰满中文久久不卡 | 国产不卡一区 | 东方av正在进入 | 福利影院在线观看 | 尹人成人| 毛片网在线观看 | 国产情侣露脸自拍 | 欧美国产三级 | 国产成人超碰人人澡人人澡 | 岛国av一区二区三区 | 黄色麻豆网站 | 国产成人无码一区二区在线观看 | 国产福利在线视频观看 | 欧美在线观看不卡 | 中文字幕一区二区三区免费视频 | 国产真人做爰毛片视频直播 | 欧美性大战久久久 | 欧美色激情| 欧美精品v国产精品v日韩精品 | 色热热 | 中文字幕乱码中文乱码b站 国产一区二区三区在线观看视频 | 成人短视频在线播放 | 午夜精品久久久久久久四虎美女版 | 粉嫩av一区二区 | 国产一区二区三区在线免费观看 | 日本一道在线 | 91精品999 | av少妇| 神马久久网 | 免费观看一区二区三区 | 交专区videossex| 亚洲欧美日韩精品一区 | 成年人黄色免费视频 | 深夜天堂 | 欧洲成人在线视频 | 无码人妻aⅴ一区二区三区日本 | 日韩欧美一二三区 | 国产精品爽 | 精品无码m3u8在线观看 | 毛片亚洲av无码精品国产午夜 | 亚洲蜜臀av一区二区三区 | 黄色小网站在线观看 | 在线天堂www在线国语对白 | 成人动态视频 | 久久青草视频 | 成人免费毛片xxx | 精品人妻无码中文字幕18禁 | 狼人伊人久久 | 欧美mv日韩mv国产 | 男人的天堂在线观看av | 亚洲av无码一区二区三区观看 | 麻豆亚洲av熟女国产一区二 | 99久久久无码国产精品性 | 又大又硬又爽免费视频 | 欧美午夜激情视频 | 制服丝袜av一区二区三区下载 | 四虎在线网址 | 欧美成人精品二区三区99精品 | 根深蒂固在线观看 | 亚洲天堂美女视频 | 亚洲男人的天堂在线视频 | 黄网av| 999久久久久久久久6666 | 欧美另类人妖 | 亚洲欧美一区二区三 | 精品国精品国产 | 看全黄大色黄大片 | 免费一级做a爰片久久毛片潮 |