CSS能够生成各种形状。正方形和矩形很容易,因为它们是 web 的自然形状。添加宽度和高度,就得到了所需的精确大小的矩形。添加边框半径,你就可以把这个形状变成圆形,足够多的边框半径,你就可以把这些矩形变成圆形和椭圆形。
我们还可以使用 CSS 伪元素中的 ::before 和 ::after,这为我们提供了向原始元素添加另外两个形状的可能性。通过巧妙地使用定位、转换和许多其他技巧,我们可以只用一个 HTML 元素在 CSS 中创建许多形状。
虽然我们现在大都使用字体图标或者svg图片,似乎使用 CSS 来做图标意义不是很大,但怎么实现这些图标用到的一些技巧及思路是很值得我们学习。
圆
| 1 | div { | 
四个不同方向的半圆
| 1 | .top | 
四分之一圆
| 1 | { | 
椭圆
| 1 | { | 
菱形
| 1 | .quarter-ellipse{ | 
三角形
| 1 | /* 上三角 */ | 
箭头
| 1 | #curvedarrow { | 
梯形
| 1 | #trapezoid { | 
六角星
| 1 | #star-six { | 
五角星
| 1 | #star-five { | 
五边形
| 1 | #pentagon { | 
六边形
| 1 | #hexagon { | 
八边形
| 1 | #octagon { | 
爱心💗
| 1 | #heart { | 
无穷大(莫比乌斯环)
| 1 | #infinity { | 
钻石
| 1 | #cut-diamond { | 
吃豆人
| 1 | #pacman { | 
对话泡泡
| 1 | #talkbubble { | 
太极
| 1 | #yin-yang { | 
放大镜
| 1 | #magnifying-glass { | 
月亮
| 1 | #moon { | 
虚线
| 1 | .dotted-line{ | 
气泡框
使用绝对定位进行三角形覆盖,实现气泡框突出部分。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37<style>
.bubble-tip {
  width: 100px;
  height: 30px;
  line-height: 30px;
  margin-left: 10px;
  border: 1px solid #c5c5c5;
  border-radius: 4px;
  position: relative;
  background-color: #fff;
}
.bubble-tip::before {
  content: "";
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 10px 10px 10px 0;
  border-color: transparent #ffffff transparent transparent;
  position: absolute;
  top: 5px;
  left: -10px;
  z-index: 2;
}
.bubble-tip::after {
  content: "";
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 10px 10px 10px 0;
  border-color: transparent #c5c5c5 transparent transparent;
  position: absolute;
  top: 5px;
  left: -11px;
  z-index: 1;
}
</style>
<div class="bubble-tip"></div>
卡券贴
在CSS3当中,background添加了background-size属性,控制背景图片的大小,配合background-position属性,可以在一个背景下面展示多张图片。详见background-MDN。
background-size: cover;使背景图像完全覆盖背景区域。也可以js获取图片宽高再比较一下,再决定往哪个方向居中。
卡券贴的核心是使用透明白色径向渐变radial-gradient,分别让4张背景图中的左下角、右下角、右上角和左下角出现缺省,再利用drop-shadow实现元素阴影,从而达到效果。
radial-gradient语法如下:
1
radial-gradient(shape size at position, start-color, ..., last-color)
| 1 | <style> | 
图片切角
| 1 | background: url(image.png); | 
1px高的线条
| 1 | <div style="height:1px;overflow:hidden;background:red"></div> | 
 
        