如何删除特定页面上的CSS类? [重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

如何从URL(例如.tm-navbar:before)中包含/event/的所有页面中删除CSS类https://example.com/event/more以及以下内容:

  • /agb
  • /wiederrufsbelehrung
  • /impressum

解决方案应该只删除.tm-navbar:before而不是.tm-navbar

javascript jquery css
2个回答
0
投票

您可以使用JS来执行此操作,如下所示:

if(window.location.pathname.indexof('/event/') > -1) {
    $('.tm-navbar').addClass('dontUseCss');
}

然后在你的CSS中你可以做这样的事情:

.tm-navbar:not(.dontUseCss):before { ... }

0
投票

解决方案是评论中陈述的混合内容。我用它作为我的方法的模板:https://stackoverflow.com/a/19355623/8207054

并改变了添加CSS的方式。它现在将CSS添加到网站的HTML标签中,以便我可以执行下面发布的CSS。

 switch(window.location.pathname){
          case "/impressum":  $("html").addClass("no-gradient"); break;
          case "/agb":  $("html").addClass("no-gradient"); break;
          case "/datenschutz":  $("html").addClass("no-gradient"); break;
          case "/event/more0":  $("html").addClass("no-gradient"); break;
          case "/event/more1":  $("html").addClass("no-gradient"); break;
          case "/event/more2":  $("html").addClass("no-gradient"); break;
          case "/event/more3":  $("html").addClass("no-gradient"); break;
          case "/event/more4":  $("html").addClass("no-gradient"); break;
          case "/event/more5":  $("html").addClass("no-gradient"); break;
          case "/event/more6":  $("html").addClass("no-gradient"); break;
       }

CSS:

body > html.no-gradient > div.tm-navbar::before {
background: transparent !important;
display: none !important;
}


.no-gradient .tm-navbar:before {
background: transparent !important;
display: none !important;
}

它会删除添加到导航栏中的渐变以获得更好的可读性,但由于JS中定义的页面没有透明的英雄标题,因此不需要它们。这就是为什么我需要修复它。

感谢@MikeMcCaughan,@ devius和@jdmdevdotnet的想法,并帮助解决我的问题:)

© www.soinside.com 2019 - 2024. All rights reserved.