javascript - 通过javascript触发高度变化的CSS转换

标签 javascript html css transition

我正在尝试通过使用 javascript 更改高度来触发元素的过渡效果。我已经搜索了一个答案,但我能找到的只是使用 css 动画,而我的代码与那个想法不兼容。这是我的代码;

function printVolumeLevel(level) {
  var volumeDiv = document.getElementById('volume_level');
  volumeDiv.innerHTML = "";
  var iconVolume = document.getElementById('icon_volume');
  iconVolume.innerHTML = "";

  if (OutputSettings.isAudioMuted() === false) {
    iconVolume.innerHTML += "<div  class=\"volumeOn\" /> \n";

    volumeDiv.innerHTML += "<div  class=\"volumeLevelUnfocus\" /> \n";
    volumeDiv.innerHTML += "<div  class=\"volumeLevelFocus\" /> \n";

    var volumeHeight = level * 40;

    document.getElementsByClassName("volumeLevelFocus")[0].style.height = volumeHeight + "px";
    document.getElementsByClassName("volumeLevelUnfocus")[0].style.height = (800 - volumeHeight) + "px";

  } else {
    iconVolume.innerHTML += "<div  class=\"volumeOff\" /> \n";
    document.getElementsByClassName("volumeLevelUnfocus")[0].style.setProperty("height", "800px");
  }
}
.volumeLevelFocus {
  background: #da1c5c;
  width: 40px;
  -webkit-transition: height 0.2s;
  transition: height 0.2s;
  -webkit-transition: width 0.2s;
  transition: width 0.2s;
  height: 400px;
}

.volumeLevelUnfocus {
  background: #111a21;
  width: 40px;
  -webkit-transition: height 0.2s;
  transition: height 0.2s;
  height: 400px;
}
<div id="volume_level"></div>

最佳答案

您的代码中存在多个问题:

  1. 您不能通过 /> 关闭 div , 它必须由 </div> 关闭.

  2. 要在 html 中换行,您必须使用 <br>不是 "\n"。

  3. 您没有添加 div id="icon_volume" .

  4. 如果你想添加一个元素并通过transition改变它的样式,改变必须用另一个进程来完成(在答案中setTimeot);

你的代码是这样的:

Insert_a_div_with_height(0px);

Make_the_height_of_Inserted_div(800px);

它只添加了一个高度为 800px 的 div,因此没有样式更改,因此也没有过渡。

下面是一个简化的答案:

    .volumeLevelUnfocus {
         background: #111a21;
         width: 40px;
       
        transition-duration: 5s;
        height:400px;
    }
    <div id="volume_level"></div>
    

    <script>
        var volumeDiv = document.getElementById('volume_level');
        volumeDiv.innerHTML = ""; 
       
        volumeDiv.innerHTML += "<div  class=\"volumeLevelUnfocus\" style='height:0px;'></div>";
          
       //another process to change the height of inserted div:
       setTimeout(function(){
            document.getElementsByClassName("volumeLevelUnfocus")[0].style.height = "800px";
       }, 100);

    </script>

关于javascript - 通过javascript触发高度变化的CSS转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42391440/

相关文章:

javascript - 使用类型化的 javascript/jquery 库使光标与文本大小相同

javascript - 如何分离backbone.js APP和rails APP

javascript - 爱尔兰 Eircode 验证

javascript - 单击按钮时的 CSS 动画

css - 我的 DIV 宽度没有随着它的 child 的大小而扩大

jquery - 如何使用 jQuery 制作类似雅虎的按钮?

php - Moodle 3.3.2 更改默认字体

javascript - 如何替换 div 元素中的所有 <a> href?

javascript - 换行后垂直对齐

html - 文件上传控制和 GWT 外观