向onClick div添加过渡

时间:2020-01-17 12:09:22

标签: javascript html bootstrap-4 css-transitions

我正在尝试平滑过渡。单击该部分时,它会扩展以显示下方的文本。我想为此添加一个过渡,以使其更慢,更流畅。

我试图通过向“活动”类添加过渡来做到这一点,但这不好。

FYI-仍在学习JS和高级CSS,所以我的知识有限!

谢谢!

list1
mw.loader.load ('/w/index.php?title=MediaWiki:bootstrap.js&action=raw&ctype=text/javascript');
var coll = document.getElementsByClassName("collapsible");
var i;

for (i = 0; i < coll.length; i++) {
  coll[i].addEventListener("click", function() {
    this.classList.toggle("active");
    var content = this.nextElementSibling;
    if (content.style.display === "block") {
      content.style.display = "none";
    } else {
      content.style.display = "block";
      
    }
  });
}

2 个答案:

答案 0 :(得分:1)

您无法将display:none;转换为display:block; 这就是我在您的JS中所做的更改,以使其起作用:

let teams = document.querySelectorAll(".team-member");
//note forEach is equal to your for(i ...) and the (team) is your "this" variable 
teams.forEach((team) => {
    let col = team.firstElementChild;
    let content = team.lastElementChild;

    let colH = col.clientHeight;
    let contentH = content.clientHeight;    
    team.style.height = `${colH}px`

    team.addEventListener("click", () => {

        if (team.style.height == `${colH}px`) {
      team.style.height = `${colH + contentH}px`
    } else {
      team.style.height = `${colH}px`
    }
    });
});

,并将overflow:hidden;添加到您的团队成员课程中 我建议您学习使用forEach函数,它们比for(i ...)

好得多

答案 1 :(得分:0)

显示:none / block不适用于转换。您应该通过默认不透明度添加样式属性:1;过渡:.5s缓解不透明度;到您的可折叠课程。

.collapsible {
    opacity: 1;
    transition: ease 0.5s opacity;
}
.is-fadeout {
    opacity: 0; 
}

添加此.is-fadeout类onclick,并在0.5秒后超时,不显示任何属性