javascript - 如何制作一个从底部平滑扩展到视口(viewport) 85% 的 div?

标签 javascript jquery html css

我这里有这段代码(请以展开模式打开):

#wrapper {
  position: fixed;
  background: gray;
  color: #fff;
  bottom: 0;
  left: 0;
  right: 0;
  border-radius: 12px 12px 0 0;
  width: 100%;
}

#title {
  text-align: center;
  padding: 15px;
  border-bottom: 1px solid white;
}

#notifications {
  display: flex;
  flex-direction: column;
      overflow: scroll;
    overflow-x: hidden;
}

.entry {
  padding: 15px;
}
<div id="wrapper">
  <div id="title">Notifications</div>
  <div id="notifications">
    <div class="entry">Test</div>
    <div class="entry">Test</div>
    <div class="entry">Test</div>
    <div class="entry">Test</div>
    <div class="entry">Test</div>
    <div class="entry">Test</div>
    <div class="entry">Test</div>
  </div>
</div>

当您探索附近时,它应该像在 Google map 中一样。就像从底部向上滑动 div 一样。当标题未展开时,标题应该可见,但通知不可见。当我单击标题时,我希望将元素平滑地扩展到视口(viewport)的 85%,以便用户可以滚动通知。当他再次单击标题时,它应该返回到初始状态。

这可能吗?如果是,怎么办?

最佳答案

要在展开和折叠两种状态之间进行更改,您需要某种 JavaScript。

就 CSS 而言,我建议使用 #wrapper 而不是使用 bottom: 0,而是使用 top: calc(100% - 42px)(42px 应该是您想要可见的高度)对于折叠状态,然后 top: 15% 对于展开状态。

对于它的“平滑”部分,您只需要添加一个过渡动画即可。

这是一个基本的代码笔,显示了我的意思:https://codepen.io/milesgrover/pen/gOpbrpd

关于javascript - 如何制作一个从底部平滑扩展到视口(viewport) 85% 的 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60118180/

相关文章:

javascript - 改变第二列的颜色

javascript - 如何创建一个下拉菜单,选择后会更新输入字段?

javascript - 实现 jQuery 下拉效果

JavaScript - 从 2 个下拉菜单中计算它们之间的值

javascript - 为什么这段 jQuery 代码在 Chrome 和 Firefox 中工作正常,但在 IE9 中却不行?

javascript - 一种在浏览器中启用或禁用媒体查询的方法也适用于 Safari

javascript - 在javascript中获取x和y坐标中的插入符位置

javascript - 如何在 ASP.NET 中对图像源 url 进行哈希处理

html - 防止 div 重叠为堆叠的 div 格式

HTML5 CSS3 Frameworks Sass/Compass/320&up/susy/HTML5boilerplate一起玩?