打破
精准点评纠偏,逻辑框架助力创业闭环,reasoning_content:我们要求以前端开发者的口吻,写一个与“技术、科技”相关,关于[精准点评纠偏,逻辑框架助力,创业构建高效闭环]的标题需要简短精炼,30字以内直接输出标题,不要加说明nn可以结合前端开发者的视角,比如提到代码、框架、调试、闭环等关键词:精准点评纠偏(类似代码review或debug)、逻辑框架(前端的框架如React/Vue等)、创业构建高效闭环(创业中的高效迭代)nn可能的用框架思维纠偏,创业闭环更高效或者前端视角:精准点评拆解逻辑,创业闭环加速但需要更简洁nn尝试:精准点评纠偏,逻辑框架助力创业闭环但字数可能超?数一下:精准点评纠偏,逻辑框架助力创业闭环——共14字,可以但需要体现前端开发者口吻,可以加个“前端”或“代码”?比如:前端精准点评,逻辑框架助创业闭环更好nn或者:用代码Review思维,逻辑框架构建创业闭环但太长nn最终:精准点评纠偏,逻辑框架助创业闭环去掉“助”字?精准点评纠偏,逻辑框架创业闭环有点生硬nn考虑:前端开发:精准点评纠偏,框架思维构建闭环共16字nn或者:精准纠偏,框架赋能,创业高效闭环但少了“点评”?nn我认为:精准点评纠偏,逻辑框架助力创业闭环(15字)符合要求,且直接但需检查是否30字内,肯定是的直接输出
物联网工程师攻略:点评闭环驱动媒体增长,reasoning_content:我们要求以物联网开发工程师的口吻,写一个与技术、科技相关的标题,主题是创业攻略:以点评逻辑驱动媒体运营闭环,突破增长瓶颈需要简短精炼,30字以内nn作为物联网开发工程师,口吻应该带有技术感、编程思维、系统思维可以用一些技术术语如协议、闭环、API、调试、传感器等主题核心是点评逻辑驱动媒体运营闭环,突破增长瓶颈nn可能的标题思路:结合物联网中的反馈循环、数据流、闭环控制等概念例如:用物联网闭环思维,以点评逻辑破局媒体增长,但字数超了需要更精简nn尝试: 点评协议驱动运营闭环,破解增长瓶颈 但缺少物联网工程师口吻加上物联网或IoT等例如:IoT式点评闭环:媒体运营增长攻略 共13字或者物联网工程师的创业攻略:点评闭环破增长 但字数可能超?物联网工程师的创业攻略:点评闭环破增长 共18字,符合nn更简洁:点评闭环+物联网思维,突破增长瓶颈 13字?点评闭环+物联网思维,突破增长瓶颈 14字或者用点评逻辑打造媒体运营闭环,物联网工程师教你突破增长 太长nn最合适: 物联网工程师攻略:点评闭环驱动媒体增长 共18字或者点评逻辑+物联网闭环,突破增长瓶颈 13字注意不要加说明直接输出一个标题nn我选:点评协议驱动媒体运营闭环,破增长瓶颈 但协议有点生硬更好:IoT点评闭环:媒体运营增长攻略 共12字或者物联网开发工程师:点评闭环破增长瓶颈 共16字nn考虑到口吻,可以用程序员或开发者但指定了物联网开发工程师最终输出一个标题我决定用:物联网开发工程师:用点评闭环逻辑破媒体增长 共18字或者更精炼:点评闭环+物联网思维,突破增长 12字但突破增长不够完整nn为了更符合创业攻略,可以加攻略二字 物联网工程师攻略:点评闭环驱动媒体增长 18字直接输出
15 9 月 2026, 周二

这篇文章给大家分享的是CSS向JS传参的内容,有时候我们需要通过CSS向JS传参,那么具体什么时候需要这样做呢?实现方法又是什么?文中介绍的很详细,感兴趣的朋友接下来一起跟随小编看看吧。

 一、需要通过CSS传参的背景

CSS中有很多媒体查询的用法,例如设备尺寸判别,是否支持鼠标行为,是否是黑暗模式,是否是省电模式等。

比方说最近经常提到的黑暗模式,深色主题:

@media (prefers-color-scheme: dark) {
    /* 黑暗模式,深色主题 */
}
@media (prefers-color-scheme: light) {
    /* 浅色主题 */
}
CSS可以自动检测,但是有时候,在JS中,我们也需要根据不同的系统主题,然后实现不同的交互逻辑,或者渲染出不一样的内容。

怎么办?似乎一时间也找不到现成的JS API来检测系统模式,只能借助于CSS中传参了。这就是一个典型的场景,类似的场景还有很多。

例如:

1. CSS和JS边界宽度一致性

我们在做响应式布局的时候,经常会需要设定一个临界宽度值,例如当设备的宽度小于640像素的时候,我们就认为是进入了移动端;或者是宽度小于480的像素的时候,就使用移动端布局等。

此时,JavaScript代码也需要根据这个临界宽度实现不同的交互效果,大于多少的时候是PC的交互,小于多少的时候是移动端布局下的交互。

很多人在实际开发的时候就CSS代码和JS代码约定一下,例如:

@media screen and (max-width: 480px) {
    /* 小屏幕宽度下的响应式布局 */
}
if (screen.width < 480) {
    /* 小屏幕宽度下的交互行为 */
}
    要是这种约定会有一个问题,等项目过了一段时间之后,发现这个临界宽度有问题,比方说手机横屏的时候,它的宽度是大于 480px 的,也应该是移动端的布局方式,于是开发就改成了 640px 。

@media screen and (max-width: 640px) {
    /* 小屏幕宽度下的响应式布局 */
}
结果忘记JS代码中也有这一茬判断,结果就会出现bug。

如果原先实现的时候,我们的JavaScript代码中的屏幕判断是基于CSS传参的话,那就不会有这样子的维护问题出现。

2. 浏览器是否支持:hover伪类交互

我们会开发一些ui组件,希望在桌面端和移动端,以及物联网设备上通用。

有些组件在桌面当我们使用 mouseenter 或者 mouseover 事件来实现体验还是很不错的,非常便捷。但是如果这些东西用在移动端以及其他一些触屏设备上,则这个世界就有问题啊,因为没有这种hover的说法。

好在CSS代码中是有关于浏览器是否支持:hover伪类交互媒体查询判断(此查询有专门文章介绍,点击这里):

@media (any-hover: none) {
    /* 设备不支持hover事件 */
}

可惜JS中并没有这样的API直接判断。很多人应该是通过判断浏览器是否支持 touchstart 之类的事件来进行判断的。不过可惜这种判断方法是不准确的。因为很多触摸设备也是可以连接鼠标设备的,此时hover事件也应该被良好支持。

因此,最后的方法还是通过CSS媒体查询判断,然后把这个判断结果以参数形式传递给js。

好啦,下面问题来了,上面举了这三个案例,我们如何通过CSS把我们的参数传递给JS代码呢?

二、CSS传参给JS的方法

通常借助CSS向JS传参,我都是使用下面这两种方法。

1. content伪元素内容传参

例如:
@media (any-hover: none) {
    body::before {
        content: 'hoverNone';
        display: none;
    }
}

此时就可以通过JS代码获取body伪元素传递的信息是什么了:
var strContent = getComputedStyle(document.body, '::before').content;
// strContent结果是'none'则表示支持hover
// strContent结果是'"hoverNone"'则表示不支持hover经过,需要换成click事件

本文就预埋了上面这样的CSS代码,因此,Chrome浏览器下,打开控制台,进入移动端预览模式,输入JS测试下,可以看到我们CSS传递的字符串信息被JS获取到了。

此时,我们就可以根据 ::before , ::after 伪元素配合 content 属性,获知CSS中传递的信息了。

这种传参方式的优点在于兼容性相对较好,但是不足却也很明显,那就是我们传递的参数值的数量是有限的,如果我们想一次性传多个值,就有些捉襟见肘,此时可以试试下面这种方法,借助CSS自定义属性。

2. CSS自定义属性(CSS变量)传参

直接上代码,有了 CSS自定义属性(CSS变量) ,黑暗模式和浅色模式的开发和维护工作就变得相对容易很多,除此之外,这个CSS自定义属性我们还可以用来给JS做模式识别。

:root {
    –mode: 'unknown';
}
@media (prefers-color-scheme: dark) {
    /* 黑暗模式 */
    :root {
         –mode: 'dark';
         –colorLink: #bfdbff;
         –colorMark: #cc0000;
         –colorText: #ffffff;
         –colorLight: #777777;
    }
}
@media (prefers-color-scheme: light) {
    /* 浅色主题 */
    :root {
         –mode: 'light';
         –colorLink: #34538b;
         –colorMark: #cc0000;
         –colorText: #000000;
         –colorLight: #cccccc;
    }
}

JS检测代码:
var mode = getComputedStyle(document.documentElement).getPropertyValue('–mode').trim();
// mode结果是'"dark"'则表示黑夜主题,深色模式,黑暗风格,护眼模式。
// mode结果是其他表示默认模式

在Mac OS X或者移动端设备上应该会显示其他的值,欢迎帮忙测试截个图发我,我更新到文章中。

使用CSS自定义属性传统的好处是非常灵活,我们可以定义很多很多的变量都可以。而且其实我们也没有任何必要担心兼容性的问题。为什么呢?因为凡是支持黑夜模式的设备浏览器,一定支持CSS自定义属性。

关于CSS向JS传参的内容就介绍到这,上述示例具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助。

dawei

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

您错过了

精准点评纠偏,逻辑框架助力创业闭环,reasoning_content:我们要求以前端开发者的口吻,写一个与“技术、科技”相关,关于[精准点评纠偏,逻辑框架助力,创业构建高效闭环]的标题需要简短精炼,30字以内直接输出标题,不要加说明nn可以结合前端开发者的视角,比如提到代码、框架、调试、闭环等关键词:精准点评纠偏(类似代码review或debug)、逻辑框架(前端的框架如React/Vue等)、创业构建高效闭环(创业中的高效迭代)nn可能的用框架思维纠偏,创业闭环更高效或者前端视角:精准点评拆解逻辑,创业闭环加速但需要更简洁nn尝试:精准点评纠偏,逻辑框架助力创业闭环但字数可能超?数一下:精准点评纠偏,逻辑框架助力创业闭环——共14字,可以但需要体现前端开发者口吻,可以加个“前端”或“代码”?比如:前端精准点评,逻辑框架助创业闭环更好nn或者:用代码Review思维,逻辑框架构建创业闭环但太长nn最终:精准点评纠偏,逻辑框架助创业闭环去掉“助”字?精准点评纠偏,逻辑框架创业闭环有点生硬nn考虑:前端开发:精准点评纠偏,框架思维构建闭环共16字nn或者:精准纠偏,框架赋能,创业高效闭环但少了“点评”?nn我认为:精准点评纠偏,逻辑框架助力创业闭环(15字)符合要求,且直接但需检查是否30字内,肯定是的直接输出

物联网工程师攻略:点评闭环驱动媒体增长,reasoning_content:我们要求以物联网开发工程师的口吻,写一个与技术、科技相关的标题,主题是创业攻略:以点评逻辑驱动媒体运营闭环,突破增长瓶颈需要简短精炼,30字以内nn作为物联网开发工程师,口吻应该带有技术感、编程思维、系统思维可以用一些技术术语如协议、闭环、API、调试、传感器等主题核心是点评逻辑驱动媒体运营闭环,突破增长瓶颈nn可能的标题思路:结合物联网中的反馈循环、数据流、闭环控制等概念例如:用物联网闭环思维,以点评逻辑破局媒体增长,但字数超了需要更精简nn尝试: 点评协议驱动运营闭环,破解增长瓶颈 但缺少物联网工程师口吻加上物联网或IoT等例如:IoT式点评闭环:媒体运营增长攻略 共13字或者物联网工程师的创业攻略:点评闭环破增长 但字数可能超?物联网工程师的创业攻略:点评闭环破增长 共18字,符合nn更简洁:点评闭环+物联网思维,突破增长瓶颈 13字?点评闭环+物联网思维,突破增长瓶颈 14字或者用点评逻辑打造媒体运营闭环,物联网工程师教你突破增长 太长nn最合适: 物联网工程师攻略:点评闭环驱动媒体增长 共18字或者点评逻辑+物联网闭环,突破增长瓶颈 13字注意不要加说明直接输出一个标题nn我选:点评协议驱动媒体运营闭环,破增长瓶颈 但协议有点生硬更好:IoT点评闭环:媒体运营增长攻略 共12字或者物联网开发工程师:点评闭环破增长瓶颈 共16字nn考虑到口吻,可以用程序员或开发者但指定了物联网开发工程师最终输出一个标题我决定用:物联网开发工程师:用点评闭环逻辑破媒体增长 共18字或者更精炼:点评闭环+物联网思维,突破增长 12字但突破增长不够完整nn为了更符合创业攻略,可以加攻略二字 物联网工程师攻略:点评闭环驱动媒体增长 18字直接输出