html - 从容器底部开始内容并向上推

标签 html css

所以我想要完成的事情看起来像简单的 CSS 等。我正在更改消息系统以及从底部开始的对话,例如 Facebook 或文本消息,其中一个人在左边,另一个人在左边正确的。

如何在通过 ajax 添加新内容时让 div 上升?我看到这个similar question但是不太明白他的意思 focus on the LI。一个例子会很棒。

最佳答案

也许是这样的?

<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}
function newEl(tag){return document.createElement(tag);}
function newTxt(txt){return document.createTextNode(txt);}
function prependChild(parent, element)
{
    if (parent.childNodes)
        parent.insertBefore(element, parent.childNodes[0]);
    else
        parent.appendChild(element)
}


window.addEventListener('load', mInit, false);

function mInit()
{
    byId('btnAddNew').addEventListener('click', onAddBtnClicked, false);
}

function onAddBtnClicked()
{
    var txtInputElem = byId('newMsgTxtInput');
    var msgTxt = txtInputElem.value;

    var li = newEl('li');
    li.appendChild( newTxt( msgTxt ) );

    var ulTgt = byId('msgTarget');

    var existingLiItems = ulTgt.querySelectorAll('li');
    var numItemsExisting = existingLiItems.length;
    if (numItemsExisting%2 != 0)
        li.className = 'even';
    else
        li.className = 'odd';

    prependChild(ulTgt, li);
}

</script>
<style>
.controls
{
    display: inline-block;
    padding: 8px;
    margin: 8px;
    border: solid 1px #555;
    border-radius: 4px;
    color: #777;
    background-color: #ddd;
}
#msgTarget
{
    width: 275px;
    border: solid 1px #555;
    margin: 8px;
    border-radius: 4px;
}

/*
 Doesn't work 'properly' - since we add items at the top, rather than the bottom
 The first item added will be 'even', then the second item gets added and now it's the first child 'even'
 so, the item added first is now an 'odd' child. A better way may be to count the number of existing li
 items the ul contains, before assigning the new li elements a class of even or odd that will enable css
 styling.
#msgTarget li:nth-child(odd)
{   
    background-color: #CCC;
}
#msgTarget li:nth-child(even)
{   
    background-color: #5C5;
}
*/

.odd
{   
    background-color: #CCC;
}
.even
{   
    background-color: #5C5;
}

</style>
</head>
<body>
    <div class='dlg'>
        <div class='controls'>
            <input id='newMsgTxtInput'/><button id='btnAddNew'>Add message</button>
        </div>
        <ul id='msgTarget'></ul>
    </div>
</body>
</html>

关于html - 从容器底部开始内容并向上推,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15967913/

相关文章:

html - CSS3 Shadowbox - 仅在底部

Javascript/jQuery - 将 CSS 样式应用于类元素

Javascript 函数变量传递语法问题

javascript - 如何仅使 li 值可点击并生成 anchor ?

jquery - 将类更改为 ID 时功能不起作用

html - 为移动 View 垂直对齐 div

html - IE11 z-index 问题

css - 方向改变时如何将多个绝对位置div更改为手机屏幕的中心?

html - Chrome 错误中的边界半径?

html - 自动缩放 HTML 页面