translate和position的比较

  有很多css属性可以影响元素定位,比如float,margin,padding,position,translate()。表面上来看,position:relatative和transform:translate()似乎作用一致,但其实他们之间也有几个差别,本篇文章就将比较这两个属性。

1.浏览器支持情况

  position是css2的属性,transform是css3的属性,在ie8及以下的浏览器是不支持2d transform的。

2.GPU加速

  transform属性可以使用硬件加速,这就使得当元素变换或者动画时,translate()性能表现要优于position的。

  关于硬件加速原理,可以看我之前的总结文章http://www.cnblogs.com/shytong/p/5419565.html

3.百分数的基准不同

  当属性值是百分数时,translateX和translateY分别以自身宽高为标准,而当应用position时,left/top中的百分数是以最近定位父元素的宽高为标准的。

  当我们未知宽高元素水平垂直居中时,我们可以使用决定定位加translate(-50%,-50%)。

时间: 2024-08-27 19:32:35

translate和position的比较的相关文章

[转]IFTTT开源Swift编写的帧动画框架--RazzleDazzle

RazzleDazzle 是IFTTT开源的一个iOS帧动画框架,用Swift编写,非常适用于APP初次使用时的介绍和引导信息.RazzleDazzle由IFTTT此前开源的一款Objective-C滚动帧动画库JazzHands发展而来.JazzHands是UIKit一个简单的关键帧基础动画框架,可通过手势.scrollview.KVO或者ReactiveCocoa控制动画,被IFTTT应用在IFTTT for iPhone上.多款知名应用程序都使用了JazzHands这个框架,目前其在git

CSS居中完全解决方案

上次面试面试官问到了,问了个定宽局中和不定宽局中,下来我把所有有关CSS居中都总结了一下 原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 水平居中 行内元素 把行内元素嵌套在一个DIV中,并且在DIV中设置以下样式 a{ text-align: center; } 块级元素 对于定宽的块级元素,我们要设置起margin-top,margin-right 为auto .center{ margin: 0 auto; } 多个块级元素(inline-block) 多个

各种居中方式小记

1.单行内容的居中 .middle-demo-1{height: 4em;line-height: 4em;overflow: hidden;} 2.父元素未设置高度,内容居中 .middle-demo-2{padding-top: 24px;padding-bottom: 24px;} 3.子元素有固定高度,使用绝对定位的 div,把它的 top 设置为 50%,top margin 设置为负的 content 高度. #content { position:absolute; top:50%

9月开发总结

1.html5启动动画: <link rel="apple-touch-startup-image" href="/startup.png">通过media来控制横屏和竖屏启动动画:// iPhone<link href="apple-touch-startup-image-320x460.png" media="(device-width: 320px)" rel="apple-touch-sta

CSS中的元素居中

水平居中 内联级或类似内联级的元素 如果需要居中的元素是内联元素(display为inline or inline-*),如text或a时,则可以将其放在块级父元素中,像这样: .center-children {   display:block;   text-align: center; } 这对display为 inline, inline-block, inline-table, inline-flex等样式的元素有用. 源码: HTML <header>  This text is

CSS水平垂直居中方法总结

部分HTML代码如下: <div class="wrap block"> <div class="block-center">块儿居中</div> </div> <div class="wrap inline"> <span class="inline-center">内联居中</span> </div> 一.absolute 拔河

css 盒子水平垂直居中

<div class="container"> <div class="content">我是内容盒子</div> </div> /*方法一:position margin: auto*/ .container { position: relative; } .content { position: absolute; top: 0: left: 0; right: 0: bottom: 0; margin: auto

父节点使用css的transform: translate(0, 0)时position:fixed在chrome浏览器中无效

今天在做移动端的页面,无意间发现了一个Chrome浏览器下的一个bug,在使用CSS3的transform: translate(0, 0)属性对节点A进行位置转化,此时A节点下面有一个字节点B,节点B使用了position:fixed进行了定位,按照常理节点B应该悬挂在浏览器窗口视图上,不会跟随滚动条而滚动的,但是这个效果在Chrome浏览器下面是无效的,经过测试在IE11.Firefox.safari中均没有问题,在Opera中出现的效果和Chrome中完全一样. 总结一下:在Chrome和

position left50% transition:translate(-50%) 未指定元素的宽度 内容挤下问题

没有指定长度width的情况 使用position:absolute left:50% transform:translateX(-50%) bug:当文字宽度超过屏幕一般以上的时候,文字会被挤下. 原始代码: <div class="tips">让身边的 “Ta” 们更了解你的货车生活</div> .tips{ position: absolute; bottom: 20.4rem; left:50%; transform: translateX(-50%);