h5通过css进行深色模式切换

html-css016

h5通过css进行深色模式切换,第1张

prefers-color-scheme ( https://developer.mozilla.org/zh-CN/docs/Web/CSS/@media/prefers-color-scheme ) 是一种用于检测用户是否有将系统的主题色设置为亮色或者暗色的 CSS 媒体特性。利用其设置不同主题模式下的 CSS 样式,浏览器会自动根据当前系统主题加载对应的 CSS 样式。light 适配浅色主题,dark 适配深色主题,no-preference 表示获取不到主题时的适配方案。

浅色模式效果如图:

深色模式效果如图:

window.matchMedia ( https://developer.mozilla.org/zh-CN/docs/Web/API/Window/matchMedia ) 方法可以用来查询指定的媒体查询字符串解析后的结果。结合 CSS 变量和 matchMedia 的查询结果,设置对应的 CSS 主题颜色。该方法更灵活,可以单独抽离主题色进行适配,深色模式匹配 (prefers-color-scheme: dark) ,浅色模式匹配 (prefers-color-scheme: light) 。

监听主题模式,深色模式时为 body 添加类名 dark,根据 CSS 变量的响应式布局特点,自动生效 dark 类名下的 CSS。

浅色模式效果如图:

深色模式效果如图:

创建和应用

CSS

样式表

除了为单个元素设置内联样式之外,还可以创建和应用级联样式表

(CSS)

文件。级联样式表使您可以定义可应用于多个控件和页面的样式,而不必分别编辑元素。

在演练的本节中,将创建样式表,该样式表使您可以使用用于设置内联样式的相同工具。然后将样式表应用于正在编辑的页面。

创建样式表

在解决方案资源管理器中,右击网站的名称(如

C:\WebSites),再单击“添加新项”。

在“Visual

Studio

已安装的模板”之下单击“样式表”。

在“名称”框中,键入“dark.css”,再单击“添加”。

编辑器打开一个包含

body

样式元素的新样式表。

将插入点定位在左右大括号

({

})

之间,然后在“样式”菜单上单击“生成样式”。

出现“样式生成器

-

body”对话框。

单击“字体”,在“字体属性”下单击位于“颜色”框右边的省略号“(…)”,在“颜色选取器”对话框中单击一种亮色,再单击“确定”。

注意

请确保选择一种与网站网页的默认颜色不同的颜色。

单击“背景”,单击一种与前面步骤中选定的字体颜色对比的暗色(如“褐紫红色”),再单击“确定”关闭“样式生成器

-

body”对话框。

将插入点定位到

body

元素的右大括号之后,右击,再单击“添加样式规则”。

出现“添加样式规则”对话框。

“添加样式规则”对话框使您可以创建绑定到特定

HTML

元素类型、样式类名或特定元素的新样式。

单击“类名”,然后在框中键入“reverse”。

这样将创建一个名为

.reverse

的新样式类。将能够把为

.reverse

定义的样式设置应用于页上的任何元素。还可以选择创建类,以便它只能应用于特定类型的元素(定位点、按钮等),但是在本演练中将创建一个简单的样式类。

单击“确定”以关闭“添加样式规则”对话框。

使用样式生成器或

IntelliSense

功能将

.reverse

样式的颜色设置为与主体样式的颜色相反的颜色。元素类似于如下所示:

.reverse

{

background-color:white

color:maroon

}

既然有样式表,那么可以在正在编辑的页中对其进行引用。

在网页上引用样式表

打开

Default.aspx

页并切换到“设计”视图。

从解决方案资源管理器中,将

dark.css

文件拖动到页面上。

页面已更新,并显示样式表的效果。

单击“正方形”,然后在“属性”中设置“CssClass”“reverse”。

这样将反转样式应用于“正方形”。

切换到“源”视图。

<head>

元素中,可以看到编辑器已经添加了引用样式表的

<link>

元素。还可以看到

<asp:button>

元素的

cssclass

属性已设置为

reverse。

右击该页,再单击“在浏览器中查看”。

该页出现在浏览器中,且已应用样式表。