translate与绝对定位、相对定位的区别

在表现上看,使用 CSS3 translate 函数和绝对定位、相对定位属性加上 top、left 数值都可以使元素产生位移。实际上它们还是有不少的区别。

一:元素视图属性中的 offsetLeft 和 offsetTop 属性。

我们分别用相对定位和 translate 的方法来使元素产生位移:
1.使用相对定位使元素产生位移

	*{
		margin:0;
		padding:0;
	}
    #box1 {
        position: relative;
        width: 50px;
        height: 50px;
        background-color: blue;
        top: 100px;
        left: 300px;
   }

2.使用translate使元素产生位移

	*{
		margin:0;
		padding:0;
	}
   #box2 {
       width: 50px;
       height: 50px;
       background-color: red;
       -ms-transform: translate(300px,100px);
       -moz-transform: translate(300px,100px);
       -o-transform: translate(300px,100px);
       transform: translate(300px,100px);
   }

然后看看两者的 offsetTopoffsetLeft 的数值:

        var box1Left = document.getElementById("box1").offsetLeft;
        var box1Top = document.getElementById("box1").offsetTop;
        console.log(box1Left);//300
        console.log(box1Top);//100
        var box2Left = document.getElementById("box2").offsetLeft;
        var box2Top = document.getElementById("box2").offsetTop;
        console.log(box2Left);//0
        console.log(box2Top);//0

可以看出使用 translate 的例子的 offsetTopoffsetLeft 的数值与没有产生位移的元素没有区别,无论位移多少这两个数值都是固定不变的。

而使用相对定位的例子 offsetTopoffsetLeft 的数值则根据位移的长度发生了改变。

二、动画表现的区别

CSS3 属性还没很好地被浏览器支持的时候,我们常常会使用绝对定位(position:absolute),然后结合 jQuery 改变元素的 top、left 的数值来做位移的动画效果。

然而,两者在位移动画的表现上也有一定的区别。借用国外博主 Paul Irish 的两个例子:
Animating with Top/Left
Animating with Translate

对比两个例子来看,可以看出使用 translate 来制作的动画比绝对定位的动画更加平滑。

原因在于使用绝对定位的动画效果会受制于利用像素(px)为单位进行位移,而使用 translate 函数的动画则可以不受像素的影响,以更小的单位进行位移。

另外,绝对定位的动画效果完全使用 CPU 进行计算,而使用 translate 函数的动画则是利用 GPU,因此在视觉上使用 translate 函数的动画可以有比绝对定位动画有更高的帧数。

三、最后

CSS3 动画相关的属性出现以后,可以让我们更加轻松地制作复杂的动画,同时 position:relativeposition:absolute 这一类的属性可以回归它们原本的定位,为定位、布局服务,而将动画的重任交给 CSS3 的相关属性。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Bootstrap是一个流行的前端框架,提供了许多用于快速开发响应式布局的CSS类和JavaScript插件。相对定位绝对定位CSS中的两种定位方式,Bootstrap也支持这两种定位方式。 相对定位(Relative Positioning)是指元素相对于其默认位置进行定位,通过CSS属性`position: relative`来实现。通常会伴随着`top`、`bottom`、`left`、`right`等属性来指定元素的偏移量。相对定位不会使元素脱离文档流,仍会占用原来的空间。 例如,在Bootstrap中,你可以使用以下CSS类将一个元素进行相对定位: ```html <div class="position-relative"> <p class="position-absolute top-0 start-50 translate-middle">这是一个相对定位的段落</p> </div> ``` 上面的代码将`<p>`元素相对于`<div>`元素进行定位,通过`position-absolute`类来指定元素的绝对定位,并通过`top-0`、`start-50`和`translate-middle`等类来指定元素的偏移量和居中对齐方式。 绝对定位(Absolute Positioning)是指元素相对于最近的具有定位(position属性值为relative、absolute、fixed或sticky)的祖先元素进行定位,通过CSS属性`position: absolute`来实现。通常会伴随着`top`、`bottom`、`left`、`right`等属性来指定元素的偏移量。绝对定位会使元素脱离文档流,不再占用原来的空间。 例如,在Bootstrap中,你可以使用以下CSS类将一个元素进行绝对定位: ```html <div class="position-relative"> <p class="position-absolute top-0 start-50 translate-middle">这是一个绝对定位的段落</p> </div> ``` 上面的代码与相对定位的代码类似,但是通过将`<p>`元素的`position`属性设置为`absolute`来实现绝对定位。 总的来说,相对定位绝对定位都是CSS中常用的定位方式,具体使用哪种方式取决于具体的需求。在Bootstrap中,你可以通过提供的CSS类来轻松实现相对定位绝对定位

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值