CSS绘制图形

对于接触HTML不久或不太深入的朋友们来说,制作图形可能最先想到的是canvas。但实际上单纯用CSS也可以绘制很多有意思的图形。

1. 矩形
div{
  width: 100px;
  height: 100px;
  border: 1px solid black;
  background-color: black;
}

实际上,一个div本身就是一个矩形,横平竖直,只要把想要的矩形边长通过width以及height进行定义就可以了,不要忘记加上边框 or 背景颜色,不然你可能什么都看不到。

2. 等腰直角三角形

等腰三角形的绘制方法有很多种,我来说一种我觉得很不错的方法。

.triangle{
  width: 0;
  height: 0;
  border: 100px solid transparent;
  border-bottom-color: black;
}

当我第一次看到这种方法的时候,我可以说是大吃了一惊,他让我对css的兴趣一下变得浓厚了。对于一个小白来讲,一瞬间可能不太能够理解其原理,接下来我要放一张图,帮助大家理解。


css绘制三角形原理
3. 其他方向的等腰直角三角形
.triangle{
  width: 0;
  height: 0;
  border: 90px solid transparent;
  border-left-color: green;
  border-top-width:0;
}

还是放一张图帮助理解。


其他方向的等腰直角三角形
4. 正五边形
*{
 margin:0;padding:0;
}

.pentagon{
  width: 0;
  height: 0;
  border-left: 50px solid transparent; 
  border-right: 50px solid transparent; 
  border-bottom: 38px solid red;
}
.pentagon::after{ 
  content:'';
  position: absolute;
  top:38px;
  left:0;
  width: 62px;
  border-width: 58px 19px 0 19px; 
  border-style: solid; 
  border-color: red transparent transparent transparent; 
}

这之中牵扯到一些数学问题,所以感谢好朋友@陈曦的数学支援。


正五边形
5. 太极图
.taiji {
   width: 96px;
   height: 48px;
   background: white;
   border-color: black;
   border-style: solid;
   border-width: 2px 2px 50px 2px;
   border-radius: 100%;
   position: relative;
}

.taiji:before {
   content: "";
   position: absolute;
   top: 50%;
   left: 0;
   background: white;
   border: 18px solid black;
   border-radius: 100%;
   width: 12px;
   height: 12px;
}

.taiji:after {
   content: "";
   position: absolute;
   top: 50%;
   left: 50%;
   background: black;
   border: 18px solid white;
   border-radius:100%;
   width: 12px;
   height: 12px;
}
太极图
小结

    示例4.五边形与5.太极图都用到了::after与::before伪类。伪类实际上就是一个伪元素,只不过在没有定义它的时候,它是看不见的。所有的非空标签都具有伪类,比方说<input>标签就不具有伪类。
    使用伪元素可以代替没什么卵用的非空标签,而且看起来B格甚高,通过display:block使伪元素可见。在伪元素需要使用绝对定位时,不需要写block,因为position:absolute默认会使它可见。大部分非空标签可用的基本css属性伪元素也都可以使用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对CSS了解越多,越觉得CSS能做很多有趣的事情。今天主要整理CSS的绘图功能。 一、绘制一个简单三角形 首先我们...
    盛夏晚清风阅读 1,106评论 5 7
  • 之前曾经练习过纯css绘制的各种图形,当时是跟着前端网的一个文章敲得代码,觉得效果挺不错的,图片如下: 可以在gi...
    天空之城有点蓝阅读 146评论 0 2
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,932评论 0 6
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,870评论 1 92
  • Scroller是一个专门用于处理滚动效果的工具类,可能在大多数情况下,我们直接使用Scroller的场景并不多,...
    Ten_Minutes阅读 574评论 0 1