如果存在其他类,如何有条件地将CSS应用于类?

时间:2018-09-04 19:42:06

标签: javascript html css ruby-on-rails

我在视图中有以下内容:

<div class="bottom-nav container-fluid">
 <div class="container">
  <div class="row mobile-menu-row">
   <div class="col"></div>
  </div>
  <div class="row mobile-menu-row">
   <div class="slidedown"></div>
  </div>

是否存在Slidedown和Slideup,这取决于用户单击按钮。目前,我将440px的高度应用于底导航,这是一个很大的高度,并且实际上仅希望在存在Slidedown并且屏幕尺寸小于768px的情况下出现在底导航上。有没有建议仅在出现一个类的情况下将CSS样式应用于另一个类?

我尝试过的尝试绝对没有用:

@media and (max-width: 767px) {
  .bottom-nav .slidedown{
   height: 440px; 
  }
 }

这自然是行不通的,因为它是将其应用于向下滑动而不是底部导航部分。

我的JS文件具有:

const nav = () => {
const mobileButton = document.querySelector('a.mobile-button');
const menu = document.querySelector('.mobile-menu-cont');
const regionLink = document.querySelector('.mobile-menu-row ul > li');
const regionMenu = document.querySelector('.mobile-menu-row ul > li > ul');
const bottom = document.getElementsByClassName('bottom-nav');

function init() {
  mobileButton.addEventListener('click', toggleMenu);
  regionLink.addEventListener('click', toggleSubMenu);
}

let toggleMenu = (e) => {
  e.preventDefault();
  if (menu.classList.contains('slideup')) {
    menu.classList = 'slidedown';
  } else {
    menu.classList = 'slideup';
  }
};
if (menu.classList = 'slidedown'){
  bottom.setAttribute("style", "height: 440px;")
} else {
  bottom.setAttribute("style","height: 0;")
}

我以为这种情况会奏效,但看来只会破坏页面上的许多不同内容。

我也尝试过:

    let toggleMenu = (e) => {
     e.preventDefault();
     if (menu.classList.contains('slideup')) {
       menu.classList = 'slidedown';
       bottom.setAttribute("style", "height: 440px;")
     } else {
       menu.classList = 'slideup';
       bottom.setAttribute("style", "height: inherit;")
     }
   };

这弄乱了我页面上的许多其他JS。

1 个答案:

答案 0 :(得分:0)

您接近了!无需挤压bottom元素的完整样式属性,只需设置height属性,同样,代替替换className的{​​{1}},只需添加和减去来自类名:

menu