遇到需要實現如下圖標
由圖形分析,梯形,平行四邊形等都可以由矩形變形而來。
而想要實現梯形,需要進行3D變換,需要使用css3的 perspective屬性。
屬性 perspective
指定了觀察者與 z=0 平面的距離,使具有三維位置變換的元素產生透視效果
當為元素定義 perspective 屬性時,其子元素會獲得透視效果,而不是元素本身。
DEMO:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> body { background: #eee; } .a { position: relative; width: 40px; height: 200px; background:transparent; /* perspective: 1em; */ } .a::before { content: ""; position: absolute; border: 1px solid #ddd; background-color: #fff; top: 0; right: 0; bottom: 0; left: 0; transform: perspective(1em) rotateY(3deg); /* transform: rotateY(3deg); */ } .a:hover:before{ background-color: transparent; } </style> </head> <body> <div class="a"></div> </body> </html>
上面代碼中的
transform: perspective(1em) rotateY(3deg);
可以由代碼中注釋的兩行代碼替換。