【问题标题】:Vertical auto scroll, textarea pinned at bottom of div垂直自动滚动,文本区域固定在 div 的底部
【发布时间】:2015-11-25 17:40:08
【问题描述】:

我有以下列表:

.outer-container{ height: 300px; width: 300px;}

.container {
    position: relative;
    border: solid 1px red;
    height: 100%;
    width: 100%;
    overflow: auto;
}
.inner { 
    position: absolute; 
    bottom: 0; 
    width: 100%;
}
.item{
    text-align: center;
    padding: 12px;
    border-bottom: 1px solid yellow;
    
}
.add{
    width: 100%;
    min-height: 30px;
    border-top: 1px solid orange;
    border-bottom: 1px solid orange;
    
}
.add textarea{
    border: none;
    width: 100%;
    padding: 0;
}
    
<div class="outer-container">
    <div class="container">
        <div class="inner">
            <div class="list">
                <div class="item">item</div>
                <div class="item">item</div>
                <div class="item">item</div>
                <div class="item">item</div>
                <div class="item">item</div>
                <div class="item">item</div>  
                <div class="item">item</div>
            </div>
            <div class="add">    
               <form>
                  <textarea placeholder="Add some text"></textarea>
               </form>
            </div>
        </div>
        
    </div>
</div>

jsfiddle 在这里: http://jsfiddle.net/gubs5fg7/

文本区域将在输入时展开。

我试图让滚动仅在 div.list 元素上处于活动状态(溢出-y),即 textarea 旁边没有滚动条。我觉得我需要添加更多具有绝对和相对定位的嵌套 div,但我想知道有没有办法让它像现在一样工作? (编辑 - 没有 javascript 可以吗?)

.outer-container div 的高度取决于窗口大小,因此并不总是 300 像素。

【问题讨论】:

    标签: jquery css


    【解决方案1】:

    试试:

    * { box-sizing: border-box; }
    
    .outer-container{ height: 300px; width: 300px;}
    
    .container {
        position: relative;
        border: solid 1px red;
        height: 100%;
        width: 100%;
        overflow-y: scroll;
    }
    .inner { 
        bottom: 0; 
        width: 100%;
        overflow:vizibile;
    }
    .item{
        text-align: center;
        padding: 10px;
        border: 1px solid yellow;
    }
    .add{
        width: 100%;
        min-height: 30px;
        border: 1px solid orange;
    }
    .add textarea{width: 100%; border: none;resize: vertical;}
    

    jsfiddle:http://jsfiddle.net/gubs5fg7/2/

    或根据您的需要:

    $('textarea').on('keypress',function(){
        $('.list').css({'margin-bottom': $('textarea').height()+'px'});
    });
    

    css:

    .add {
        position: relative;
    }
    .add textarea{width: 100%; border: none;resize: vertical;
    position:absolute;
        bottom:0;
    }
    

    jsfiddle:http://jsfiddle.net/gubs5fg7/5/

    【讨论】:

    • 感谢您的回答。这会将滚动条放在 .container 元素上,但是,我希望滚动条位于 .list 元素上,以便将文本区域固定在底部
    • 谢谢 - 这仍然对我不起作用。我根本不希望文本区域右侧有滚动条 - 文本区域应该是 .outer-container 的全宽。滚动条应仅跨越 .list div,并且仅在需要时。我想知道没有javascript也可以做到这一点
    猜你喜欢
    • 2014-12-20
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多