巧用translate设置元素垂直水平居中

之前在做手机项目时,用到很多自定义弹窗,然后要求都垂直水平要居中,最开始的时候想用calc来计算,可是css3 的calc兼容性不是很好,于是后来就借助了js来计算,

今天偶然看到别人的一个方法,瞬间感觉自己做了很多无用功~~

translate,translate,translate,translate。。

简单的css代码就可以实现:

.align{width:300px;
       height:300px;
       border:5px solid #666;
       position:absolute;
       left:50%;
       top:50%;
       -webkit-transform:translate(-50%,-50%)  //这是关键
}

而且经过试验,translate 函数当中使用百分比是以该元素的内容区、补白(padding)、边框(border)为标准计算的,这就是说 ,不论我们加何种padding或border都不会影响结果。

同时,在动画方面,translate 来制作的动画比绝对定位的动画更加平滑。

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

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

时间: 2024-10-15 00:56:50

巧用translate设置元素垂直水平居中的相关文章

尺寸自适应的元素垂直水平居中

尺寸自适应的元素垂直水平居中: 如果子元素的尺寸是固定的,那么将其设置为垂直水平居中将会是比较容易的事情,这里就不做介绍了,具体可以参阅css实现div水平垂直居中代码一章节. 如果子元素的尺寸不是固定的,那么将其设置为垂直居中就有点麻烦了,下面看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" co

div+css实现未知宽高元素垂直水平居中

div+css实现未知宽高元素垂直水平居中.很多同学在面试的时候都会遇到这样的问题:怎么用div+css的方法实现一个未知宽高的弹出框垂直水平居中??如果用JS的话就好办了,但是JS的使用会对页面性能造成影响,而且能用CSS实现的干嘛用JS呢,嘿嘿 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>div+css实现未

css如何实现未知宽高块元素垂直水平居中效果

<!doctype html><html><head><meta charset="utf-8"><title>块元素垂直水平居中</title><style> ul,li{list-style:none;padding:0;margin:0;} .content{border-top:1px solid #8e8e8e;border-bottom:1px solid #8e8e8e;width:100

让一个元素垂直水平居中的三种方法

第一种方法: div.box{ weight:200px; height:400px; <!--把元素变成定位元素--> position:absolute; <!--设置元素的定位位置,距离上.左都为50%--> left:50%; top:50%; <!--设置元素的左外边距.上外边距为宽高的负1/2--> margin-left:-100px; margin-top:-200px; } *兼容性好;缺点:必须知道元素的宽高 ------------- 第二种方法:

让一个元素垂直水平居中的三种方法【转】

第一种方法: div.box{ weight:200px; height:400px; <!--把元素变成定位元素--> position:absolute; <!--设置元素的定位位置,距离上.左都为50%--> left:50%; top:50%; <!--设置元素的左外边距.上外边距为宽高的负1/2--> margin-left:-100px; margin-top:-200px; } *兼容性好;缺点:必须知道元素的宽高 ------------- 第二种方法:

CSS垂直水平居中

通过之前总结水平居中与垂直居中的基本方法,梳理垂直水平同时居中的方法就没有那么乱了. text-align:center + line-height 如下图,div2中用text-align+line-height实现单行文本水平垂直居中. 也可以将div2设置为inline-block实现div垂直水平居中. text-align:center + vertical-align:middle 如果想让div2在div1中居中,那么需要将父元素设置text-align:center,因为居中效果

采用translate实现垂直水平居中

今天分享一个利用css3新特性实现垂直水平居中的方法. 通过对元素进行绝对定位再配合transform中的translate实现. 代码如下: html <div id="content"> <div class="a"> <img src="...jpg" /> </div> </div> css #content{position:relative;height:300px;widt

js实现未知宽高的元素在指定元素中垂直水平居中

js实现未知宽高的元素在指定元素中垂直水平居中:本章节介绍一下如何实现未知宽高的元素在指定元素下实现垂直水平居中效果,下面就以span元素为例子,介绍一下如何实现span元素在div中实现水平垂直居中效果,代码如下: <!DOCTYPE html><html><head><meta charset=" utf-8"><meta name="author" content="http://www.soft

CSS样式—— 字体、元素的垂直水平居中

1.CSS样式与HTML中标签属性的区别: 标签的属性是采用 属性名="属性值" 表示的 CSS样式是采用名值对 属性名:属性值: 表示的 2.内联元素(行内元素)与块元素 (1)内联元素及其特点:   所谓的行内元素,指的是只占自身大小,不会独占一行          常见的内联元素:   a img iframe span           span没有任何语义,span标签专门用来选中文字,并对该文字设置样式 对内联元素设置宽高是无效的,也不可以设置行高,其宽度和高度都默认被元