【问题标题】:How to set CSS of one element depending on another element having a specific class?如何根据具有特定类的另一个元素设置一个元素的 CSS?
【发布时间】:2014-09-25 23:08:51
【问题描述】:

我的网站上有一个侧边栏菜单,可以打开和关闭。

当侧边栏打开时,我向触发菜单的菜单按钮添加了一个名为“活动”的附加类。

当此菜单按钮元素具有“活动”类且屏幕宽度 > 768px 时,我想在具有“容器流体”类的元素上设置填充。

我目前使用的是 coffeescript/javascript:

@setPaddingIfMenuOpen = () ->
  console.log 'set padding if menu open called from layout coffee'
  if $(window).width() > 768
    if $('.show-left').hasClass 'active' 
      padding = 280
      $('#main > .container-fluid').css 'padding-left', padding
    else 
      $('#main > .container-fluid').css 'padding-left', '25px'
  else 
    $('#main > .container-fluid').css 'padding-left', '25px'

但我想知道是否可以使用纯 CSS 实现相同的目标?

这是一个 JSFiddle:

http://jsfiddle.net/685Vv/5/

一旦您单击打开菜单按钮并且元素#showLeft 也具有类“活动”,请查看是否可以将属性“padding-left:100px”添加到具有类“main”的元素中。然后如果属性#showLeft 没有类'active',那么属性padding-left 应该更改为'padding-left: 0px'

【问题讨论】:

标签: javascript jquery css


【解决方案1】:

您可以使用 CSS Media Queries,以防您能够将您的 .active 类(或任何其他类)应用于某些共享父元素 - 可能是 body - 以及(以防万一你的标记必须保持原样,我猜你运气不好)。

因此,如果扩展的侧边菜单也会导致 body.side-menu-active 您可以这样做:

#main > .container-fluid{
  padding-left: 25px;
}
@media all and (min-width: 768px){
  .slide-menu-active #main > .container-fluid{
    padding-left: 280px;
  }
}

【讨论】:

  • 嗯,我正在尝试,但它并没有真正起作用。因此,一旦幻灯片菜单打开,我将 .slide-menu-active 应用于 body 类。然后在 CSS 媒体查询中我执行 '.slide-menu-active #main > .container-fluid' 但这是一个元素的 CSS 选择 #main 也有类 .slide-menu-active。它似乎不是针对 .container-fluid
  • oops 我认为唯一的问题是我错误地使用了 max-width 而不是 min-with!很抱歉,我认为这是一个很好的解决方案,并且会奏效!
猜你喜欢
  • 2013-03-17
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
相关资源
最近更新 更多