视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
css3中关于transform属性实现div不定宽高垂直水平居中的详细介绍
2020-11-27 18:51:33 责编:小采
文档


transform的作用

transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。(w3cschool)

transform的兼容性

transform的兼容性还是比较乐观的。IE9以下不兼容,IE9支持代替的-ms-transform属性不过只支持2D转换。

谷歌和Safari支持代替的-webkit-transform属性。IE9以上、火狐和欧朋是兼容的。

想必大家在实际项目中肯定会遇见p不定宽和高垂直水平居中的问题。记得以前都是用js去实现。

其实用css来实现也有好几种方法。但是个人觉得还是用transform来实现更简单和方便就是不兼容IE9以下浏览器。

现在给大家展示最近项目当中运用到的实例

在写轮播图的时候下面那些圆点按钮是根据图片张数来确定按钮个数的。所以在写代码时就不能固定承载这些按钮元素的宽,而且还要居中显示。

 <p class="scroll">
 <p class="scroll_pic">
 <a href="#"><img src="img/pic1.jpg" alt=""/></a>
 <a href="#"><img src="img/pic2.jpg" alt=""/></a>
 <a href="#"><img src="img/pic3.jpg" alt=""/></a>
 <a href="#"><img src="img/pic.jpg" alt=""/></a>
 </p>
 <ul>
 <li class="scroll_in"></li>
 <li></li>
 <li></li>
 <li></li>
 </ul>
 </p>
.scroll {
 width: 720px;
 height: 410px;
 margin: 0 auto;
 margin-top: 100px;
 overflow: hidden;
 position: relative;
}.scroll ul {
 padding: 10px 0px;
 -webkit-transform: translateX(-50%);
 -ms-transform: translateX(-50%);
 transform: translateX(-50%);
 position: absolute;
 bottom: 0px;
 left: 50%;
}.scroll ul li {
 float: left;
 margin: 0px 5px;
 width: 16px;
 height: 16px;
 border-radius: 16px;
 border:1px #73B613 solid;
 background: #FCBE47;
 box-sizing: border-box; 
}.scroll ul li.scroll_in{
 background:#FF6600;
}

上面实例当中承载这些按钮的是一个ul元素,ul元素没用定宽高,写了一个定位left:50%离左边百分之五十,如果不写transform的话这样并不居中,右边宽度会包括自身ul的宽度。

transform: translateX(-50%); 这一句的作用就是让ul相对自身位置水平左移自身50%的宽度。这样就刚好实现我们想要的效果。

在实际项目当中我们用的多的还有就是模态框,用p模拟弹窗效果。

上图中的图片是水平垂直居中的。

<p class="demo">   <img src="img/pic3.jpg" /></p>
.demo{
 position: fixed;
 top:50%;
 left:50%;
 transform:translate(-50%,-50%);
 -webkit-transform: translateX(-50%);
 -ms-transform: translateX(-50%);
}

其实上面实例和我们写弹窗让其居中是一样的。是不是很简单,有了这个我们就不要用写这么多js求来求去的了。

下载本文
显示全文
专题