javascript - 完全可折叠 div 的问题

标签 javascript html css

我正在尝试创建一个在单击时打开和隐藏 div 的按钮。我一直在引用以下codepen关于如何开始,但想要一些稍微不同的东西。在引用的 codepen 中,div“row”始终打开,类“slide”在单击时打开和关闭。我实际上希望 div“行”完全打开并在单击时折叠,但似乎无法使其正常工作。

我当前的代码如下所示:

<div class="wrapper">
  <div class="child">
    <a href="javascript:void(0)" id="questionnaire">
      <i class="fa fa-clipboard fa-3x fa-fw" aria-hidden="true"></i>
      <h4>Questionnaire</h4>    
    </a>
  </div>
</div>
<div class="test">
  <div class="slide">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nisl tellus, mattis vitae tortor quis, dictum volutpat ipsum. Duis facilisis enim vel pharetra mollis. Mauris eget dui commodo, pharetra mauris ac, volutpat nunc. Duis nec viverra leo, a rutrum quam. Quisque ac porta odio. Morbi velit erat, aliquam non arcu tempus, consequat finibus diam. Duis commodo ante nulla, vitae sodales felis interdum nec. Duis ac eros in magna tempor ornare quis quis magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin varius tempor urna id placerat. Proin condimentum vitae magna eget consectetur. Duis a consequat justo, vitae tristique mauris. Vivamus porta urna arcu, nec faucibus magna ullamcorper id.
  </div>
</div>

.wrapper {
  display:flex;
  justify-content:space-evenly;
  width:100%; 
  background: url(https://www.noupe.com/wp-content/uploads/2009/10/pattern-13.jpg);
}

.child {
  flex:1;
}

.child, .child a {
  display:flex;
  flex-direction:column;
  align-items: center;
  color: $overdue;
}

.child i {
  border: 3px solid $overdue;
  border-radius: 25px;
  padding: 0.5em;
}

.child i, .child h4 {
  transition: all 0.5s linear;
}

.child a:hover {
  i {
    background: $overdue;
    color: $color-lightest;
    box-shadow: 0 0 0 0 $overdue;
    -webkit-animation: rubberBand 1s;
    animation: rubberBand 1s;
  }
  h4 {
    color: $color-lightest;
  }
}

.fa-fw {
  width: 2.3em;
}

@media screen and (max-width: 768px) {
  .wrapper {
    flex-direction: column;
    align-items:center;
    align-content: space-around;
  }  
  .wrapper .child {
    margin-top: 1em;
  }
}

/*.test {
  border: 1px solid rgba(255, 0, 0, .7);
  width: 100%;
  overflow: hidden;
}*/

.slide {
  //background-color: rgba(0, 255, 0, .3);
  background-color:none;
  padding: 5px;
  transition: .5s cubic-bezier(0, 1, 0.5, 1);
  transform: translateY(0);
  overflow: hidden;
}

.slide-up {
  transform: translateY(-100%);
}

var toggleButton = document.getElementById('questionnaire'),
            slide = document.querySelector('.slide');

    toggleButton.addEventListener('click', toggleSlider, false);

    function toggleSlider() {
        if (slide.classList.contains('slide-up')) {
            slide.classList.remove('slide-up');
        } else {
            slide.classList.add('slide-up');
        }
    }

有没有办法让整个“行”div 显示/隐藏?谢谢!

最佳答案

您只需将 .slide-up 添加到 .row 类,而不是 .slide 类。我相信这就是你想要的。

var toggleButton = document.getElementById('toggleSlider'),
    slide = document.querySelector('.row');

.slide-up {
  height:0px;
}

CodePen

关于javascript - 完全可折叠 div 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50893850/

相关文章:

javascript - AngularJs 中的路由更改后,HTML5 相机不会关闭

html - 如何使用浏览器检查工具检查网站上的所有 .css/.scss 类?

css - 在主要面 DataGrid 中顶部对齐

javascript - 每当 div 在 mootools 中增加或减少时如何调用函数

javascript - 将对象数组分类为新数组

javascript - L.latLng() 创建的对象在 setZoomAround() 上使用时抛出 "Invalid LatLng object"

javascript - 将 slider 重置为初始值

javascript - 如何使用 react-pdf 进行自动换行

javascript - Angular ng-model 在 JS 中未定义

html - 悬停元素时更改列表 (ul) 的所有其他元素 li 的 css 属性