|
|
请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2023-9-8 12:32 编辑
使用 transform 移动对象自然要用到 translate,translate 接受实体距离单位(比如px),也接受百分比(%)。
百分比(%)可以简化编程开销。比如,需要在父元素上随机分布绝对定位的子元素,可以这样处理:
子元素.style.left = Math.random() * (父元素.offsetWidth - 子元素.offsetWidth) + '%';
然鹅,设若我们使用 transform 的 translate(n%) 去移动一个对象时,我们会发现移动的距离非常之短,即便使用 100% 也会很短——实际上,使用 100% 时,对象移动的距离是该对象的宽度。
也就是说,transform 使用百分比(%)做 translate 的移动单位时,百分比所针对的是使用 transform 属性的元素自身而不是该元素所在的父元素。
这会给一些场景应用带来困难。比方说,我们要做一个全景粒子特效,使用 transform 的 translate 驱动粒子的运动,当页面在正常显示模式和全屏显示模式之间变换时,使用了 translate 的 @keyframes 关键帧动画就不能是一成不变的,它至少需要变换相应的变量,以确保粒子特效在两种或更多的显示模式之间变换时还是保持一致的运动状态。
解决方法很多,最容易想到的是监视父元素尺寸的变化,可以用一个定时器专门干这个事情。其他方法有各种 API 可用,专门监视DOM中元素变化的以及全屏状态的,都可以考虑。
|
评分
-
| 参与人数 3 | 威望 +130 |
金钱 +260 |
经验 +130 |
收起
理由
|
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
小辣椒
| + 50 |
+ 100 |
+ 50 |
很给力! |
醉美水芙蓉
| + 30 |
+ 60 |
+ 30 |
很给力! |
查看全部评分
|