[javascript技巧] 模拟动画开/关窗口

本文介绍了一组使用JavaScript实现的函数,这些函数可以模拟网页中窗口的打开和关闭动画效果。通过逐步调整窗口大小来实现平滑过渡,适用于需要增强用户体验的场景。

我写一组函数,用来模拟打开和关闭窗口的动画效果。

函数调用说明:

closeWin(id),id为div的id字符串,同时div要在显示状态才会执行。
openWin(id),id为div的id字符串,同时div要在隐藏状态才会执行。

下面有代码实例,另外也可以从这个地址看到效果:http://cds.gameres.com/samples/javascriptTech/donghua.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Sank Orange">
<META NAME="Keywords" CONTENT="javascript技巧">
<META NAME="Description" CONTENT="模拟动画开/关窗口">
<script>
function closeWin(id) {
 var elem=document.getElementById(id);
 if(elem==null || elem.style.display=="none") return;
 if(window.operatingWin) {
  elem=window.operatingWin;
  elem.closing--;
 }
 else {
  if(elem.style.display=="none") return;
  elem.closing=15;
  elem.maxClosing=15;
  elem.offWidth=elem.offsetWidth/(elem.closing+1);
  elem.offHeight=elem.offsetHeight/(elem.closing+1);
  elem.maxWidth=elem.offsetWidth;
  elem.maxHeight=elem.offsetHeight;
 }
 
 if(elem.closing>0) {
  if(elem.offsetWidth-1>elem.offWidth) elem.style.width=elem.offsetWidth-elem.offWidth;
  if(elem.offsetHeight-1>elem.offHeight) elem.style.height=elem.offsetHeight-elem.offHeight;
  window.operatingWin=elem;
  setTimeout("closeWin('"+id+"')", 10);
 }
 else {
  elem.style.display="none";
  window.operatingWin=null;
 }
}

function openWin(id) {
 var elem=document.getElementById(id);
 if(elem==null) return;
 if(window.operatingWin) {
  elem=window.operatingWin;
  elem.closing++;
 }
 else {
  if(elem.style.display!="none") return;
  elem.style.display="block";
 }
 
 if(elem.closing<elem.maxClosing) {
  elem.style.width=elem.offsetWidth+elem.offWidth;
  elem.style.height=Number(elem.offsetHeight)+Number(elem.offHeight);
  window.operatingWin=elem;
  setTimeout("openWin('"+id+"')", 10);
 }
 else {
  elem.style.width=elem.maxWidth;
  elem.style.height=elem.maxHeight;
  window.operatingWin=null;
 }
}

</script>
<style>
.Win {
 position: absolute;
 border: 2px outset #CCCCCC;
 background-color: #f0f0f0;
 padding: 10px;
 left: 13%;
 font-size: medium;
 overflow: hidden;
 top: 10%;
}
button {
 font-size: medium;
}
</style>
</HEAD>

<BODY>
  <DIV class="Win" id="awin">
   <DIV>
    <p align="center"><a href="http://blog.youkuaiyun.com/cds27/">Sank Orange Blog</a></p>
    <p align="center"><a href="http://cds.gameres.com/samples/javascriptTech/donghua.html">从这里进入看实际页面效果</a></p>
    <p align="center">点下面按钮关闭窗口</p>
   </DIV>
   <p align="center">
    <BUTTON onclick="closeWin('awin')">Close</BUTTON>
   </p>
  </DIV>

<BUTTON onclick="openWin('awin')">Open</BUTTON>
</BODY>
</HTML>
 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值