当前位置:   CSS > 正文

我可以在CSS变量中添加类名吗?

javascript,css,css3,css-variables,html,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

是否可以在CSS变量中添加类名,或者是否可以通过其他方法进行设置,这样我就不必直接通过javascript操作每个变量了?我想将所有样式保留在CSS中,并仅使用JS打开相关的类。例如,如果在CSS中可能出现类似情况:

:root.white{ --bgcol:#FFF; --col:#000; }
:root.black{ --bgcol:#000; --col:#FFF; }

然后,我可以直接从javascript 切换.blackor或.whiteclass来触发所有var进行更改。这种设置的最佳方法是什么?



1> BoltClock..:

坦率地说,这是最好的方法(在大多数情况下都是惯用的)–使用类名(如果不是完全分开的样式表(这已经有很多年的传统了)),可以通过自定义属性对整个布局进行主题化。这是最“基本的CSS”方法,JavaScript只是使主题切换起作用的粘合剂。您确实不能做得更好。

对于那些不知道是什么:root意思并想知道确切在哪里应用类名的人,它是html元素(的父元素body)。因此,这里没有什么特别的事情-您只需在html元素上切换类名。碰巧的是,按惯例为文档根元素定义了全局自定义属性,因为它位于继承链的顶层。

如果您有任何与主题无关的自定义属性,以及应用于根元素的样式属性(即非自定义属性),请使其:root与主题自定义属性保持独立的无限定规则,这样它们就不会受到影响通过主题切换。这是一个例子:

const root = document.documentElement;

// Default theme - should assign declaratively in markup, not JS
// For a classless default theme, move its custom properties to unqualified :root
// Again, keep it separate from the other :root rule that contains non-theme props
// Remember, the cascade is your friend, not the enemy
root.classList.add('white');

document.querySelector('button').addEventListener('click', function() {
  root.classList.toggle('white');
  root.classList.toggle('black');
});
:root {
  --spacing: 1rem;
  color: var(--col);
  background-color: var(--bgcol);
}

:root.white {
  --bgcol: #FFF;
  --col: #000;
}

:root.black {
  --bgcol: #000;
  --col: #FFF;
}

p {
  margin: var(--spacing);
  border: thin dashed;
  padding: var(--spacing);
}

Hello world!

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/blog/CSS/detail/6499
推荐阅读
  • 如何解决《使用Javascript为IE7+添加CSS3支持》经验,为你挑选了1个好方法。javascript,internet-explorer,css3,css,jquery,DevBox,在线流程图,编程,编程问答,程序员,开发者工具... [详细]

  • 这篇文章主要为大家详细介绍了原生js+jquery+css3实现瀑布流的相关代码,三种实现瀑布流的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下js,jquery,css3,瀑布流,javascript,html,css,webki... [详细]

  • 如何解决《如何使用flexbox将dt和dd并排放在另一个下面的多个dd?》经验,为你挑选了1个好方法。html,css,html5,css3,flexbox,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json... [详细]

  • 如何解决《Ckeditor:我怎样才能在ckeditor中制作像h3,h4,h5这样的标签》经验,为你挑选了1个好方法。javascript,css,css3,ckeditor,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,... [详细]

  • 本文给大家讲述的是如何使用javascript结合CSS动画来实现一些占用资源更少,更优化的动画效果,思路十分巧妙,这里推荐给小伙伴们参考下。javascript,css3,动画,html,css,jquery,chrome,webkit,... [详细]

  • 如何解决《桌面上的Flexbox在Firefox中不起作用》经验,为你挑选了2个好方法。html,css,css3,flexbox,webkit,firefox,https,git,容器,chrome,DevBox,在线流程图,编程,编程问... [详细]

  • 本篇文章通过代码实例给大家介绍一下svg+css3实现动感的波浪效果。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。svg,css3,动感波浪,css,html,scala,webkit,javascript,php,De... [详细]

  • 如何解决《标签的每个状态的样式?》经验,为你挑选了1个好方法。css,css3,html,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员... [详细]

  • 如何解决《如何在Firefox中为HTML元素的overlelew文本显示省略号?》经验,为你挑选了0个好方法。css,firefox,css3,chrome,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json... [详细]

  • 如何解决《IE中的边界半径不起作用》经验,为你挑选了1个好方法。css,internet-explorer,rounding,css3,firefox,chrome,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,j... [详细]

  • 本篇文章给大家通过代码示例介绍一下使用纯css3实现信纸同学录效果。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。css3,css,html,javascript,php,DevBox,在线流程图,编程,编程问答,程序员,... [详细]

  • 如何解决《Webkit相当于:-moz-system-metric(启用触摸)》经验,为你挑选了1个好方法。css,webkit,touch,css3,media-queries,DevBox,在线流程图,编程,编程问答,程序员,开发者工具... [详细]

  • 如何解决《如果他们没有,我如何让我的用户自动下载我用于我的网站的字体?》经验,为你挑选了1个好方法。html,css,fonts,css3,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,u... [详细]

  • 如何解决《在浏览页面时保持固定的标题(永远不会重新加载)》经验,为你挑选了1个好方法。html,javascript,jquery,header,css3,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析... [详细]

  • 如何解决《重新调整立方体的大小》经验,为你挑选了0个好方法。html,css,css3,css-transforms,css-shapes,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,u... [详细]

  • 如何解决《如何使用jquery和css3实现*SMOOTH*在移动设备上淡入淡出动画?》经验,为你挑选了1个好方法。html,javascript,css,jquery,css3,DevBox,在线流程图,编程,编程问答,程序员,开发者工具... [详细]

  • css3常见新特性:1、增加了新的元素选择器,如【E:nth-last-child(n),E:nth-of-type(n)】;2、border-radius属性,该属性可以将图片圆角化;3、增加了background-clip属性。css3... [详细]

  • 如何解决《如何制作倾斜的缎带》经验,为你挑选了1个好方法。html,css,css3,css-transforms,css-shapes,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,un... [详细]

  • 如何解决《有没有办法使用CSS3/Canvas曲线/弧形文本》经验,为你挑选了4个好方法。html,javascript,css,canvas,css3,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,... [详细]

  • 该价格表基于Bootstrap网格系统来进行布局,通过简单的CSS3代码来美化价格表,样式非常的时尚漂亮,且能在不同屏幕下展示良好的效果,需要的朋友可以参考下bootstrap,css3,css,html,DevBox,在线流程图,编程,编... [详细]

相关标签
  

闽ICP备14008679号