HTML5、CSS 转换和 JS 触发器

HTML5, CSS Transitions & JS Triggers

给出我希望完成的基本概念;

我目前有一个网站: http://shiinachi.com

实际上,在主页和电子邮件选项卡之间单击时,使用 javascript 更改正文元素。

不过,我希望重做这个。我的目标是在单击按钮时扩展主体的宽度,以便主体 "drops down" 显示相关菜单。

我尝试过使用 onload 函数来触发 css class;

function bodyloaderS() { classList.add("body-loader")

body的css默认宽度设置为0,然后我尝试使用有问题的body-loader class来调整宽度。

body-section.body-loader{ width: 745px; }

然后我调用了转换 onload 来测试它。然而... The results were less than successful. 有没有更好的方法可以做到这一点?

编辑: 这是正在使用的代码转储

正文标签;

<div id="body-section" onload="bodyloaderS(document.body-section)">
    <h1>Home</h1>
     <p>Hello.<br><br>Temp</p>                  </div>

相关CSS;

#body-section{
position: relative;
padding-left: 50px;
padding-top: 50px;
padding-right: 50px;
height: 350px;
width: 0px;
transition: width 2s;
border-color: #ffffff;
border-style: solid;
border-width: 1px 1px 3px 3px;
border-radius: 3px 9px 3px 0px;
top: -752px;
left: 325px;
background-color: #222222;
}

#body-section.body-loader{
width: 745px;
}

正在使用的脚本;

    <script>
function bodyloaderS() { classList.add("body-loader") 
}
    </script>

如果您还在函数中添加目标元素,它将起作用,例如

function bodyloaderS() {
  document.querySelector('#body-section').classList.add("body-loader");
}

此外,您可能需要考虑开始使用事件侦听器

var thebody = document.querySelector('#body-section');
thebody.addEventListener('load', function() {
  this.classList.add("body-loader");
})

根据评论和问题编辑更新

onload 事件不适用于 div 个元素。

这是使用 DOMContentLoaded 侦听器的建议

document.addEventListener("DOMContentLoaded", function() {

  var thebody = document.querySelector('#body-section');
  thebody.classList.add("body-loader");
  
});
#body-section {
  position: relative;
  padding-left: 50px;
  padding-top: 50px;
  padding-right: 50px;
  height: 350px;
  width: 0px;
  transition: width 2s;
  border-color: #ffffff;
  border-style: solid;
  border-width: 1px 1px 3px 3px;
  border-radius: 3px 9px 3px 0px;
  /*
  top: -752px;
  left: 325px;
  background-color: #222222;
  */
}

#body-section.body-loader {
  width: 745px;
}
<div id="body-section">
  <h1>Home</h1>
  <p>Hello.<br><br>Temp</p>
</div>