博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现一个平行四边形
阅读量:5961 次
发布时间:2019-06-19

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

需求如题,想了下用普通的变换如旋转、缩放、位移都是无法实现的。

无奈之下谷歌,网友们提供了两个实现方式,第一个是通过border的方式,这个比较tricky;第二种方式很吸引人,原来变换中除了我上面提到的三种方式之外,还有一个skew,英文意思是歪曲,正是实现平行四边形的利器。

width: 200px;height: 100px;background-color: blue;transform: skew(15deg,0);

clipboard.png

接下来我们看看这个skew函数怎么工作的

从MDN网站上看到的介绍
skew(ax, ay)
其中

ax Is an <angle> representing the angle to use to distort the element
along the abscissa.

字面意思是沿着x轴进行变形,那就是相对纵轴变形了;同理ay是沿着y轴,就是相对x轴变形。

还有这么一句话规定了变形的规则

The coordinates of each point are modified by a value proportionate to
the specified angle and the distance to the origin; thus, the farther
from the origin a point is, the greater will be the value added it.

这句话告诉我们离原点越远的坐标改变越大,而且这种改变是等比例的。

我们了解下屏幕坐标系长什么样子。

clipboard.png

可以看到原点在左上角,x轴向右延伸,y轴向下延伸。

回头看上面的例子transform: skew(15deg,0);中第一个参数表示沿着x轴的变化,就是相对y轴的变化,这个变化值是15deg,正好就是我们画出的效果图。

再来看看上面提到的用border如何实现。

实现思路是通过拼两个三角形来模拟平行四边行,而矩形又可以通过border来实现,我们先看看如何实现一个三角形

clipboard.png

如图可以隐藏另外三个边来实现一个三角形,两个三角形就可以形成一个平行四边形

三角形的斜率可以通过宽高比不同来实现。

.orgram:before { content: ""; display:block; position: absolute; border: 10px solid transparent; border-top-color: red; height: 0px; width: 0px;}.orgram:after { content: ""; display:block; position: absolute; left: 18px; margin-top:-10px; border: 10px solid transparent; border-bottom-color: red; height: 0px; width: 0px;}

clipboard.png

转载地址:http://pqjax.baihongyu.com/

你可能感兴趣的文章
PowerDesigner生成Excel版本的数据库文件
查看>>
Oracle 查找常见耗性能的语句
查看>>
java 通过反射获取调用类方法及属性
查看>>
thinkphp 开启页面的Trace信息
查看>>
mysql 链接数满了的错误 ERROR 1040 (HY000): Too many connections
查看>>
android textview字体加下划线
查看>>
springMVC 定时任务
查看>>
Mint8(ubuntu16.04) 搭建微信Web开发工具
查看>>
PostgreSQL数据类型-数据类型简介和布尔类型
查看>>
PostgreSQL数据类型-二进制数据和字符串数据类型与字符串函数
查看>>
shell 基础
查看>>
twisted的LineReceiver的接口定义
查看>>
浅解用PHP实现MVC
查看>>
MySQL常用操作
查看>>
Yxcms网站管理系统安装
查看>>
字符串,链表,树
查看>>
Nginx错误日志(error_log)配置及信息详解
查看>>
Highcharts 学习笔记
查看>>
高性能python编程之协程
查看>>
PHP编译过程中常见错误信息的解决方法
查看>>