jquery - 使用 jquery 更改 CSS 值

标签 jquery css

当我的 adapted-for-no-javascript 页面加载时,加载的样式之一是:

//accordion open
.accordionItemCollapsed, .accordionItem.is-collapsed {
    max-height: 100%;
}

这样我的 Accordion 就全部打开了,内容对没有 javascript 的用户可见。

但是当启用了 javascript 的用户访问该站点时,我希望该值像这样自动更改:

//accordion collapsed
.accordionItemCollapsed, .accordionItem.is-collapsed {
    max-height: 0;
}

我如何使用 jQuery 最好地做到这一点?

这可能是非常基础的,但我是 jquery/JS 的新手,在谷歌搜索解决方案时有点迷茫,因为所有搜索结果似乎都适用于更复杂的情况。

最佳答案

我建议不要更改或注入(inject) css,而是向 body/html/container 添加一个 no-js 类,然后使用 jquery 将其删除。

你的 CSS 看起来像这样

.accordionItemCollapsed, .accordionItem.is-collapsed {
    max-height: 0;
}

.no-js .accordionItemCollapsed, .no-js .accordionItem.is-collapsed {
    max-height: 100%;
}

jquery 非常简单

$('html').removeClass('no-js');

这种方法比在 dom 中查询所有 Accordion 然后更改每个元素的样式属性要高效得多。

除此之外,当 js 不可用时,您需要在网站的其他部分重用不同的样式。

关于jquery - 使用 jquery 更改 CSS 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189848/

相关文章:

html - 响应式图标行

jquery - 如何解决在我的模板中打开页面的问题?

javascript - 无法使用 JS/Jquery 更改背景图片

javascript - 如何防止零出现在计算器中?

javascript - 单击动态生成的图像时触发事件

javascript - 检测到屏幕外的 Div

jquery - 如何在加载时捕获文本框值? Jquery 与 knockout

javascript - 如果在 jQuery 中完成多页,则后退按钮在浏览器中不起作用

CSS响应媒体没有响应

html - 如何在过滤器上方带有文本的图像上放置透视过滤器