资讯专栏INFORMATION COLUMN

使用CSS画个图标

沈建明 / 1938人阅读

摘要:具体样式如下绘制图标三当我们能深入理解一些属性的时候,实现一些复杂的图标完全不是难事无非就是将简单的图形组合起来。

CSS绘制图标(一)

我们使用单个标签绘制一个文件的图标。HTML内容很简单,就一句话。

右上角折叠三角采用after伪元素实现,左下角文字使用before伪元素实现。
主体部分当然还是div#doc

具体CSS样式如下:

#doc {  
    position: relative;    
    width: 155px;
    height: 200px;
    background: #0776ec;
    margin: 100px auto 0;
    border-radius: 10px;
}
#doc:after {
    position: absolute;
    content: "";
    right: 0;
    top: 0;
    width: 0;
    height: 0;
    border:30px solid #59a8eb;
    border-top-color: #fff;
    border-right-color: #fff;
    border-bottom-left-radius: 10px;
}
#doc:before {
    position: absolute;
    content: "CSS";
    bottom: 10px;
    left: 10px;
    color: #fff;
    font: 700 30px/30px "Microsoft YaHei";
}

一切似乎很美好,我们如愿以偿的实现了该有的效果:

但是:这个效果还是有问题:当我们把浏览器背景颜色修改之后就可以发现了。

那如何做才能使右上角的白色三角区域为透明色呢?

CSS绘制图标(二)

到了解决问题的时候了,想要解决这个问题就不能不提box-shadow这CSS属性了。

思路:还是使用after伪元素画出右上角的三角形,但是需要使其border-top-colorborder-right-color为透明色,主体部分的蓝色使用after伪元素的box-shadow来模拟(给一个 很大的扩张半径)。

box-shadow: 0 0 0 180px #0776ec;

所以可以看到效果是这样的。

然后就好办了,因为box-shadow是不占位置的,将这个after伪元素直接定位到div#docx的右上(right:0;top:0;)角。接着给div#docx一个宽高值,然后用overflow:hidden属性将不必要的部分隐藏掉最后加一个圆角效果和文字就可以了。

这样一来,效果就符合我们的预期。
具体CSS样式如下:

body {
    background: pink;
}
#docx {
    position: relative;
    width: 155px;
    height: 200px;
    margin: 100px auto 0;
    border-radius: 10px;            
    overflow: hidden;
}
#docx:after {
    position: absolute;
    content: "";
    right: 0;
    top: 0;
    width: 0;
    height: 0;
    border:30px solid #59a8eb;
    border-top-color: transparent;
    border-right-color: transparent;
    border-bottom-left-radius: 10px;
    box-shadow: 0 0 0 180px #0776ec;
}
#docx:before{
    z-index: 2;            
    position: absolute;
    content: "CSS";
    bottom: 10px;
    left: 10px;
    color: #fff;
    font: 700 30px/30px "Microsoft YaHei";
}
CSS绘制图标(三)

当我们能深入理解一些CSS属性的时候,实现一些复杂的图标完全不是难事(无非就是将简单的图形组合起来)。例如:可以使用border-radius画出一个鹰嘴的形状。

#test{
    width: 100px;
    height: 100px;
    /*background: green;*/
    margin: 30px auto 0;        
    border-top:30px solid red;
    /*实现鹰嘴效果*/    
    border-top-left-radius: 80px 80px;        
}

有了这个图形基础,将各个基础图形组合起来,就能实现我们想要的任何图标。例如:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/113318.html

相关文章

  • Python入门必学,用Python练习画个美队盾牌

    摘要:环境版本操作系统引言最近我媳妇每天晚上吃饭时候也拿手机看,上厕所也在看。所以我们先把这个动作封装成一个函数抬笔移动画笔到落笔接下来就来画盾牌。盾牌的话,注意观察美队盾牌,颜色是红白红蓝。 showImg(https://segmentfault.com/img/remote/1460000018621234?w=1024&h=578); 0 环境 Python版本:3.6.6 操作系统...

    tigerZH 评论0 收藏0
  • HTML5,不只是看上去很美(第三弹:萌萌哒拓扑图分组)

    摘要:比如这种节点较多的单层拓扑稍复杂一些的再复杂一些的在这些拓扑图中常见的场景是,很多网络节点需要组成一组,这常被称为网元组。常规的分组形状有圆形矩形平行四边形等,无论哪种形状,分组多了后,就会产生审美疲劳。 前言 这段时间承蒙大家厚爱,给了我相当大码字的动力,决定节前再更一弹。最近养成了回顾总结的好习惯,sf真是个不错的地方。 最近忙着给客户折腾一个复杂的多层嵌套关系。客户一句话要好...

    mengbo 评论0 收藏0

发表评论

0条评论

沈建明

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<