<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>无标题页</title>
<style type="text/css">
*
{
margin:0px;
padding:0px;
}
ul
{
width:360px; position:absolute;
left:350px;
top:100px; }
ul li
{
list-style:none;
float:left;
margin:10px;
}
div
{
width:100px;
height:100px;
background:#4AA0EF;
z-index:1px; }
</style> <script src="../ajax/Move.js" type="text/javascript"></script> <script type="text/javascript">
window.onload = function(){
var oUl = document.getElementById("main"); var oLi = oUl.getElementsByTagName("li"); var mixZIndex= 2;
for(var i=0;i<oLi.length;i++)
{
//布局转换 (第一步)
oLi[i].style.left = oLi[i].offsetLeft+"px";
oLi[i].style.top = oLi[i].offsetTop +"px";
} for(var i=0;i<oLi.length;i++)
{
//将li绝对定位 (第二步)
oLi[i].style.position="absolute";
} //备注:
//第一步与第二步不能写在一个for循环之中
//不然li不能起到绝对定位作用效果 for(var i=0;i<oLi.length;i++)
{
var oDiv = oLi[i].getElementsByTagName("div")[0]; mixZIndex++;
oDiv.style.zIndex = mixZIndex;
oDiv.onmouseover = function(){
//alert(2);
move(this,{height:200,width:200,marginLeft:-50,marginTop:-50});
}; oDiv.onmouseout = function(){
move(this,{height:100,width:100,marginLeft:0,marginTop:0});
}; } }
</script>
</head> <body>
<ul id="main">
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
<li>
<div></div>
</li>
</ul>
</body>
</html>

move.js

//运动框架
//链式运动
function move(obj,json,fun)
{
//先关闭定时器
clearInterval(obj.timer); obj.timer = setInterval(function(){ //是否停止运行
var isStop = true; for(var attr in json)
{
//1、当前值
var current = 0;
//目标值
var target = json[attr];
//判断是否是透明度属性
if(attr=="opacity")
{
current = parseInt(parseFloat(getStyle(obj,attr))*100);
}
else
{
current = parseFloat(getStyle(obj,attr));
} //2、计算速度
var speed = (target-current)/6; //如果速度大于0 向上取整 如果速度小于0 向下取整
speed = speed>0 ? Math.ceil(speed) : Math.floor(speed); //计算运行结果
if(attr=="opacity")
{
//透明度兼容性
obj.style.filter="alpha(opacity:"+(current + speed)+")";
obj.style.opacity = (current + speed)/100;
}
else
{
//计算运动结果值
obj.style[attr] = current + speed +"px";
}
//判断是否所有属性都运动完成
if(current!=target)
{
isStop = false;
}
} //3、关闭定时器
//所有属性运动完成 就闭关定时器
if(isStop)
{
//关闭定时器
clearInterval(obj.timer);
//链式运动
if(fun)
{
fun();
}
} },30);
} //对象style属性值
function getStyle(obj,attr)
{
if(obj.currentStyle)
{
return obj.currentStyle[attr];
}
else
{
return getComputedStyle(obj,null)[attr];
}
}

js 布局转换问题的更多相关文章

  1. [Js]布局转换

    为什么要布局转换? 要这样的效果,单写css,只要给每个li浮动就行,不需要绝对定位.但是比如做一些效果(如鼠标移入图片变大),就需要改变位置了.直接给每个li在css上定好位置不方便,也不知道有几个 ...

  2. 【前端】Vue.js实现网格列表布局转换

    网格列表布局转换 实现效果: 实现代码及注释: <!DOCTYPE html> <html> <head> <title>布局转换</title& ...

  3. 布局转换:文档流->绝对定位

    布局转换:文档流->绝对定位(详见妙味JS高级教程,运动课程第6课20分钟起)比如一个DIV中有三张图片并排,个数不确定的布局.需要鼠标移上去图片从中心放大,只使用float:left布局在放大 ...

  4. javascript布局转换

    javascript布局转换是将原有的浮动布局通过JS里面的javascript属性 offsetLeft 和offsetTop默认值来给元素设置绝对定位. 原来的:缺点--我们想给网页中的图片添加拖 ...

  5. Js 日期转换函数(UTC时间转换及日期想加减)

    IOS上Js日期转换中new Date("yyyy-mm-dd")不能正常工作,必须使用new Date("yyyy/MM/dd"); 日期相加减: Date. ...

  6. js数值转换

    先来几个题吧: var num1 = Number("123blue");var num2 = Number("");var num3 = Number([]) ...

  7. JavaScript进阶(四)js字符串转换成数字的三种方法

    js字符串转换成数字的三种方法 在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b. ...

  8. jq选择器(jq 与 js 互相转换),jq操作css样式 / 文本内容, jq操作类名,jq操作全局属性,jq获取盒子信息,jq获取位置信息

    jq选择器(jq 与 js 互相转换) // 获取所有的页面元素jq对象 $('css3选择器语法'); var $box = $(".box:nth-child(1)"); 获取 ...

  9. Js强制转换

    Js强制转换 ParseInt(a,b):整型 只能放字符串,b为基数.声明前面的数是几进制.因为只能放字符串,所以无论放什么都转换为字符串: 如果String以0x开头则为16进制的整数: ‘036 ...

随机推荐

  1. 【Java】 异常

    异常分类 所有的异常都是由Throwable继承而来,但在下一层理解分解为两个类Error和Exception. Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误.应用程序不应该跑 ...

  2. 退役前的记录(2018.10.14-NOIP2018)

    退役前的记录 诸位好,我是\(CJ\)最菜的\(Oier\),已经是\(G2\)的老年选手了,不知道什么时候就会退役了,总之\(G1\ double\)的机会已经没有了,去年因为联赛失利而止步,而今年 ...

  3. Codeforces965E Short Code 【启发式合并】【堆】

    题目大意: 给出总长度不超过1E+5的不重复字符串集,给每个字符串选一个前缀使得可以区分它. 题目分析: KAN出的DIV2难度一般不高,想升Ranting的可以试试. 简单的树上启发式合并,建出Tr ...

  4. HTML for android 移动小球

    <html> <head> <title>球</title> <style type="text/css"> .test ...

  5. 神奇的操作——线段树合并(例题: BZOJ2212)

    什么是线段树合并? 首先你需要动态开点的线段树.(对每个节点维护左儿子.右儿子.存储的数据,然后要修改某儿子所在的区间中的数据的时候再创建该节点.) 考虑这样一个问题: 你现在有两棵权值线段树(大概是 ...

  6. 洛谷 P1054 等价表达式 解题报告

    P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的 ...

  7. 【bzoj1565】 NOI2009—植物大战僵尸

    http://www.lydsy.com/JudgeOnline/problem.php?id=1565 (题目链接) 题意 给出$n*m$的棋盘,僵尸攻击每个格子可以获得$v$的分数,每个格子又会保 ...

  8. CF 1023

    昨天晚上打的一场CF,口胡一下前4题吧. A要注意细节,先找*,如果没有就判两者相等. 然后注意长度n - 1 <= m,然后前后比较,最后判断中间是不是字母. B先判断有没有解,然后求出 k ...

  9. EasyUI 树形菜单加载父/子节点

    通常表示一个树节点的方式就是在每一个节点存储一个 parentid. 这个也被称为邻接列表模型. 直接加载这些数据到树形菜单(Tree)是不允许的. 但是我们可以在加载树形菜单之前,把它转换为标准标准 ...

  10. 笔记: c开发gui程序 (WM_CREATE, WS_CLIPCHILDREN , SetWindowPos)

    过去两年,用c写的gui程序我一般使用的套路是: 在 winMain()中, 先创建一个主窗口, 紧接着就是在下面创建子窗口(子控件). 可能是因为写这方面的程序较少,所以也没遇到什么大问题,之前就是 ...