请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 11016|回复: 8

拖动层效果,兼容IE和FF! [复制链接]

aultoale 楼主

番茄红了

金牌会员 手机认证 

帖子
1560
体力
4013
威望
41
居住地
广东省 广州市
发表于 2006-7-4 17:31:00 |显示全部楼层
一个拖动效果,根据论坛的一些帖子改的,但还有一些BUG一直没法解决,谁能帮我改改?
当第一次拖动层时,层的位置会偏离很远。

 提示:您可以先修改部分代码再运行

西部数码顶级域名注册商39元抢注!
99818 
帖子
49
体力
143
威望
1
发表于 2006-7-4 23:23:00 |显示全部楼层

 提示:您可以先修改部分代码再运行

租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

子虚乌有

荣誉管理 手机认证 

帖子
8391
体力
26707
威望
187
居住地
江苏省 苏州市
发表于 2006-7-5 01:06:00 |显示全部楼层
呃。。。这涉及到一个style的问题。。。

在ie和firefox中,obj.style这个东西实际上只是取得元素中属性style中的值!

如下例,你会发现style块中的属性一个都取不到!

 提示:您可以先修改部分代码再运行



看到了没?前两个style 为空,后两个才有值。

如果是ie,问题很好解决,只要把style改成currentStyle即可。
ie only

 提示:您可以先修改部分代码再运行




而在firefox下,则采用另外一种方式:
ff only

 提示:您可以先修改部分代码再运行



我绕了半天,你明白你的错误原因了吗?你的style全都是文档级style,而你试图获取left的时候,第一次获得的只是0,自然会把你的框给挪到边上去了。

下面是我改了之后的代码:

 提示:您可以先修改部分代码再运行





---------------
附解决问题的过程:
1、首先debug,看表现,就知道是在第一次点击的时候,对象的左右边距出错,变成0
2、找到代码中对应位置,输出left和top
3、知道原因,我之前已经知道currentStyle的效果,所以我不需要去网络上搜索相关资料
4、但是我不知道在firefox下如何处理
5、我在google里直接搜索“currentStyle firefox”,很快就找到符合我目的的信息
6、测试通过,发帖子。

使用道具 举报

快乐笛子

中级会员

帖子
228
体力
843
威望
4
发表于 2006-7-11 17:41:00 |显示全部楼层
在ie和firefox中,obj.style这个东西实际上只是取得元素中属性style中的值!

如果是ie,问题很好解决,只要把style改成currentStyle即可。


谢谢 Sheneyan
我之前在项目中也遇到此问题,我一般都笨笨地写一行js初始化元素的style,现在看来真的很笨~

使用道具 举报

宝疙瘩

高级会员

帖子
382
体力
850
威望
35
居住地
山西省 太原市
发表于 2006-7-12 18:21:00 |显示全部楼层
还是有一些小问题,拖动的时候这个不能用滚轮操作的。拖动的太在底部了就拖不上去了,需要按好几次才行。建议参考dw8的拖动代码。
研究心得:
-1-拖动可以靠两种计算方法:
第一种: 保存层与鼠标的相对位移,然后不断得到鼠标位置再加上位移就是层的位置。
第二种:不断计算鼠标的位移,层的位置加上鼠标的位移就是新的位置。
这两者都各有优缺点。
-2-
事件需要是 body 的 onmousemove
-3-
可能使用了xhtml以后 如果出现了垂直滚动条, 拖动功能在 i e6 工作不正常 ,你必须添加css来修正这个问题。其原因是 ie的滚动条并不是在body层 而是在html层。可以使用css强制滚动条在body层。
大概是这样的:
<style type="text/css">
html{
        overflow: hidden;
        height:100%;
}
body {
        width:100%;
        height: 100%;
        overflow: auto;
        background: #fff;
        margin: 0px;
        padding:0px;
        position:relative;
}
</style>

[ 本帖最后由 mickeyboy 于 2006-8-10 14:32 编辑 ]
Extjs,JQuery
ibatis,glassfish
Dream,Eclipse

使用道具 举报

帖子
78
体力
219
威望
0
发表于 2006-11-30 02:39:42 |显示全部楼层
Sheneyan 强人啊
楼主可否放出最终Chat程序的演示?
虚心学习

使用道具 举报

shgen 
帖子
261
体力
640
威望
0
发表于 2008-10-30 14:01:28 |显示全部楼层
提醒:最后回贴距现在 701 天,请不要无意义回复
原帖由 Sheneyan 于 2006-7-5 01:06 发表
呃。。。这涉及到一个style的问题。。。

在ie和firefox中,obj.style这个东西实际上只是取得元素中属性style中的值!

如下例,你会发现style块中的属性一个都取不到!
[html]

#test{width:100px;backgroun ...


这个好

使用道具 举报

panula 
帖子
4
体力
19
威望
0
发表于 2008-10-30 14:44:57 |显示全部楼层
强人呐,好好学习了。
好好学习!

使用道具 举报

帖子
5
体力
20
威望
0
发表于 2009-1-11 17:18:30 |显示全部楼层
好东西,正需要收藏了,谢谢
dsaiyin

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 08:49 , Processed in 0.111594 second(s), 10 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部