使用CSS画个图标

白净水金刚
• 阅读 3409

CSS绘制图标(一)

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

<div id="doc"></div>

右上角折叠三角采用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画个图标

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

使用CSS画个图标

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

CSS绘制图标(二)

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

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

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

所以可以看到效果是这样的。
使用CSS画个图标

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

使用CSS画个图标

这样一来,效果就符合我们的预期。
具体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;        
}

使用CSS画个图标

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

使用CSS画个图标

点赞
收藏
评论区
推荐文章
橘子橙 橘子橙
4年前
vue-element-admin项目打包后,iconfont图标出现乱码
使用vueelementadmin或者vueelementtemplate开发的项目,打包到线上,就出现了图标乱码,f12后能看到icon元素为.eliconclose:before{content:"□"}的情况(如下)
徐小夕 徐小夕
3年前
前端: 如何更高效的学习Css? 有哪些库值得推荐?
之前有很多朋友问我如何快速学习css以及有哪些好用的css库,最近也抽出时间思考整理了一下,今天就和大家分享一下我的经验.如何高效学习Css之前在工作中也使用css做过很多有意思的事情,比如用css画图标,写轮播图,写动效,做布局等等,但是这些应用的实现都依赖于html和css基础知识.根据我自己的学习经验,我们需要掌
Dax Dax
3年前
前端性能优化
前端性能优化1、减少资源的请求次数和大小压缩合并js和css文件,减少http请求次数和请求资源的大小;在项目中使用webpackglup等打包编译工具2、尽量使用字体图标或者svg图标代替传统的png(jpg)图渲染更快,减少代码体积,且放大不会出现变形等3、使用图片懒加载目的是减少页面第一次加载的http请求次数,实现思路:
秃头王路飞 秃头王路飞
3年前
浏览器工作原理
浏览器渲染过程浏览器渲染1.解析HTML文件,构建DOM树,同时浏览器主进程负责下载CSS文件2.CSS文件下载完成,解析CSS文件成树形的数据结构,然后结合DOM树合并成RenderObject树3.布局RenderObject树(Layout/reflow),负责RenderObject树中的元素的尺寸,位置等计算4.绘制RenderObject树(paint),绘制页面的像素信息5.浏览器主进程将默认的图层和复合图层交给GPU进程,GPU进
她左右 她左右
4年前
微信小程序 - 引入字体图标
网站图标要想做到清晰无锯齿,使用普通图片或者雪碧图都很难达到这个目的,一般我们都会引入字体图标(svg转font,使用图标像使用字体一样,详见《web页面使用字体图标》,那么如何在微信小程序中使用自定义图标呢?请看详细步骤:1、从上选择喜欢的图标加入购物车,在购物车弹窗中点击“下载代码”后,解压阿里图库加入购物车购物车下载代码图标文件内容2.、进入导入第
徐小夕 徐小夕
4年前
《css大法》之使用伪元素实现超实用的图标库(附源码
今天我们来复盘一下前端中css伪元素的知识以及如何用css伪元素来减轻javascript的压力,做出一些脑洞大开的图形。预备知识伪元素伪元素是一个附
徐小夕 徐小夕
4年前
《前端实战总结》之使用纯css实现网站换肤和焦点图切换动画
今天我们来继续复盘一些工作中常用的css技巧和知识,以便我们可以更加优雅的用css实现富有动感的网站.你将收获网站换肤设计方案介绍:target伪类介绍和用法以及如何使用css实现网站换肤transition动画以及如何用纯css实现焦点图动画效果展示1.网站换肤(https://imghelloworld.ossc
Stella981 Stella981
3年前
Less 嵌套
本节我们学习Less中的嵌套,嵌套应该很容易理解,HTML语言中就支持标签的嵌套。我们在使用CSS时,如果想要为多层嵌套的元素设置样式,要么给元素加上一个类选择器或ID选择器,要么使用后代选择器。例如:.xkd{fontsize:14px;}.xkdp{lineheight:25
Stella981 Stella981
3年前
Shodan的http.favicon.hash语法详解与使用技巧
  在Shodan搜索中有一个关于网站icon图标的搜索语法,http.favicon.hash,我们可以使用这个语法来搜索出使用了同一icon图标的网站,不知道怎么用的朋友请参考我上一篇(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fmia
Wesley13 Wesley13
3年前
CSS常用样式(二):绘制双箭头
序言:总结一些常用CSS样式,方便以后使用目录一、多次调用单箭头二、旋转边框直接绘制双箭头一、多次调用单箭头上文介绍2种实现单箭头的方式:边框旋转、双三角覆盖。这次以边框旋转为例多次调用实现双箭头1、边框旋转单箭头实现.arrowright{
Stella981 Stella981
3年前
JOptionPane修改图标
1.在Linux平台下.JOptionPane会显示Java默认的图标,在window平台不显示图标,如何替换这个图标了?2JOptionPane.setIcon(Icon)修改的是内容区域的icon,而不是左上角的Icon.所以需要通过修改Jdialog/Frame的图标来达到修改默认图标的问题.3.代码:if(JOptio
白净水金刚
白净水金刚
Lv1
我不躲不藏,等生活爱我。
文章
4
粉丝
0
获赞
0