《CSS揭秘》笔记(十), 梯形效果
发布日期:2022-02-15 02:36:20 浏览次数:3 分类:技术文章

本文共 1280 字,大约阅读时间需要 4 分钟。

《CSS揭秘》笔记(十)

梯形效果

3D旋转模拟

并没有一组2D变形属性能生成一个梯形,但是我们可以利用透视关系在css中用3D旋转来模拟出这个效果:

.box1{

 width: 100px;  height: 50px;  margin: 20px;  background-color: #58a;  transform: perspective(.5em) rotateX(5deg);}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wb4v0kXV-1589989910848)(3图形/img/51.png)]

但是如图所示,它依然有瑕疵,容器中的文字也跟着变形了。然而,与2D图形不同的是,它的内部的变形效果是不可逆转的,不能使用逆向变形的来抵消外部变形。

因此我们可以用伪元素的方案把变形效果作用在伪元素上。

.box2{

 position: relative;  display: inline-block;  padding: .5em 1em .35em;  color: white;}.box2::before{
 content: '';  position: absolute;  top: 0;  right: 0;  bottom: 0;  left: 0;  z-index: -1;  background-color: #58a;  transform: perspective(.5em) rotateX(5deg);}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fk1O62u5-1589989910852)(3图形/img/52.png)]

然而这个方案依然存在着问题,我们还未设置transform-origin,因此应用的变形效果会让这个元素以它自身的中心线为轴进行空间上的旋转,它的尺寸会比较难以掌握。

为了让它的尺寸更好掌握,可以为它指定transform-origin: bottom;,当它在3D空间中旋转时,可以把它的底边固定住,致使它只会有高度上发生变化。在垂直方向的缩放程度(也就是scaleY()变形属性到达130%时,可以弥补变形时高度上的缩水。

.box3{

 position: relative;  display: inline-block;  padding: .5em 1em .35em;  color: white;  }.box3::before{
 content: '';  position: absolute;  top: 0;  right: 0;  bottom: 0;  left: 0;  z-index: -1;  background-color: #58a;  transform-origin: bottom;  transform: perspective(.5em) rotateX(5deg) scaleY(1.3) perspective(.5em);}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uoV2Y9R5-1589989910854)(3图形/img/53.png)]

我们把transform-origin修改成bottom leftbottom right,就可以立即得到左侧倾斜或右侧倾斜的梯形。

然而需要注意的是以上的效果中的斜边角度依赖于元素的宽度,对于内容长度不等却想要得到斜度一致的梯形就不合适了。

本篇文章是《CSS揭秘》一书的笔记,如果侵犯到了原著作者的权益,请联系我删除。

转载地址:https://blog.csdn.net/PeZXO/article/details/106247268 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:《css揭秘》笔记(八),平行四边形和菱形的生成
下一篇:《css揭秘》笔记(九),切角效果

发表评论

最新留言

逛到本站,mark一下
[***.173.107.214]2022年07月24日 12时05分07秒
能坚持,总会有不一样的收获!
[***.67.29.252]2022年07月24日 12时05分02秒