js控住DOM实现发布微博效果
这段代码的效果具体是输入标题和内容,点击发布把消息发布出去,并使最新的消息始终在内容的最上面,代码为:
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>微博消息效果</title>
<style>
*{margin:0;padding:0;}
.warp{
width:600px;
margin:50pxauto0;
background-color:#ccc;
}
#box{
width:600px;
height:340px;
/*background-color:#ccc;*/
position:relative;
/*overflow:hidden;*/
/*margin:50pxauto0;*/
font-family:'微软雅黑';
}
#box.span1{
position:absolute;
font-size:16px;
line-height:16px;
top:10px;
left:5px;
}
#box.span2{
position:absolute;
font-size:16px;
line-height:16px;
top:50px;
left:5px;
}
#title{
position:absolute;
width:460px;
height:20px;
line-height:20px;
font-size:16px;
text-indent:5px;
left:70px;
top:6px;
}
#text{
position:absolute;
width:460px;
height:250px;
resize:none;
top:50px;
left:70px;
text-indent:5px;
font-size:16px;
}
#box#prompt{
position:absolute;
top:312px;
left:340px;
}
#prompt1{
position:absolute;
top:312px;
left:340px;
display:none;
}
#send{
position:absolute;
height:25px;
width:60px;
line-height:20px;
font-size:16px;
top:310px;
right:68px;
}
#news{
list-style:none;
width:490px;
margin:10pxauto0px;
padding-bottom:5px;
}
#newsli{
width:490px;
font-size:14px;
overflow:hidden;
background-color:#fff;
margin-bottom:5px;
position:relative;
}
#newslih1{
font-size:16px;
line-height:20px;
}
#newslip{
text-indent:5px;
clear:left;
}
#newslispan{
position:absolute;
top:0px;
right:0px;
cursor:pointer;
}
#newsspan:hover{
color:red;
}
</style>
</head>
<body>
<divclass="warp">
<divid="box">
<spanclass='span1'>标题:</span>
<inputid="title"type="text">
<spanclass="span2">内容:</span>
<textareaid="text"></textarea>
<emid="prompt">还可以输入<varid="textnum">200</var>字</em>
<emid="prompt1">你已超出<varid="textnum1"></var>字</em>
<buttonid="send">发送</button>
</div>
<ulid="news">
<li><h1></h1><span></span>
<p></p>
</li>
</ul>
</div>
<script>
vartitle=document.getElementById('title');
vartext=document.getElementById('text');
varsend=document.getElementById('send');
varul=document.getElementById('news');
varlis=ul.getElementsByTagName('li');
varprompt=document.getElementById('prompt');
varprompt1=document.getElementById('prompt1');
vartextnum=document.getElementById('textnum');
vartextnum1=document.getElementById('textnum1');
vartimer1=null,timer2=null;
send.onclick=function(){
if(text.value==''||title.value==''){
alert('亲~标题或内容不能为空');returnfalse;
}
lis[0].innerHTML='<h1>'+title.value+'</h1><span>×</span><p>'+text.value+'</p>';
lis[0].children[1].setAttribute('id','close');
varnewLi=document.createElement('li');
ul.insertBefore(newLi,lis[0]);
maxheight=lis[1].clientHeight;
lis[1].style.height=0+'px';
varx=0;
varminstep=0;
varmaxstep=20;
varchange=maxheight/maxstep;
clearInterval(timer1);
timer1=setInterval(function(){
minstep++;
if(minstep>=maxstep){
clearInterval(timer1);
}
x+=change;
lis[1].style.height=x+'px';
},10)
title.value='';
text.value='';
varclose=document.getElementById('close');
for(vari=0;i<lis.length;i++){
close.onclick=function(){
varisme=this.parentNode;
varx=this.parentNode.clientHeight;
varminstep=0;
varmaxstep=20;
varchange=x/maxstep;
clearInterval(timer1);
timer1=setInterval(function(){
minstep++;
if(minstep>=maxstep){
clearInterval(timer1);
ul.removeChild(isme);
}
x-=change;
isme.style.height=x+'px';
},10)
//ul.removeChild(lis[i]);//不可以,不知道绑定的是第几个。
}
}
}
text.onfocus=function(){
//console.log(prompt.children[0].innerHTML);//children是指带有标签的子节点;
timer2=setInterval(function(){
if(text.value.length<190){
varnum=200-text.value.length;
textnum.style.color='black';
//prompt.style.color='black';
textnum.innerHTML=num;//
//prompt.innerHTML='还可以输入<varid="textnum">'+num+'</var>字</em>';
}
if(text.value.length>=190&&text.value.length<=200){
varnum=200-text.value.length;
//prompt.style.color='black';
textnum.style.color='red';//为什么不变红呢?因为这他妹的也是一个未来事件!
//prompt.innerHTML='还可以输入<varid="textnum">'+num+'</var>字</em>';
textnum.innerHTML=num;
}
if(text.value.length>200){
varnum=text.value.length-200;
//prompt.style.color='red';
prompt.style.display='none';
prompt1.style.display='block';
textnum1.style.color='red';
textnum1.innerHTML=num;
}
//console.log(text.value.length);
},50)
}
text.onblur=function(){
clearInterval(timer2);
}
</script>
</body>
</html>
这段代码主要运用了一些DOM节点操作的知识,纯属学习之余练手作品,大家可以参考参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。