浅色模式效果如图:
深色模式效果如图:
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。
浅色模式效果如图:
深色模式效果如图:
详细方法如下:第一步:在连接样式表的元素里定义一个id,例如<link href="1.css" rel="stylesheet" type="text/css" id="css">我定义的id是css。第二步:写一个js函数,代码如下:<script type="text/javascript">function change(a){var css=document.getElementById("css");if (a==1)css.setAttribute("href","1.css");if (a==2)css.setAttribute("href","2.css");}</script>这个函数的code可以放在页面的任何地方。第三步:为改变页面的样式表的连接添加一个函数的触发事件,代码如下:<a href="#" onClick="change(1)">1.css</a><a href="#" onClick="change(2)">2.css</a>该效果在IE和FF下均测试通过,相信大家看完后因该非常明了,利用这个方法我们可以让浏览者自己选择需要显示的样式表,好比年迈者可以选择一个字体较大的样式表。这里需要留意的两点是:另外假如是改变整个页面的样式,你需要在样式表文件里定义body的高度为100%首先准备好几种风格的css文件:样式部分:
<link id="css" rel="stylesheet" type="text/css" href="style.css"/>
js部分
function redCSS(){
document.getElementById("css").href="red.css"
}
html部分
<span onclick="redCSS">切换红色风格</span>
如果需要下次打开页面抱持这个风格,那么需要用到cookie