具有多行文本的元素,如何将它们向上溢出?

时间:2014-10-07 20:59:55

标签: javascript jquery css

http://jsbin.com/dodiha/1/edit?html,css,js,output

所以基本上我有一个" log"显示最近消息的元素。默认情况下,它是折叠的,只有1行高。你可以将鼠标悬停在它上面以使其更高。关键是它固定在页面底部。当我追加文字时,我想看到它,而不是第一行。

所以这就是它的样子:

---------------
| first line  |  visible
---------------
| second line |  hidden
| third  line |  hidden

这就是我想要的样子:

| first  line |  hidden
| second line |  hidden
---------------
| third line  |  visible
---------------

我已尝试过" vertical-align"的所有变体。希望能够正确定位文本。显然我可以做prepend而不是append,它适用于折叠视图,但是当我展开日志窗口时,消息按时间倒序排列。可以把它想象成一个命令提示符,其中最新消息位于底部,顶部消息消失,但您可以向上滚动以查看历史记录。



function log(m) {
  $('#log').append('<div>' + m + '</div>')
}
  
$("#add").on('click',function() {
  log("New Entry Added...")
})

$('#log').hover(
  function() {
        $('#log').animate({"height":"200px"})
  },
  function() {
    $('#log').animate({"height":"30px"})
  }
)

$(document).ready(function() {
  log('Document Ready.')
  
})
&#13;
#log {
  position: absolute;
  bottom: 100px;
  left: 5px; right: 5px;
  background-color: lightgray;
  height: 30px;
  line-height: 30px;
  font-size: 20px;
  padding-left: 10px;
  overflow: hidden;
  float: bottom;
}
&#13;
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<div id="log"></div>
<button id="add">Add Entry</button>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

这是一种简单的方法,只需最少的代码更改

演示 http://jsfiddle.net/zwvgfkjo/

HTML:

  <div id="log">
    <div class="wrapper">
    </div>
  </div>
  <button id="add">Add Entry</button>

CSS:

.wrapper {
    position: absolute;
    left: 0;
    bottom: 0;
}

#log {
  position: absolute;
  bottom: 100px;
  left: 5px; right: 5px;
  background-color: lightgray;
  height: 30px;
  line-height: 30px;
  font-size: 20px;
  padding-left: 10px;
  overflow: hidden;
  float: bottom;
}

JS:

function log(m) {
  $('#log .wrapper').append('<div>' + m + '</div>');
}

$("#add").on('click',function() {
  log("New Entry Added...")
})

$('#log').hover(
  function() {
    $('#log').animate({"height":"200px"})
  },
  function() {
    $('#log').animate({"height":"30px"})
  }
)

$(document).ready(function() {
  log('Document Ready.')

})

答案 1 :(得分:1)

试试这个:

<div id="log-wrapper">
  <div id="log"></div>
</div>
#log {
  position: absolute;
  bottom: 0;
}

&#13;
&#13;
function log(m) {
  $('#log').append('<div>' + m + '</div>')
}
  
$("#add").on('click',function() {
  log("New Entry Added...")
})

$('#log-wrapper').hover(
  function() {
        $('#log-wrapper').animate({"height":"200px"})
  },
  function() {
    $('#log-wrapper').animate({"height":"30px"})
  }
)

$(document).ready(function() {
  log('Document Ready.')
  
})
&#13;
#log-wrapper {
  position: absolute;
  bottom: 100px;
  left: 5px; right: 5px;
  background-color: lightgray;
  height: 30px;
  line-height: 30px;
  font-size: 20px;
  padding-left: 10px;
  overflow: hidden;
  float: bottom;
}
#log {
  position: absolute;
  bottom: 0;
}
&#13;
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<div id="log-wrapper">
  <div id="log"></div>
</div>
<button id="add" type="button">Add Entry</button>
&#13;
&#13;
&#13;