在 Storybook 中模拟 CSS 用户偏好

在 Storybook 中模拟 CSS 用户偏好

在 Github 上查看

Storybook 附加组件:CSS 用户偏好

此工具栏附加组件允许您在 Storybook 中模拟 CSS 用户偏好。

入门

首先,安装附加组件。

$ yarn add storybook-addon-css-user-preferences --dev

将此行添加到您的 main.js 文件(如果需要,在您的 Storybook 配置目录中创建此文件)。

module.exports = {
  addons: ['storybook-addon-css-user-preferences'],
};

配置

默认情况下,所有 CSS 用户偏好都设置为系统默认值。

您可以使用 parameters.cssUserPrefs 参数配置您自己的用户偏好集

// .storybook/preview.js

export const parameters = {
  cssUserPrefs: {
    "prefers-color-scheme": "light",
  },
};

选项

prefers-color-scheme

prefers-color-scheme 偏好用于检测用户是否请求了浅色或深色主题。

@media (prefers-color-scheme: dark) {
  .button {
    background: #333;
    color:      #fff;
  }
}

@media (prefers-color-scheme: light) {
  .button {
    background: #fff;
    color:      #555;
  }
}

W3C Specification MDN Documentation

prefers-contrast

prefers-contrast 偏好用于检测用户是否请求以更高或更低对比度呈现网页内容。

.outline {
  outline: 2px dashed black;
}

@media (prefers-contrast: more) {
  .outline {
    outline: 2px solid black;
  }
}

W3C Specification MDN Documentation

prefers-reduced-data

prefers-reduced-data 偏好用于检测用户是否请求消耗更少网络流量的网页内容。

.hero {
  background-image: url("images/hero.webp");
}

@media (prefers-reduced-data: reduce) {
  .image {
    background-image: url("images/[email protected]");
  }
}

W3C Specification MDN Documentation

prefers-reduced-motion

prefers-reduced-motion 偏好用于检测用户是否请求系统尽量减少使用非必要动画。

.button {
  animation: pulse 1s linear infinite both;
}

@media (prefers-reduced-motion) {
  .button {
    animation: none;
  }
}

W3C Specification MDN Documentation

prefers-reduced-transparency

prefers-reduced-transparency 偏好用于检测用户是否请求系统尽量减少使用透明或半透明层效果。

.glass {
  opacity: 0.5; 
}

@media (prefers-reduced-transparency: reduce) {
  .glass {
    opacity: 1;
  }
}

W3C Specification