jquery 使用CSS更改已使用JavaScript修改过的元素的样式

5tmbdcev  于 2024-01-07  发布在  jQuery
关注(0)|答案(1)|浏览(152)

我有一个“过滤条”,当屏幕有一定的宽度时显示,当屏幕变窄时消失。我已经在我的代码中使用媒体查询实现了这一点,它工作正常。
当屏幕变窄时,会出现一个按钮,用于显示隐藏的栏。我已经用JavaScript实现了这段代码,当我点击它时,栏会显示/隐藏:它可以工作。
我的问题是当我用按钮显示隐藏的栏时(所以窗口很窄),我增加窗口的大小直到达到栏必须显示的宽度,它没有。看起来像是JavaScript强加了栏的样式,所以媒体查询不起作用。如何管理?
我的代码和重要元素如下所示:

  1. function displayHideFiltrerPar() {
  2. let tmp = document.getElementById('container-left-small-screen');
  3. if (tmp.style.display == "none" || tmp.style.display == "") {
  4. tmp.style.display = "inline-block";
  5. } else {
  6. tmp.style.display = "none";
  7. }
  8. }
  1. @media (min-width: 576px) and (max-width: 767px) {
  2. .res-button-filtrer-par {
  3. display: flex;
  4. margin-bottom: 2em;
  5. }
  6. #container-left-small-screen {
  7. display: none;
  8. position: absolute;
  9. width: 50%;
  10. top: -130px;
  11. }
  12. }
  13. @media (min-width: 768px) and (max-width: 991px) {
  14. /* Size M */
  15. .res-button-filtrer-par {
  16. display: none;
  17. }
  18. #container-left-small-screen {
  19. display: inline-block;
  20. }
  21. }
  1. <button class="res-button-filtrer-par res-button" type="button" onClick="displayHideFiltrerPar();">
  2. <span>Display filter bar</span>
  3. </button>
  4. <div id="container-left-small-screen">
  5. Filter bar
  6. </div>
hmtdttj4

hmtdttj41#

不要让按钮直接改变样式,而是让它添加和删除一个类hidden。然后你可以让你的CSS不仅依赖于媒体查询,还依赖于那个类,如这个简化的例子所示:

  1. @media (max-width: 767px) {
  2. #btn {
  3. display: flex;
  4. margin-bottom: 2em;
  5. }
  6. #container-left-small-screen:not(.hidden) {
  7. display: inline-block;
  8. }
  9. #container-left-small-screen.hidden {
  10. display: none;
  11. }
  12. }
  13. @media (min-width: 768px) {
  14. #btn {
  15. display: none;
  16. }
  17. #container-left-small-screen {
  18. display: inline-block;
  19. }
  20. }

个字符
除了使用toggle方法,您还可以使用add来添加类,或使用remove来删除类。

展开查看全部

相关问题