收藏!44个CSS3制作的形状图形(shape)

CSS能够制作各种形状,正方形和矩形很容易,因为它们是网络的自然形状。添加一个宽度和高度,您将拥有所需的确切大小的矩形。添加边框半径,您可以绕过形状,并且足够多的半径可以将那些矩形变成圆形和椭圆形。

我们还在CSS中使用了::before::after伪元素,这使我们有可能再添加两个形状到原始元素中。通过巧妙地定位,变换和许多其他技巧,我们只需一个HTML元素即可在CSS中制作许多形状。

本文收集了44个常见的CSS3形状图形。

点击图标显示CSS代码











































/*——正方形——*/

.square {

  width: 100px;

  height: 100px;

  background: red;

} /*——正方形——*/

.square {

  width: 100px;

  height: 100px;

  background: red;

} /*——长方形——*/

.rectangle {

  width: 200px;

  height: 100px;

  background: red;

} /*——圆形——*/

.circle {

  width: 100px;

  height: 100px;

  background: red;

  border-radius: 50%

} /*——椭圆形——*/

.oval {

  width: 200px;

  height: 100px;

  background: red;

  border-radius: 100px / 50px;

} /*——三角形(向上)——*/

.triangle-up {

  width: 0;

  height: 0;

  border-left: 50px solid transparent;

  border-right: 50px solid transparent;

  border-bottom: 100px solid red;

} /*——三角形(向下)——*/

.triangle-down {

  width: 0;

  height: 0;

  border-left: 50px solid transparent;

  border-right: 50px solid transparent;

  border-top: 100px solid red;

} /*——三角形(向左)——*/

.triangle-left {

  width: 0;

  height: 0;

  border-top: 50px solid transparent;

  border-right: 100px solid red;

  border-bottom: 50px solid transparent;

} /*——三角形(向右)——*/

.triangle-right {

  width: 0;

  height: 0;

  border-top: 50px solid transparent;

  border-left: 100px solid red;

  border-bottom: 50px solid transparent;

} /*——三角形(向左上)——*/

.triangle-topleft {

  width: 0;

  height: 0;

  border-top: 100px solid red;

  border-right: 100px solid transparent;

} /*——三角形(向右上)——*/

.triangle-topright {

  width: 0;

  height: 0;

  border-top: 100px solid red;

  border-left: 100px solid transparent;

} /*——三角形(向左下)——*/

.triangle-bottomleft {

  width: 0;

  height: 0;

  border-bottom: 100px solid red;

  border-right: 100px solid transparent;

} /*——三角形(向右下)——*/

.triangle-bottomright {

  width: 0;

  height: 0;

  border-bottom: 100px solid red;

  border-left: 100px solid transparent;

} /*——弯曲箭头——*/

/*–可通过修改rotate()值改变箭头方向–*/

.curvedarrow {

  position: relative;

  width: 0;

  height: 0;

  border-top: 9px solid transparent;

  border-right: 9px solid red;

  transform: rotate(10deg);

}

.curvedarrow:after {

  content: “”;

  position: absolute;

  border: 0 solid transparent;

  border-top: 3px solid red;

  border-radius: 20px 0 0 0;

  top: -12px;

  left: -9px;

  width: 12px;

  height: 12px;

  transform: rotate(45deg);

} /*——梯形——*/

.trapezoid {

  border-bottom: 100px solid red;

  border-left: 25px solid transparent;

  border-right: 25px solid transparent;

  height: 0;

  width: 100px;

} /*——平行四边形——*/

.parallelogram {

  width: 150px;

  height: 100px;

  transform: skew(20deg);

  background: red;

} /*——六角星——*/

.star-six {

  width: 0;

  height: 0;

  border-left: 50px solid transparent;

  border-right: 50px solid transparent;

  border-bottom: 100px solid red;

  position: relative;

}

.star-six:after {

  width: 0;

  height: 0;

  border-left: 50px solid transparent;

  border-right: 50px solid transparent;

  border-top: 100px solid red;

  position: absolute;

  content: “”;

  top: 30px;

  left: -50px;

} /*——五角星——*/

.star-five {

  margin: 50px 0;

  position: relative;

  display: block;

  color: red;

  width: 0px;

  height: 0px;

  border-right: 100px solid transparent;

  border-bottom: 70px solid red;

  border-left: 100px solid transparent;

  transform: rotate(35deg);

}

.star-five:before {

  border-bottom: 80px solid red;

  border-left: 30px solid transparent;

  border-right: 30px solid transparent;

  position: absolute;

  height: 0;

  width: 0;

  top: -45px;

  left: -65px;

  display: block;

  content: ”;

  transform: rotate(-35deg);

}

.star-five:after {

  position: absolute;

  display: block;

  color: red;

  top: 3px;

  left: -105px;

  width: 0px;

  height: 0px;

  border-right: 100px solid transparent;

  border-bottom: 70px solid red;

  border-left: 100px solid transparent;

  transform: rotate(-70deg);

  content: ”;

} /*——五角形——*/

.pentagon {

  position: relative;

  width: 54px;

  box-sizing: content-box;

  border-width: 50px 18px 0;

  border-style: solid;

  border-color: red transparent;

}

.pentagon:before {

  content: “”;

  position: absolute;

  height: 0;

  width: 0;

  top: -85px;

  left: -18px;

  border-width: 0 45px 35px;

  border-style: solid;

  border-color: transparent transparent red;

} /*——六角形——*/

.hexagon {

  width: 100px;

  height: 57.735px;

  background: red;

  position: relative;

}

.hexagon::before {

  content: “”;

  position: absolute;

  top: -28.8675px;

  left: 0;

  width: 0;

  height: 0;

  border-left: 50px solid transparent;

  border-right: 50px solid transparent;

  border-bottom: 28.8675px solid red;

}

.hexagon::after {

  content: “”;

  position: absolute;

  bottom: -28.8675px;

  left: 0;

  width: 0;

  height: 0;

  border-left: 50px solid transparent;

  border-right: 50px solid transparent;

  border-top: 28.8675px solid red;

} /*——八边形——*/

.octagon {

  width: 100px;

  height: 100px;

  background: red;

  position: relative;

}

.octagon:before {

  content: “”;

  position: absolute;

  top: 0;

  left: 0;

  border-bottom: 29px solid red;

  border-left: 29px solid #2ba5bb;

  border-right: 29px solid #2ba5bb;

  width: 42px;

  height: 0;

}

.octagon:after {

  content: “”;

  position: absolute;

  bottom: 0;

  left: 0;

  border-top: 29px solid red;

  border-left: 29px solid #2ba5bb;

  border-right: 29px solid #2ba5bb;

  width: 42px;

  height: 0;

} /*——心形——*/

.heart {

  position: relative;

  width: 100px;

  height: 90px;

}

.heart:before,

.heart:after {

  position: absolute;

  content: “”;

  left: 50px;

  top: 0;

  width: 50px;

  height: 80px;

  background: red;

  border-radius: 50px 50px 0 0;

  transform: rotate(-45deg);

  transform-origin: 0 100%;

}

.heart:after {

  left: 0;

  transform: rotate(45deg);

  transform-origin: 100% 100%;

} /*——无限形状——*/

.infinity {

  position: relative;

  width: 212px;

  height: 100px;

  box-sizing: content-box;

}

.infinity:before,

.infinity:after {

  content: “”;

  box-sizing: content-box;

  position: absolute;

  top: 0;

  left: 0;

  width: 60px;

  height: 60px;

  border: 20px solid red;

  border-radius: 50px 50px 0 50px;

  transform: rotate(-45deg);

}

.infinity:after {

  left: auto;

  right: 0;

  border-radius: 50px 50px 50px 0;

  transform: rotate(45deg);

} /*——棱形——*/

.diamond {

  width: 0;

  height: 0;

  border: 50px solid transparent;

  border-bottom-color: red;

  position: relative;

  top: -50px;

}

.diamond:after {

  content: ”;

  position: absolute;

  left: -50px;

  top: 50px;

  width: 0;

  height: 0;

  border: 50px solid transparent;

  border-top-color: red;

} /*——砖石盾牌形状——*/

.diamond-shield {

  width: 0;

  height: 0;

  border: 50px solid transparent;

  border-bottom: 20px solid red;

  position: relative;

  top: -50px;

}

.diamond-shield:after {

  content: ”;

  position: absolute;

  left: -50px;

  top: 20px;

  width: 0;

  height: 0;

  border: 50px solid transparent;

  border-top: 70px solid red;

} /*——砖石窄形——*/

.diamond-narrow {

  width: 0;

  height: 0;

  border: 50px solid transparent;

  border-bottom: 70px solid red;

  position: relative;

  top: -50px;

}

.diamond-narrow:after {

  content: ”;

  position: absolute;

  left: -50px;

  top: 70px;

  width: 0;

  height: 0;

  border: 50px solid transparent;

  border-top: 70px solid red;

} /*——切割砖石形状——*/

.cut-diamond {

  border-style: solid;

  border-color: transparent transparent red transparent;

  border-width: 0 25px 25px 25px;

  height: 0;

  width: 50px;

  box-sizing: content-box;

  position: relative;

  margin: 20px 0 50px 0;

}

.cut-diamond:after {

  content: “”;

  position: absolute;

  top: 25px;

  left: -25px;

  width: 0;

  height: 0;

  border-style: solid;

  border-color: red transparent transparent transparent;

  border-width: 70px 50px 0 50px;

} /*——蛋形——*/

.egg {

  display: block;

  width: 63px;

  height: 90px;

  background-color: red;

  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;

} /*——饼状图形——*/

.pacman {

  width: 0px;

  height: 0px;

  border-right: 60px solid transparent;

  border-top: 60px solid red;

  border-left: 60px solid red;

  border-bottom: 60px solid red;

  border-top-left-radius: 60px;

  border-top-right-radius: 60px;

  border-bottom-left-radius: 60px;

  border-bottom-right-radius: 60px;

} /*——对话气泡图形——*/

.talkbubble {

  width: 120px;

  height: 80px;

  background: red;

  position: relative;

  -moz-border-radius: 10px;

  -webkit-border-radius: 10px;

  border-radius: 10px;

}

.talkbubble:before {

  content: “”;

  position: absolute;

  right: 100%;

  top: 26px;

  width: 0;

  height: 0;

  border-top: 13px solid transparent;

  border-right: 26px solid red;

  border-bottom: 13px solid transparent;

} /*——rss形状——*/

.rss {

  width: 10em;

  height: 10em;

  border-radius: 1.5em;

  background-color: #ff0000;

  font-size: 14px;

}

.rss:before {

  content: ”;

  z-index: 1;

  display: block;

  height: 2.5em;

  width: 2.5em;

  background: #fff;

  border-radius: 50%;

  position: relative;

  top: 5.75em;

  left: 1.75em;

}

.rss:after {

  content: ”;

  display: block;

  background: #ff0000;

  width: 6.5em;

  height: 6.5em;

  top: -1em;

  left: 1.9em;

  border-radius: 1.25em;

  position: relative;

  box-shadow:

  -1em 1em 0 0 #fff inset,

  -2em 2em 0 0 #ff0000 inset,

  -3em 3em 0 0 #fff inset

} /*——12点爆破形状——*/

.burst-12 {

  background: red;

  width: 80px;

  height: 80px;

  position: relative;

  text-align: center;

}

.burst-12:before,

.burst-12:after {

  content: “”;

  position: absolute;

  top: 0;

  left: 0;

  height: 80px;

  width: 80px;

  background: red;

}

.burst-12:before {

  transform: rotate(30deg);

}

.burst-12:after {

  transform: rotate(60deg);

} /*——8点爆破形状——*/

.burst-8 {

  background: red;

  width: 80px;

  height: 80px;

  position: relative;

  text-align: center;

  transform: rotate(20deg);

}

.burst-8:before {

  content: “”;

  position: absolute;

  top: 0;

  left: 0;

  height: 80px;

  width: 80px;

  background: red;

  transform: rotate(135deg);

} /*——阴阳图——*/

.yin-yang {

  width: 96px;

  box-sizing: content-box;

  height: 48px;

  background: #eee;

  border-color: red;

  border-style: solid;

  border-width: 2px 2px 50px 2px;

  border-radius: 100%;

  position: relative;

}

.yin-yang:before {

  content: “”;

  position: absolute;

  top: 50%;

  left: 0;

  background: #eee;

  border: 18px solid red;

  border-radius: 100%;

  width: 12px;

  height: 12px;

  box-sizing: content-box;

}

.yin-yang:after {

  content: “”;

  position: absolute;

  top: 50%;

  left: 50%;

  background: red;

  border: 18px solid #eee;

  border-radius: 100%;

  width: 12px;

  height: 12px;

  box-sizing: content-box;

} /*——徽章丝带形状——*/

.badge-ribbon {

  position: relative;

  background: red;

  height: 100px;

  width: 100px;

  border-radius: 50px;

}

.badge-ribbon:before,

.badge-ribbon:after {

  content: ”;

  position: absolute;

  border-bottom: 70px solid red;

  border-left: 40px solid transparent;

  border-right: 40px solid transparent;

  top: 70px;

  left: -10px;

  transform: rotate(-140deg);

}

.badge-ribbon:after {

  left: auto;

  right: -10px;

  transform: rotate(140deg);

} /*——电视屏幕形状——*/

.tv {

  position: relative;

  width: 100px;

  height: 75px;

  margin: 20px 0;

  background: red;

  border-radius: 50% / 10%;

  color: white;

  text-align: center;

  text-indent: .1em;

}

.tv:before {

  content: ”;

  position: absolute;

  top: 10%;

  bottom: 10%;

  right: -5%;

  left: -5%;

  background: inherit;

  border-radius: 5% / 50%;

} /*——人字形——*/

.chevron {

  position: relative;

  text-align: center;

  padding: 12px;

  margin-bottom: 6px;

  height: 30px;

  width: 100px;

}

.chevron:before {

  content: ”;

  position: absolute;

  top: 0;

  left: 0;

  height: 100%;

  width: 51%;

  background: red;

  transform: skew(0deg, 6deg);

}

.chevron:after {

  content: ”;

  position: absolute;

  top: 0;

  right: 0;

  height: 100%;

  width: 50%;

  background: red;

  transform: skew(0deg, -6deg);

} /*——放大镜形状——*/

.magnifying-glass {

  font-size: 10em;

  display: inline-block;

  width: 0.4em;

  box-sizing: content-box;

  height: 0.4em;

  border: 0.1em solid red;

  position: relative;

  border-radius: 0.35em;

}

.magnifying-glass:before {

  content: “”;

  display: inline-block;

  position: absolute;

  right: -0.25em;

  bottom: -0.1em;

  border-width: 0;

  background: red;

  width: 0.35em;

  height: 0.08em;

  transform: rotate(45deg);

} /*——月亮形状——*/

.moon {

  width: 80px;

  height: 80px;

  border-radius: 50%;

  box-shadow: 15px 15px 0 0 red;

} /*——旗形——*/

.flag {

  width: 110px;

  height: 56px;

  box-sizing: content-box;

  padding-top: 15px;

  position: relative;

  background: red;

  color: white;

  font-size: 11px;

  letter-spacing: 0.2em;

  text-align: center;

  text-transform: uppercase;

}

.flag:after {

  content: “”;

  position: absolute;

  left: 0;

  bottom: 0;

  width: 0;

  height: 0;

  border-bottom: 13px solid #eee;

  border-left: 55px solid transparent;

  border-right: 55px solid transparent;

} /*——圆锥形状——*/

.cone {

  width: 0;

  height: 0;

  border-left: 70px solid transparent;

  border-right: 70px solid transparent;

  border-top: 100px solid red;

  border-radius: 50%;

} /*——十字形——*/

.cross {

  background: red;

  height: 100px;

  position: relative;

  width: 20px;

}

.cross:after {

  background: red;

  content: “”;

  height: 20px;

  left: -40px;

  position: absolute;

  top: 40px;

  width: 100px;

} /*——基础——*/

.base {

  background: red;

  display: inline-block;

  height: 55px;

  margin-left: 20px;

  margin-top: 55px;

  position: relative;

  width: 100px;

}

.base:before {

  border-bottom: 35px solid red;

  border-left: 50px solid transparent;

  border-right: 50px solid transparent;

  content: “”;

  height: 0;

  left: 0;

  position: absolute;

  top: -35px;

  width: 0;

} /*——指针——*/

.pointer {

  width: 200px;

  height: 40px;

  position: relative;

  background: red;

}

.pointer:after {

  content: “”;

  position: absolute;

  left: 0;

  bottom: 0;

  width: 0;

  height: 0;

  border-left: 20px solid white;

  border-top: 20px solid transparent;

  border-bottom: 20px solid transparent;

}

.pointer:before {

  content: “”;

  position: absolute;

  right: -20px;

  bottom: 0;

  width: 0;

  height: 0;

  border-left: 20px solid red;

  border-top: 20px solid transparent;

  border-bottom: 20px solid transparent;

} /*——锁——*/

.lock {

  font-size: 4px;

  position: relative;

  width: 9em;

  height: 6.5em;

  border-radius: 1em;

  top: 5em;

  box-sizing: border-box;

  border: 1.75em solid red;

  border-right-width: 3.75em;

  border-left-width: 3.75em;

  margin: 0 0 3rem 0;

}

.lock:before {

  content: “”;

  box-sizing: border-box;

  position: absolute;

  border: 1.25em solid red;

  width: 7em;

  height: 6em;

  left: 50%;

  margin-left: -3.5em;

  top: -6em;

  border-top-left-radius: 3.5em;

  border-top-right-radius: 3.5em;

}

.lock:after {

  content: “”;

  box-sizing: border-box;

  position: absolute;

  border: 0.5em solid red;

  width: 2.5em;

  height: 4em;

  border-radius: 1.25em;

  left: 50%;

  top: -0.5em;

  margin-left: -1.25em;

}

trying >>

相关文章推荐

  • 用纯CSS实现各种方向的箭头
  • 【实例】CSS3画一个半圆的方法
  • 纯CSS实现圆角样式的4种写法,比CSS3兼容性更好
  • css3画实心圆和圆角的方法