Eclipse 计划刚出现的时候从事Eclipse各个项目的团队和开发者就Eclipse未来下一步该怎么走进行了激烈讨论 而随着Eclipse SDK中的CSS主题功能得到明显改善 Eclipse RCP技术越来越成熟 特别是我们进行动态主题转换时更为简单方便 这些讨论渐渐地平息了 本文载自一个外国专家Kai的blog 全文如下
如果你想要实现一个CSS主题转换 只需扩展你的Eclipse 路径如下 eclipse e ui css swt theme
这里有一个在Eclispe 下进行双模板声明的示例可以参考
<extension
point= eclipse e ui css swt theme >
<theme
basestylesheeturi= css/dark gradient css
id= ntacts themes darkgradient
label= Dark Gradient Theme >
</<span>theme>
<theme
basestylesheeturi= css/bright gradient css
id= ntacts themes brightgradient
label= Bright Gradient Theme >
</<span>theme>
</<span>extension>
然后需要做的就是指定一个程序来切换实际的主题 这里是选择dark gradient主题的全部代码
public class DarkThemeHandler {
@Execute
public void execute(IThemeEngine engine) {
engine setTheme( ntacts themes darkgradient )
}
}
使用工作台模型来将我们的转换程序绑定到目录或工具栏 下面的两幅效果图就展示了黑色主题和明朗主题之间的动态转换
黑色主题
明亮主题
lishixinzhi/Article/program/Java/hx/201311/26905您好,初步判断可能是因为刷新浏览器导致JS重新执行,从而把bool置为false。
可以考虑把bool这个变量存入localStorage或者其他记录其状态的方法。
望采纳。
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。
浅色模式效果如图:
深色模式效果如图: