国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) web前端 css教學(xué) 使用 CSS 和 JavaScript 適應(yīng)使用者動(dòng)作和主題偏好

使用 CSS 和 JavaScript 適應(yīng)使用者動(dòng)作和主題偏好

Dec 05, 2024 am 07:35 AM

作者:Oscar Jite-Orimiono??

網(wǎng)路充滿(mǎn)了色彩、動(dòng)畫(huà)和圖形效果,這些可以使網(wǎng)站既迷人又過(guò)度刺激。作為前端愛(ài)好者和專(zhuān)業(yè)人士,我們需要在充滿(mǎn)活力的視覺(jué)效果與易於使用、以用戶(hù)為中心的選項(xiàng)之間取得平衡,以適應(yīng)那些喜歡更柔和體驗(yàn)的人。

在本文中,我們將透過(guò)查看以下項(xiàng)目來(lái)事半功倍:

  • 學(xué)習(xí)使用偏好減少運(yùn)動(dòng)和偏好顏色方案等媒體查詢(xún)來(lái)管理動(dòng)畫(huà)和主題
  • 遵循@media規(guī)則中的正確語(yǔ)法來(lái)應(yīng)用使用者首選項(xiàng)
  • 查看「prefers-reduced-data」等選項(xiàng),可最大程度地減少連接受限的使用者的資料使用量

Adapting to user motion and theme preferences with CSS and JavaScript

運(yùn)動(dòng)偏好

對(duì)於許多用戶(hù)來(lái)說(shuō),動(dòng)畫(huà)可以增強(qiáng)他們?cè)诰W(wǎng)站上的體驗(yàn),但它們可能會(huì)妨礙其他用戶(hù)。過(guò)多的運(yùn)動(dòng)可能會(huì)導(dǎo)致不適或分散注意力,也可能導(dǎo)致表現(xiàn)問(wèn)題。

prefers-reduced-motion 媒體查詢(xún)檢查使用者是否在其電腦上啟用了限制網(wǎng)站動(dòng)畫(huà)的設(shè)定。您可以為喜歡減少動(dòng)作的使用者修改或完全停用動(dòng)畫(huà)。

首先,讓我們建立一個(gè)帶有一些動(dòng)畫(huà)的網(wǎng)頁(yè)。動(dòng)畫(huà)條紋背景怎麼樣?

這是該頁(yè)面的 HTML:

<div>



<p>And here’s the CSS:<br>
</p>

<pre class="brush:php;toolbar:false">.container {
  position: relative;
  width: 100%;
  height: 100%;

  &::before {
    position: absolute;
    content: "";
    top: 0;
    left: 0;
    height: 100%;
    width: calc(100% + 110px);
    background: repeating-linear-gradient(
      45deg,
      #553c9a 0%,
      #553c9a 25%,
      #301934 25%,
      #301934 50%
    );
    background-size: 110px 110px;
    animation: animateStripes 2s linear infinite;
  }
}
@keyframes animateStripes {
 to {
    transform: translateX(-110px);
  }
}

這是帶有動(dòng)畫(huà)條紋的效果:

Adapting to user motion and theme preferences with CSS and JavaScript

無(wú)首選項(xiàng)語(yǔ)法適用於沒(méi)有首選項(xiàng)設(shè)定的用戶(hù),而reduce則適用於有首選項(xiàng)設(shè)定的用戶(hù)。您可以為喜歡減少運(yùn)動(dòng)的使用者完全停用或修改動(dòng)畫(huà)。以下是如何使用prefers-reduced-motion媒體查詢(xún)停用行動(dòng)背景:

@media (prefers-reduced-motion: reduce) {
  .container::before {
    animation: none;
  }
}

附註:在執(zhí)行Windows 11 的裝置上,您可以透過(guò)進(jìn)入設(shè)定、選擇輔助功能、然後視覺(jué)效果並關(guān)閉來(lái)停用動(dòng)畫(huà)動(dòng)畫(huà)效果。對(duì)於幾乎所有類(lèi)型的設(shè)備/作業(yè)系統(tǒng),該過(guò)程都是類(lèi)似的。

這是一個(gè) CodePen:

您可以選擇更改動(dòng)畫(huà)類(lèi)型而不是停用它們。例如,對(duì)於喜歡減少運(yùn)動(dòng)的用戶(hù),您可以使用淡入動(dòng)畫(huà),而不是滑入變換動(dòng)畫(huà)。

如果您使用捲動(dòng)動(dòng)畫(huà)且元素從頁(yè)面一側(cè)滑入,則可以切換到更簡(jiǎn)單的效果,例如淡入。

這是簡(jiǎn)單捲動(dòng)動(dòng)畫(huà)的 CSS:

<div>



<p>And here’s the CSS:<br>
</p>

<pre class="brush:php;toolbar:false">.container {
  position: relative;
  width: 100%;
  height: 100%;

  &::before {
    position: absolute;
    content: "";
    top: 0;
    left: 0;
    height: 100%;
    width: calc(100% + 110px);
    background: repeating-linear-gradient(
      45deg,
      #553c9a 0%,
      #553c9a 25%,
      #301934 25%,
      #301934 50%
    );
    background-size: 110px 110px;
    animation: animateStripes 2s linear infinite;
  }
}
@keyframes animateStripes {
 to {
    transform: translateX(-110px);
  }
}

在此範(fàn)例中,框元素將從網(wǎng)頁(yè)右側(cè)淡入並向左側(cè)移動(dòng)。此運(yùn)動(dòng)由變換屬性控制,因此您可以簡(jiǎn)單地為喜歡減少運(yùn)動(dòng)的用戶(hù)刪除它:

@media (prefers-reduced-motion: reduce) {
  .container::before {
    animation: none;
  }
}

沒(méi)有偏好的使用者在滾動(dòng)時(shí)會(huì)看到這個(gè):

Adapting to user motion and theme preferences with CSS and JavaScript

這是使用reduce的使用者將看到的內(nèi)容:

Adapting to user motion and theme preferences with CSS and JavaScript

透過(guò)偏好減少運(yùn)動(dòng)媒體查詢(xún),您可以根據(jù)使用者的需求調(diào)整/減慢複雜的動(dòng)畫(huà)或完全停用它們。

這裡有一個(gè) CodePen 可以與之交互,您可以在設(shè)備上禁用動(dòng)畫(huà)以查看差異:

患有暈動(dòng)病和眩暈等前庭疾病的使用者在觀(guān)看動(dòng)畫(huà)時(shí)可能會(huì)感到迷失方向或頭暈。對(duì)於喜歡簡(jiǎn)單 UI 的用戶(hù)來(lái)說(shuō),動(dòng)畫(huà)也會(huì)分散他們的注意力。

擁有減少運(yùn)動(dòng)的選項(xiàng)將使網(wǎng)站對(duì)於運(yùn)動(dòng)敏感的用戶(hù)使用起來(lái)更加舒適。

主題偏好

現(xiàn)在,網(wǎng)站和應(yīng)用程式可以選擇從淺色主題切換到深色主題,這是一種常見(jiàn)的做法。有些網(wǎng)站會(huì)根據(jù)系統(tǒng)偏好為您提供額外的選項(xiàng)。

prefers-color-scheme 媒體查詢(xún)可偵測(cè)使用者是否喜歡深色或淺色主題。用戶(hù)可以根據(jù)自己的裝置設(shè)定獲得預(yù)設(shè)主題。

這是一個(gè)淺色網(wǎng)頁(yè):

Adapting to user motion and theme preferences with CSS and JavaScript

這是使用者在預(yù)設(shè)主題為淺色時(shí)會(huì)看到的內(nèi)容。然後,您可以使用首選顏色方案來(lái)建立深色主題:

.box {
  transform: translateX(100%);
  opacity: 0;
  transition: transform 0.5s linear, opacity 0.5s linear;
}
.reveal {
  transform: translateX(0);
  opacity: 1;
}
@keyframes reveal {
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

為淺色和深色模式編寫(xiě)這樣的 CSS 規(guī)則可能會(huì)耗費(fèi)太多工作,尤其是當(dāng)多個(gè)屬性共享相同值時(shí)。使用變數(shù)來(lái)繪製配色方案將幫助您避免重複:

@media (prefers-reduced-motion: reduce) {
  .box {
    transform: translateX(0);
  }
}

這是與之前相同的頁(yè)面的螢?zāi)唤貓D,但啟動(dòng)了黑暗模式:

Adapting to user motion and theme preferences with CSS and JavaScript

這是一個(gè)您可以與之互動(dòng)的 CodePen:

prefers-color-scheme 不限於顏色;你可以用它來(lái)交換圖片:

<div>



<p>And here’s the CSS:<br>
</p>

<pre class="brush:php;toolbar:false">.container {
  position: relative;
  width: 100%;
  height: 100%;

  &::before {
    position: absolute;
    content: "";
    top: 0;
    left: 0;
    height: 100%;
    width: calc(100% + 110px);
    background: repeating-linear-gradient(
      45deg,
      #553c9a 0%,
      #553c9a 25%,
      #301934 25%,
      #301934 50%
    );
    background-size: 110px 110px;
    animation: animateStripes 2s linear infinite;
  }
}
@keyframes animateStripes {
 to {
    transform: translateX(-110px);
  }
}

以下是淺色模式的網(wǎng)頁(yè)截圖:

Adapting to user motion and theme preferences with CSS and JavaScript
背景照片由 Unsplash 上的 Plufow Le Studio 拍攝。

這是深色模式的頁(yè)面:

[標(biāo)題>
背景照片由 Unsplash 上的 Plufow Le Studio 拍攝。

最佳實(shí)踐

使用前請(qǐng)務(wù)必測(cè)試顏色對(duì)比度,以確保更好的可讀性。有多種工具可以幫助您選擇要使用的顏色。

切換主題時(shí)考慮所有可能需要更新的元素,而不僅僅是背景和文字。這就是為什麼使用 CSS 變數(shù)來(lái)儲(chǔ)存主題是一個(gè)好主意,您可能需要提供按鈕、陰影、邊框、連結(jié)等的替代項(xiàng)。

執(zhí)行

實(shí)現(xiàn)使用者首選項(xiàng)的最直接方法是使用@media規(guī)則。您必須指定運(yùn)動(dòng)或主題的首選項(xiàng),否則媒體查詢(xún)內(nèi)的 CSS 規(guī)則將覆寫(xiě)任何其他規(guī)則或裝置設(shè)定。

這意味著對(duì)於運(yùn)動(dòng)偏好,您必須指定它是減少還是無(wú)偏好,對(duì)於主題,它是淺色還是深色:

@media (prefers-reduced-motion: reduce) {
  .container::before {
    animation: none;
  }
}

這在測(cè)試程式碼時(shí)很有用,但請(qǐng)務(wù)必在實(shí)作之前指定確切的首選項(xiàng)。

使用 JavaScript 實(shí)作使用者首選項(xiàng)

使用者偏好也可以使用 JavaScript 來(lái)實(shí)現(xiàn)。您可以根據(jù)使用者偏好為特定元素新增類(lèi)別。

使用我們的第一個(gè)帶有動(dòng)畫(huà)條紋的範(fàn)例,以下是如何使用 JavaScript 檢查使用者偏好的方法:

.box {
  transform: translateX(100%);
  opacity: 0;
  transition: transform 0.5s linear, opacity 0.5s linear;
}
.reveal {
  transform: translateX(0);
  opacity: 1;
}
@keyframes reveal {
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

這是 CSS:

@media (prefers-reduced-motion: reduce) {
  .box {
    transform: translateX(0);
  }
}

請(qǐng)注意,偽元素不是 DOM 的一部分,無(wú)法在 JavaScript 中直接選擇,因此採(cǎi)用了這種方法。

使用資料屬性實(shí)現(xiàn)使用者偏好

自訂 HTML 資料屬性和 JavaScript 可讓您實(shí)作使用者首選項(xiàng)。資料屬性可讓您儲(chǔ)存 HTML 元素的資訊而不影響文件的結(jié)構(gòu)。它們使用資料前綴,並且可以使用 JavaScript 輕鬆操作:

@media (prefers-color-scheme: dark) {
    #main {
    background-image: repeating-linear-gradient(
      45deg,
      #553c9a,
    #553c9a 50px,
    #3a1e4f 50px,
    #3a1e4f 100px,
    #301934 100px,
    #301934 150px
    );
  }
  nav{
    background: rgba(0, 0, 0, 0.5);
  }
  .logo a,
  nav ul li a{
    color: #b393d3;
  }
  .content {
    background: rgba(0, 0, 0, 0.5);
  }
  .content h1 {
    color: #b393d3;
  }
  .content p{
    color: #b393d3;
  }
}

這是 CSS:

<div>



<p>And here’s the CSS:<br>
</p>

<pre class="brush:php;toolbar:false">.container {
  position: relative;
  width: 100%;
  height: 100%;

  &::before {
    position: absolute;
    content: "";
    top: 0;
    left: 0;
    height: 100%;
    width: calc(100% + 110px);
    background: repeating-linear-gradient(
      45deg,
      #553c9a 0%,
      #553c9a 25%,
      #301934 25%,
      #301934 50%
    );
    background-size: 110px 110px;
    animation: animateStripes 2s linear infinite;
  }
}
@keyframes animateStripes {
 to {
    transform: translateX(-110px);
  }
}

減少數(shù)據(jù)使用

雖然仍處?kù)秾?shí)驗(yàn)階段,prefers-reduced-data 是一種建議的媒體查詢(xún),可讓網(wǎng)站偵測(cè)使用者是否喜歡保存資料。

它使用與prefers-reduced-motion媒體查詢(xún)相同的語(yǔ)法,對(duì)於喜歡輕量級(jí)內(nèi)容的使用者來(lái)說(shuō)是減少的,對(duì)於沒(méi)有資料偏好的使用者來(lái)說(shuō)是無(wú)偏好的。

它的一些潛在應(yīng)用包括減少高解析度圖像、載入替代字體、停用自動(dòng)播放影片以及延遲載入非關(guān)鍵內(nèi)容。此媒體查詢(xún)可以幫助改善資料計(jì)劃有限或昂貴或網(wǎng)路連線(xiàn)不可靠的使用者的載入時(shí)間。

最後的話(huà)

尊重使用者偏好對(duì)於增強(qiáng)每個(gè)使用者的體驗(yàn)至關(guān)重要。在本教學(xué)中,您學(xué)習(xí)如何使用prefers-reduced-motion 和prefers-color-scheme 媒體查詢(xún)來(lái)偵測(cè)使用者的動(dòng)作和主題設(shè)定。還有關(guān)於對(duì)比度和透明度偏好的 @media 規(guī)則。

身為 Web 開(kāi)發(fā)人員,您是架構(gòu)師,有能力讓每個(gè)網(wǎng)站對(duì)每種類(lèi)型的使用者來(lái)說(shuō)都舒適、可存取且有效率。


您的前端是否佔(zhàn)用了使用者的 CPU?

隨著 Web 前端變得越來(lái)越複雜,資源貪婪的功能對(duì)瀏覽器的要求越來(lái)越高。如果您有興趣監(jiān)控和追蹤生產(chǎn)中所有使用者的客戶(hù)端 CPU 使用情況、記憶體使用情況等,請(qǐng)嘗試 LogRocket。

Adapting to user motion and theme preferences with CSS and JavaScript

LogRocket 就像是網(wǎng)路和行動(dòng)應(yīng)用程式的 DVR,記錄網(wǎng)路應(yīng)用程式、行動(dòng)應(yīng)用程式或網(wǎng)站中發(fā)生的所有情況。您無(wú)需猜測(cè)問(wèn)題發(fā)生的原因,而是可以匯總並報(bào)告關(guān)鍵的前端效能指標(biāo)、重播用戶(hù)會(huì)話(huà)以及應(yīng)用程式狀態(tài)、記錄網(wǎng)路請(qǐng)求並自動(dòng)顯示所有錯(cuò)誤。

現(xiàn)代化偵錯(cuò) Web 和行動(dòng)應(yīng)用程式的方式 - 開(kāi)始免費(fèi)監(jiān)控。

以上是使用 CSS 和 JavaScript 適應(yīng)使用者動(dòng)作和主題偏好的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話(huà)題

什麼是'渲染障礙CSS”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會(huì)阻塞頁(yè)面渲染是因?yàn)闉g覽器默認(rèn)將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量?jī)?nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢(xún)樣式。 1.提取關(guān)鍵CSS並內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過(guò)JavaScript;3.使用media屬性?xún)?yōu)化加載如打印樣式;4.壓縮合併CSS減少請(qǐng)求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過(guò)度拆分與復(fù)雜腳本控制。

外部與內(nèi)部CSS:最好的方法是什麼? 外部與內(nèi)部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

什麼是AutoPrefixer,它如何工作? 什麼是AutoPrefixer,它如何工作? Jul 02, 2025 am 01:15 AM

Autoprefixer是一個(gè)根據(jù)目標(biāo)瀏覽器範(fàn)圍自動(dòng)為CSS屬性添加廠(chǎng)商前綴的工具。 1.它解決了手動(dòng)維護(hù)前綴易出錯(cuò)的問(wèn)題;2.通過(guò)PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設(shè)置browserslist、在構(gòu)建流程中啟用;4.注意事項(xiàng)有不手動(dòng)加前綴、保持配置更新、非所有屬性都加前綴、建議配合預(yù)處理器使用。

CSS案例靈敏度:了解重要的 CSS案例靈敏度:了解重要的 Jun 20, 2025 am 12:09 AM

cssismostlycaseminemintiment,buturlsandfontfamilynamesarecase敏感。 1)屬性和valueslikeColor:紅色; prenotcase-sensive.2)urlsmustmustmatchtheserver'server'scase,例如

什麼是圓錐級(jí)函數(shù)? 什麼是圓錐級(jí)函數(shù)? Jul 01, 2025 am 01:16 AM

theconic-Gradient()functionIncsscreatesCircularGradientsThatRotateColorStopSaroundAcentralPoint.1.IsidealForPieCharts,ProgressIndicators,colordichers,colorwheels和decorativeBackgrounds.2.itworksbysbysbysbydefindefingincolordefingincolorstopsatspecificains off.

CSS教程,用於創(chuàng)建粘性標(biāo)頭或頁(yè)腳 CSS教程,用於創(chuàng)建粘性標(biāo)頭或頁(yè)腳 Jul 02, 2025 am 01:04 AM

TocreatestickyheadersandfooterswithCSS,useposition:stickyforheaderswithtopvalueandz-index,ensuringparentcontainersdon’trestrictit.1.Forstickyheaders:setposition:sticky,top:0,z-index,andbackgroundcolor.2.Forstickyfooters,betteruseposition:fixedwithbot

CSS自定義屬性的範(fàn)圍是什麼? CSS自定義屬性的範(fàn)圍是什麼? Jun 25, 2025 am 12:16 AM

CSS自定義屬性的作用域取決於其聲明的上下文,全局變量通常定義在:root中,而局部變量則定義在特定選擇器內(nèi),以便組件化和隔離樣式。例如,定義在.card類(lèi)中的變量?jī)H對(duì)匹配該類(lèi)的元素及其子元素可用。最佳實(shí)踐包括:1.使用:root定義全局變量如主題色;2.在組件內(nèi)部定義局部變量以實(shí)現(xiàn)封裝;3.避免重複聲明同一變量;4.注意選擇器特異性可能引發(fā)的覆蓋問(wèn)題。此外,CSS變量區(qū)分大小寫(xiě),且應(yīng)在使用前定義以避免錯(cuò)誤。若變量未定義或引用失敗,則會(huì)採(cǎi)用回退值或默認(rèn)值initial。調(diào)試時(shí)可通過(guò)瀏覽器開(kāi)發(fā)者工

解鎖CSS動(dòng)畫(huà)的潛力:深度潛水 解鎖CSS動(dòng)畫(huà)的潛力:深度潛水 Jun 20, 2025 am 12:14 AM

cssanimationsenhancewebpagesbyimprovinguserexperienceandsiteFunctionallity.1)usetransitionsforsmoothstylechanges,asinthebuttoncolorexample.2)losplyKeyKeyframesforeSfordEteTailEdAnimations.3)

See all articles