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

首頁 web前端 css教程 使用 CSS 和 JavaScript 適應(yīng)用戶動作和主題偏好

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

Dec 05, 2024 am 07:35 AM

作者:Oscar Jite-Orimiono??

互聯(lián)網(wǎng)充滿了色彩、動畫和圖形效果,這些可以使網(wǎng)站既迷人又過度刺激。作為前端愛好者和專業(yè)人士,我們需要在充滿活力的視覺效果與易于使用、以用戶為中心的選項之間取得平衡,以適應(yīng)那些喜歡更柔和體驗的人。

在本文中,我們將通過查看以下項目來事半功倍:

  • 學(xué)習(xí)使用偏好減少運動和偏好顏色方案等媒體查詢來管理動畫和主題
  • 遵循@media規(guī)則中的正確語法來應(yīng)用用戶首選項
  • 查看“prefers-reduced-data”等選項,可最大程度地減少連接受限的用戶的數(shù)據(jù)使用

Adapting to user motion and theme preferences with CSS and JavaScript

運動偏好

對于許多用戶來說,動畫可以增強他們在網(wǎng)站上的體驗,但它們可能會妨礙其他用戶。過多的運動可能會導(dǎo)致不適或分散注意力,而且還可能導(dǎo)致性能問題。

prefers-reduced-motion 媒體查詢檢查用戶是否在其計算機上啟用了限制網(wǎng)站動畫的設(shè)置。您可以為喜歡減少動作的用戶修改或完全禁用動畫。

首先,讓我們創(chuàng)建一個帶有一些動畫的網(wǎng)頁。動畫條紋背景怎么樣?

這是該頁面的 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);
  }
}

這是帶有動畫條紋的效果:

Adapting to user motion and theme preferences with CSS and JavaScript

無首選項語法適用于沒有首選項設(shè)置的用戶,而reduce則適用于有首選項設(shè)置的用戶。您可以為喜歡減少運動的用戶完全禁用或修改動畫。以下是如何使用prefers-reduced-motion媒體查詢禁用移動背景:

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

旁注:在運行 Windows 11 的設(shè)備上,您可以通過進入設(shè)置、選擇輔助功能、然后視覺效果并關(guān)閉來禁用動畫動畫效果。對于幾乎所有類型的設(shè)備/操作系統(tǒng),該過程都是類似的。

這是一個 CodePen:

您可以選擇更改動畫類型而不是禁用它們。例如,對于喜歡減少運動的用戶,您可以使用淡入動畫,而不是滑入變換動畫。

如果您使用滾動動畫且元素從頁面一側(cè)滑入,則可以切換到更簡單的效果,例如淡入。

這是簡單滾動動畫的 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);
  }
}

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

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

沒有偏好的用戶在滾動時會看到這個:

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

通過偏好減少運動媒體查詢,您可以根據(jù)用戶的需求調(diào)整/減慢復(fù)雜的動畫或完全禁用它們。

這里有一個 CodePen 可以與之交互,您可以在設(shè)備上禁用動畫以查看差異:

患有暈動病和眩暈等前庭疾病的用戶在觀看動畫時可能會感到迷失方向或頭暈。對于喜歡簡單 UI 的用戶來說,動畫也會分散他們的注意力。

擁有減少運動的選項將使網(wǎng)站對于運動敏感的用戶使用起來更加舒適。

主題偏好

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

prefers-color-scheme 媒體查詢檢測用戶是否喜歡深色或淺色主題。用戶可以根據(jù)自己的設(shè)備設(shè)置獲得默認(rèn)主題。

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

Adapting to user motion and theme preferences with CSS and JavaScript

這是用戶在默認(rèn)主題為淺色時將看到的內(nèi)容。然后,您可以使用首選顏色方案來創(chuàng)建深色主題:

.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 規(guī)則可能會耗費太多工作,尤其是當(dāng)多個屬性共享相同值時。使用變量來繪制配色方案將幫助您避免重復(fù):

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

這是與之前相同的頁面的屏幕截圖,但激活了黑暗模式:

Adapting to user motion and theme preferences with CSS and JavaScript

這是一個您可以與之交互的 CodePen:

prefers-color-scheme 不僅限于顏色;你可以用它來交換圖像:

<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)頁截圖:

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

這是深色模式下的頁面:

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

最佳實踐

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

切換主題時考慮所有可能需要更新的元素,而不僅僅是背景和文本。這就是為什么使用 CSS 變量存儲主題是一個好主意,您可能需要提供按鈕、陰影、邊框、鏈接等的替代項。

執(zhí)行

實現(xiàn)用戶首選項的最直接方法是使用@media規(guī)則。您必須指定運動或主題的首選項,否則媒體查詢內(nèi)的 CSS 規(guī)則將覆蓋任何其他規(guī)則或設(shè)備設(shè)置。

這意味著對于運動偏好,您必須指定它是減少還是無偏好,對于主題,它是淺色還是深色:

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

這在測試代碼時很有用,但請務(wù)必在實現(xiàn)之前指定確切的首選項。

使用 JavaScript 實現(xiàn)用戶首選項

用戶偏好也可以使用 JavaScript 來實現(xiàn)。您可以根據(jù)用戶偏好向特定元素添加新類。

使用我們的第一個帶有動畫條紋的示例,以下是如何使用 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);
  }
}

請注意,偽元素不是 DOM 的一部分,無法在 JavaScript 中直接選擇,因此采用了這種方法。

使用數(shù)據(jù)屬性實現(xiàn)用戶偏好

自定義 HTML 數(shù)據(jù)屬性和 JavaScript 允許您實現(xiàn)用戶首選項。數(shù)據(jù)屬性允許您存儲 HTML 元素的信息而不影響文檔的結(jié)構(gòu)。它們使用數(shù)據(jù)前綴,并且可以使用 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ù)使用

雖然仍處于實驗階段,prefers-reduced-data 是一種建議的媒體查詢,允許網(wǎng)站檢測用戶是否喜歡保存數(shù)據(jù)。

它使用與prefers-reduced-motion媒體查詢相同的語法,對于喜歡輕量級內(nèi)容的用戶來說是減少的,對于沒有數(shù)據(jù)偏好的用戶來說是無偏好的。

它的一些潛在應(yīng)用包括減少高分辨率圖像、加載替代字體、禁用自動播放視頻以及延遲加載非關(guān)鍵內(nèi)容。此媒體查詢可以幫助改善數(shù)據(jù)計劃有限或昂貴或互聯(lián)網(wǎng)連接不可靠的用戶的加載時間。

最后的話

尊重用戶偏好對于增強每個用戶的體驗至關(guān)重要。在本教程中,您學(xué)習(xí)了如何使用prefers-reduced-motion 和prefers-color-scheme 媒體查詢來檢測用戶的動作和主題設(shè)置。還有關(guān)于對比度和透明度偏好的 @media 規(guī)則。

作為一名 Web 開發(fā)人員,您是架構(gòu)師,有能力讓每個網(wǎng)站對每種類型的用戶來說都舒適、可訪問且高效。


您的前端是否占用了用戶的 CPU?

隨著 Web 前端變得越來越復(fù)雜,資源貪婪的功能對瀏覽器的要求越來越高。如果您有興趣監(jiān)控和跟蹤生產(chǎn)中所有用戶的客戶端 CPU 使用情況、內(nèi)存使用情況等,請嘗試 LogRocket。

Adapting to user motion and theme preferences with CSS and JavaScript

LogRocket 就像網(wǎng)絡(luò)和移動應(yīng)用程序的 DVR,記錄網(wǎng)絡(luò)應(yīng)用程序、移動應(yīng)用程序或網(wǎng)站中發(fā)生的所有情況。您無需猜測問題發(fā)生的原因,而是可以匯總并報告關(guān)鍵的前端性能指標(biāo)、重放用戶會話以及應(yīng)用程序狀態(tài)、記錄網(wǎng)絡(luò)請求并自動顯示所有錯誤。

現(xiàn)代化調(diào)試 Web 和移動應(yīng)用程序的方式 - 開始免費監(jiān)控。

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

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

CSS會阻塞頁面渲染是因為瀏覽器默認(rèn)將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量內(nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。1.提取關(guān)鍵CSS并內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合并CSS減少請求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復(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

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

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

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

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

什么是圓錐級函數(shù)? 什么是圓錐級函數(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)頭或頁腳 CSS教程,用于創(chuàng)建粘性標(biāo)頭或頁腳 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自定義屬性的范圍是什么? CSS自定義屬性的范圍是什么? Jun 25, 2025 am 12:16 AM

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

解鎖CSS動畫的潛力:深度潛水 解鎖CSS動畫的潛力:深度潛水 Jun 20, 2025 am 12:14 AM

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

See all articles