首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最大高度子元素的自动滚动

最大高度子元素的自动滚动
EN

Stack Overflow用户
提问于 2018-10-15 12:46:03
回答 3查看 1.5K关注 0票数 0

我正在尝试为我的网站创建一个控制台/终端元素。

基本上,我希望用户输入命令并给出输出。当输出生成时,可能是几行信息。

因此,当显示新输出时,我想自动向下滚动到“new”元素。

代码语言:javascript
复制
<div class="container center">
<form class="about-form">
    <input type="text" class="about-input">
</form>
<div class="terminal">
    <div class="terminal-bar"><span class="title">info ><span class="terminal-height">terminal</span></span>
    </div>
    <p class="prompt">Name: Ruan Kranz</p>
    <p class="prompt">ROLE: full stack web developer</p>
    <p class="prompt">Level: 5+ years experience</p>
    <p class="prompt">Personality: Curious, passionate, analytical</p>
    <p class="prompt">Skills: Back-end, Front-end, DevOps, Scripting, Design</p>
    <p class="prompt">Interests: Coding, gaming, bitcoin, travel, reading, learning</p>
    <p class="prompt"></p>
    <p class="prompt">Type the words above ^1000</p>
    <p class="prompt">To leave type "exit" ^1000</p>
    <p class="prompt">Type "HELP" for a list of commands ^1000</p>
    <p class="prompt output new-output"></p>
</div>

我用velocity.js来做这件事

代码语言:javascript
复制
$('.new-output').velocity(
    'scroll'
), {
    duration: 100
}

如果.terminal不在一个最大高度的容器中,这个函数就能很好地工作。

对于.center容器,我有以下CSS

代码语言:javascript
复制
 .center {
    margin: auto;
    max-width: 800px;
    min-height: 400px;
}

和.terminal

代码语言:javascript
复制
 .terminal {
     position: relative;
     display: block;
     margin: auto;
     border-radius: 10px;
     box-shadow: rgba(0, 0, 0, 0.8) 0px 20px 70px;
     clear: both;
     max-height: 400px;
     overflow-x: hidden;
     overflow-y: visible;
 }

为什么当我使用固定高度的容器时试图向下滚动用户时,它不起作用?我如何才能达到预期的结果?我不希望元素高度(或大小)发生变化,但当生成新的输出时,我希望将用户向下滚动。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-15 19:59:59

我是从以下问题解决方案中得到的:link

代码语言:javascript
复制
var $container = $('div'),
$scrollTo = $('#row_8');

$container.scrollTop(
    $scrollTo.offset().top - $container.offset().top + $container.scrollTop()
);

// Or you can animate the scrolling:
$container.animate({
    scrollTop: $scrollTo.offset().top - $container.offset().top + $container.scrollTop()
});​
票数 0
EN

Stack Overflow用户

发布于 2018-10-15 13:28:04

您可以使用javascript来实现这一点。

代码语言:javascript
复制
<div class="container center">
<form class="about-form">
    <input type="text" class="about-input">
</form>
<div class="terminal">
    <div class="terminal-bar"><span class="title">info ><span class="terminal-height">terminal</span></span>
    </div>
    <p class="prompt">Name: Ruan Kranz</p>
    <p class="prompt">ROLE: full stack web developer</p>
    <p class="prompt">Level: 5+ years experience</p>
    <p class="prompt">Personality: Curious, passionate, analytical</p>
    <p class="prompt">Skills: Back-end, Front-end, DevOps, Scripting, Design</p>
    <p class="prompt">Interests: Coding, gaming, bitcoin, travel, reading, learning</p>
    <p class="prompt"></p>
    <p class="prompt">Type the words above ^1000</p>
    <p class="prompt">To leave type "exit" ^1000</p>
    <p class="prompt">Type "HELP" for a list of commands ^1000</p>
    <p id = "output-prompt" class="prompt output new-output"></p>
</div>

并在javascript中使用这个。

代码语言:javascript
复制
window.location = window.location + '#output-prompt';

代码语言:javascript
复制
document.getElementById('output-prompt').scrollIntoView({
  behavior: 'smooth'
});

希望这能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2018-10-15 14:16:59

可以将下面的css类添加到div/p标记中,在其中希望将滚动框添加到输出中。

代码语言:javascript
复制
.scroll
{
float:left;
overflow-y: auto;
height: 460px;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52817122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档