javascript - 将可滚动的 div 粘贴到屏幕底部

标签 javascript jquery html css cordova

我有一个使用 jquery、jquery-mobile、iscroll 和 iscrollview 的 cordova 应用

我并不是完全致力于这些工具中的任何一个。

我已经将 jquery-mobile 页眉/页脚固定在屏幕的顶部和底部,效果很好。

我在页眉和页脚之间有一个可滚动的 div。它将包含可变数量的数据。有时数据会小于 div 的高度,有时会更大(因此滚动)

这是棘手的部分。我想将可滚动 div 的底部粘贴到页脚的顶部。当我向 div 添加内容时,我希望最近添加的内容最接近页脚的顶部,因此可滚动的 div 的顶部看起来像随着数据的添加向上增长到页眉的底部。

一旦可滚动 div 的顶部被其内容填满,我就希望能够滚动它。

有没有人能做到这样的事情?

最佳答案

这里有一个巧妙的小技巧。

<div class="header"></div>
<div class="content"></div>
<div class="footer"></div>

现在是 CSS

div {
    width: 100%;
}

.header {
    position: absolute;
    top: 0px;
    left: 0px;
    height: 50px;
}

.footer {
    position: absolute;
    bottom: 0px;
    left: 0px;
    height: 100px;
}

/* the magic */
.content {
    position: absolute;
    top: 50px; /* matches height of header */
    bottom: 100px; /* matches height of footer */
    left: 0px;
    overflow: scroll;
}

强制 .content 同时具有顶部和底部的巧妙之处在于,它会拉伸(stretch) div 以使其始终保持正确的高度。如果你在上面指定了高度,它就不会工作,但因为高度是由 top/bottom 属性决定的,所以它是动态的。我认为这会让你到达你想去的地方。

Here's a fiddle

编辑:Here's what it looks like with content


编辑 2 - 强制内容从底部增长。

我不确定这是个好主意,而且我不确定我是否会认真推荐以这种方式做事。但是,使用 vertical-align 可以强制内容从底部增长。我怀疑最好只使用随着内容增长而缩小的 javascript 设置边距,但是......也许不会。综上所述,这是使用 CSS 执行操作的一种方法。

这需要对内容 div 进行一些重组。

<div class="content">
    <span class="margin"></span>
    <span class="inner"></span>
</div>

还有一点 CSS

span.left-margin {
    height: 98%;
    width: 0px;
    display: inline-block;
}

span.inner {
    width: 99%;
    background-color: white;
    display: inline-block;
    vertical-align: bottom;
}

It looks like this with a little content

It looks like this with a lot of content

如果您希望滚动条在内容进入时保持在底部,您需要执行一些 javascript(很容易用 google 搜索)。

我对以这种方式做事并不完全满意,因为如果您将高度设置为 100% 或将宽度设置为 100%,内容 div 会从一开始就自动获得一个滚动条。然而......它看起来相当不错,应该适用于大多数(如果不是全部)浏览器。

关于javascript - 将可滚动的 div 粘贴到屏幕底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32274891/

相关文章:

JavaScript 确认对话框不起作用,如果我放置 Asp.Net 验证控件

javascript - Uncaught ReferenceError : $j is not defined

javascript - 每 5 秒重新加载一次背景图片

python - 使用 jinja 标签在 html 标签内使用 if 条件

javascript - 相对于形状位置而不是 Canvas 位置的渐变填充?

html - 如何仅在 HTML 的底部输入中显示数据列表

javascript - VueJS Select2 指令不会触发@change 事件

javascript - 有前途的听众

javascript - 如何访问 Vuejs 设置函数内传递的 props(Composition API)

javascript - 如何从单独的 php 脚本将 JSON 数据加载到 JavaScript 中