javascript - 加载内容后动画 div 元素大小

标签 javascript html css

我有一个链接和一个空的 div 元素:

 <div class='content'>
    <a href='#' onclick="loadData('about')">About</a>
    <div id='data'>
    </div>
  </div>

当用户点击“关于”链接时,JavaScript 函数会触发并加载<div id='data'> 的innerHTML 的xml 数据。 ,结果:

    <div class='content'>
       <a href='#' onclick="loadData('about')">About</a>
       <div id='data'>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
 eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
 minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip 
ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
 voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
 sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
 mollit anim id est laborum.</p>
       </div>
    </div>

你能告诉我如何设置 div 大小的动画吗? 我的 CSS 看起来像这样:

.content {
    color: white;
    border: 6px double white;
    min-width: 400px;
    padding: 1em;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate3d(-50%, -50%, 0);
    z-index: 99;
    text-align: center;
    font-family: Georgia, sans-serif;
    font-weight: 300;
    background-color: #2f5afc;
    box-shadow: 0 1em 4em -1em black;
    text-shadow: black 0 0 4px;
}
p {
    height: 12em;
    overflow-y: scroll;
    color: white;
    font-size: 1.2em;
    text-align: justify;
    margin: 1em;
    line-height: 160%;
}

这里没有使用 JQuery 库。

最佳答案

如果您迎合现代浏览器,那么您可以使用 transition CSS 属性:

transition: all 0.25s linear 0s;

下面是一个片段,展示了它在实践中如何工作。

var strings = {
  'about' : "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
};
var data = document.getElementById("data");
var open = false;
function test(area) {
  open = !open;
  if(open) {
    data.innerHTML = '<p>' + strings[area] + '</p>';
    data.style.height = '12em';
  } else {
    data.innerHTML = '<p></p>';
    data.style.height = '1em';
  }
}
document.getElementById("loadAbout").onclick = function(){
  test('about');
}
.content {
    color: white;
    border: 6px double white;
    min-width: 400px;
    padding: 1em;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate3d(-50%, -50%, 0);
    z-index: 99;
    text-align: center;
    font-family: Georgia, sans-serif;
    font-weight: 300;
    background-color: #2f5afc;
    box-shadow: 0 1em 4em -1em black;
    text-shadow: black 0 0 4px;
    transition: all 0.25s linear 0s;
}
#data {
    height: 1em;
    overflow-y: scroll;
    color: white;
    transition: all 0.25s linear 0s;
    line-height:20px;
}
<div class='content'>
  <a href='#' id="loadAbout">About</a>
  <div id='data'>
  </div>
</div>

关于javascript - 加载内容后动画 div 元素大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37584504/

相关文章:

javascript - 如何将滚动条从表格内部移动到表格外部?

Html 和 Css 文件没有链接

css - 已编辑的 Chrome 扩展程序 - chrome 认为它是恶意软件

javascript - 使用媒体查询设置背景图像的不透明度

javascript - Bootstrap : Slideup/Slidedown or Accordion in Panel

javascript - 错误: Invalid value for <image> attribute when passing in variable

javascript - 从外部 jscript 调用时 document.getElementById() 返回 null

javascript - 语法错误 : Unexpected token e in JSON at position 1

html - 我可以做些什么来用 css 修改复选框的颜色吗?

javascript - 流式传输通过 Websocket 接收的大数据文件作为下载