JS實(shí)現(xiàn)模仿微博發(fā)布效果實(shí)例代碼
效果:

思路:
利用多功能浮動(dòng)運(yùn)動(dòng)框架實(shí)現(xiàn)微博效果,首先,將textarea中的屬性添加到新創(chuàng)建的li里面然后,再將li添加到ul里面,再利用浮動(dòng)運(yùn)動(dòng)框架將數(shù)據(jù)動(dòng)態(tài)的顯示出來(lái)。
代碼:
<head runat="server">
<title></title>
<style type="text/css">
*
{
margin: 0;
padding: 0;
}
#ul1
{
width: 300px;
height: 300px;
border: 1px solid black;
margin: 10px auto;
overflow: hidden;
}
#ul1 li
{
list-style: none;
padding: 4px;
border-bottom: 1px #999 dashed;
overflow: hidden;
opacity: 0;
}
</style>
<script type="text/javascript">
window.onload = function () {
var btn = document.getElementById('btn');
var txt = document.getElementById('t1');
var oUl = document.getElementById('ul1');
btn.onclick = function () {
var cLi = document.createElement('li');
cLi.innerHTML = txt.value; //將數(shù)據(jù)添加到li里面
txt.value = '';
if (oUl.children.length > 0) { //判斷是否已經(jīng)有l(wèi)i,如果有那么就插入,如果沒(méi)有那么就新建
oUl.insertBefore(cLi, oUl.children[0]);
} else {
oUl.appendChild(cLi);
}
var iHeight = cLi.offsetHeight; //獲得li的高度
cLi.style.height = '0';
move(cLi, { height: iHeight }, function () { //然后利用浮動(dòng)運(yùn)動(dòng)將數(shù)據(jù)顯示出來(lái)
move(cLi, { opacity: 100 });
});
}
}
//------------------------------------------------------------------------------------
//獲取非行間樣式
function getStyle(ojb, name) {
if (ojb.currentStyle) {
return ojb.currentStyle[name];
}
else {
return getComputedStyle(ojb, false)[name];
}
}
//緩沖運(yùn)動(dòng)json的應(yīng)用
//json{attr,finsh}
//json{width:200,height:200}
function move(obj, json, fnName) { //obj是對(duì)象,Json是對(duì)象的屬性, fnName是函數(shù)
clearInterval(obj.timer); //關(guān)閉之前的計(jì)時(shí)器
obj.timer = setInterval(function () {
var timeStop = true; //記錄屬性是否都已經(jīng)執(zhí)行完成
for (var attr in json) { //遍歷json中的數(shù)據(jù)
var oGetStyle = 0;
if (attr == 'opacity') { //判斷透明度
oGetStyle = Math.round(parseFloat(getStyle(obj, attr)) * 100); //透明度取整,然后轉(zhuǎn)換完后賦值
}
else {
oGetStyle = parseInt(getStyle(obj, attr));
}
var speed = (json[attr] - oGetStyle) / 5; //求速度
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); //進(jìn)位取整
if (oGetStyle != json[attr])
timeStop = false;
if (attr == 'opacity') { //透明度
obj.style.filter = 'alpha(opacity:' + (oGetStyle + speed) + ')'; //給透明度賦值
obj.style.opacity = (oGetStyle + speed) / 100;
}
else {
obj.style[attr] = oGetStyle + speed + 'px'; //移動(dòng)div
}
}
if (timeStop) { //如果所有屬性都已經(jīng)執(zhí)行完成,那么就關(guān)閉計(jì)時(shí)器
clearInterval(obj.timer);
if (fnName) { //當(dāng)關(guān)閉計(jì)時(shí)器后要執(zhí)行的函數(shù)
fnName();
}
}
}, 30)
}
//------------------------------------------------------------------------------------
</script>
</head>
<body>
<textarea id="t1"></textarea>
<input type="button" id="btn" value="發(fā)布" />
<ul id="ul1">
<li style="display: none;"></li>
</ul>
</body>
相關(guān)文章
新手學(xué)習(xí)前端之js模仿淘寶主頁(yè)網(wǎng)站
淘寶網(wǎng)大家在熟悉不過(guò)了,那么淘寶網(wǎng)首頁(yè)模板是怎么做的呢?今天小編抽時(shí)間給大家分享新手學(xué)習(xí)前端之js模仿淘寶主頁(yè)網(wǎng)站的相關(guān)資料,需要的朋友可以參考下2016-10-10
iframe實(shí)現(xiàn)與父頁(yè)面跨域隔離的JavaScript?代碼沙箱
這篇文章主要介紹了使用iframe實(shí)現(xiàn)與父頁(yè)面跨域隔離的JavaScript代碼沙箱,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
詳解JavaScript數(shù)組過(guò)濾相同元素的5種方法
本篇文章主要介紹了詳解JavaScript數(shù)組過(guò)濾相同元素的5種方法,詳細(xì)的介紹了5種實(shí)用方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05
7個(gè)你應(yīng)該知道的JS原生錯(cuò)誤類型
這篇文章主要介紹了7個(gè)你應(yīng)該知道的JS原生錯(cuò)誤類型,對(duì)此感興趣的同學(xué),可以參考一下2021-04-04
JavaScript Event學(xué)習(xí)第四章 傳統(tǒng)的事件注冊(cè)模型
在這一章我會(huì)講解給元素注冊(cè)事件的最好的一種辦法,那就是:確保一個(gè)特定的事件在特定的HTML元素上發(fā)生并且能運(yùn)行特定的腳本。2010-02-02
JS實(shí)現(xiàn)前端動(dòng)態(tài)分頁(yè)碼代碼實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)前端動(dòng)態(tài)分頁(yè)碼代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
【經(jīng)驗(yàn)總結(jié)】編寫(xiě)JavaScript代碼時(shí)應(yīng)遵循的14條規(guī)律
這篇文章主要介紹了編寫(xiě)JavaScript代碼時(shí)應(yīng)遵循的14條規(guī)律,涉及javascript變量的定義,函數(shù)、表單、json的使用,邏輯運(yùn)算與頁(yè)面元素操作技巧等,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2016-06-06
bootstrap實(shí)現(xiàn)二級(jí)下拉菜單效果
這篇文章主要為大家詳細(xì)介紹了bootstrap實(shí)現(xiàn)二級(jí)下拉菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
js 實(shí)現(xiàn)獲取name 相同的頁(yè)面元素并循環(huán)遍歷的方法
下面小編就為大家?guī)?lái)一篇js 實(shí)現(xiàn)獲取name 相同的頁(yè)面元素并循環(huán)遍歷的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02

