css媒体查询将类添加到HTML

Cha*_*esF 5 html css

我有这个HTML:

<li><a href=""><i class="fa fa-iconname" style="vertical-align: middle;"></i>Link Name</a></li>
Run Code Online (Sandbox Code Playgroud)

然后我在我的CSS中使用这个媒体查询:

@media (max-width: 1000px) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如何将我的标签更改为:

<i class="fa fa-iconname lg-2x" style="vertical-align: middle;"></i>
Run Code Online (Sandbox Code Playgroud)

媒体查询何时生效?

Jac*_*ray 8

CSS只是一种样式语言,它实际上无法编辑HTML.

如果您想实际更改HTML,请使用javascript:

jQuery的:

var $homeIcon = $('.fa-iconname');

$(window).resize(function() {
  if (window.innerWidth <= 1000) $homeIcon.addClass('lg-2x');
  else $homeIcon.removeClass('lg-2x');
});
Run Code Online (Sandbox Code Playgroud)

JSFiddle演示

香草JS:

var homeIcon = document.querySelector('.fa-home');

window.onResize = function() {
  if (window.innerWidth <= 1000) homeIcon.classList.add('lg-2x');
  else homeIcon.classList.remove('lg-2x');
};
Run Code Online (Sandbox Code Playgroud)

JSFiddle演示


And*_*L64 5

您可以使用纯CSS来实现此目的,只需复制列表项并使用如下所示的媒体查询进行切换:

HTML:

<li class="bigScreen"><a href=""><i class="fa fa-iconname" style="vertical-align: middle;"></i>Link Name</a></li>

<li class="smallScreen"><a href=""><i class="fa fa-iconname lg-2x" style="vertical-align: middle;"></i>Link Name</a></li>
Run Code Online (Sandbox Code Playgroud)

CSS:

@media (max-width: 1000px) {
  .bigScreen {
    display:none;
  }
  .smallScreen {
    display:block;
  }
}

@media (min-width: 1001px) {
  .bigScreen {
    display:block;
  }
  .smallScreen {
    display:none;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 从维护角度来看,这不是一个很好的解决方案。如果您需要更频繁地执行此操作,您最终会复制/粘贴各种元素,这很容易导致几个月甚至几年后维护代码时出现错误。JavaScript 方法更复杂,但不会重复代码。 (3认同)
  • 这是最好的答案。使用 JS 调整大小功能不是一个好主意,因为调整大小在许多浏览器中都有错误。我见过一些基于抓住窗口一角或底部边缘等而无法触发调整大小的情况。但是使用两个类“bigScreen”和“smallScreen”对于很多事情来说都是超级通用的。 (2认同)