繁体   English   中英

使用 javascript 或 jQuery 添加 CSS 媒体查询

[英]Adding CSS media queries with javascript or jQuery

我在尝试使用 jQuery/javascript 添加媒体查询时遇到了一些问题。 我在带有display: none小屏幕上隐藏了一个<div class="container"> 我想使用下面的代码来显示它,虽然我没有收到任何错误,但没有任何变化。

$('.container').append('<style type="text/css">@media screen and (min-width: 1012px){ .container { "display": "block"}}</style>');

有什么建议? 谢谢你。

如果您只删除双引号形式“display”:“block”,它会正常工作

$('.container').append('<style type="text/css">@media screen and (max-width: 1012px){ .container { display: block}}</style>');

但我认为如果你改变你的选择器会更好

$('head').append('<style type="text/css">@media screen and (max-width: 1012px){ .container { display: block}}</style>');

您可以使用

document.querySelector('style').textContent +=
"@media screen and (min-width: 1012px){ .container { display: 'block'}}"

获取样式元素并添加新规则,如果不存在则添加 html

<style>......</style>

CMedina 的答案相当不错,但它附加到文档中的第一个样式元素。 这可能有两个方面的问题:
a) 可能没有样式元素(因为<link rel="stylesheet"> );
b) 可能有多个样式元素。 将样式规则附加到第一个规则可能会被后面的规则覆盖。

所以这是我的策略:创建一个新的<style>元素; 填充所需的内容; 附加到正文,以便它最后出现

  const styleSheet = document.createElement('style');
  styleSheet.textContent = '@media print { /* ... */ }';
  document.body.appendChild(styleSheet, 'beforeend');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM