编程是一场马拉松,而不是百米冲刺。只要你坚持不懈,总有一天会到达终点。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > HTML 教程 > 正文

纯CSS3实现一些复杂的图标,教你不仅会用而且会写

kaishun 2024-04-01 15:27 27 浏览 0 评论

前言

在进行前端开发时,图标库的使用是一项必须掌握的技巧,目前流行的图标库有fontawesome,iconfont等,只需要引入到项目中,然后使用对应的class,就会得到对应的图标。

但是你们有没有想过,如果是自己的话该怎么去实现这些图标呢?今天我们就来看看一些稍微复杂的图标是如何使用纯CSS3实现吧。

纯CSS3实现一些复杂的图标,教你不仅会用而且会写

文中的代码已经放到github上了,感兴趣的同学自取。

https://github.com/zhouxiongking/article-pages/blob/master/articles/border/complexFigure.html

CSS3

图标库

我们可以先来看看稍微复杂的图标的样子。

图标库

从图标中可以看出,都是平时很常用的正确,错误,方向键,放大,缩小,开锁,解锁等。

我们从中抽取几个,慢慢分析它们是如何实现的吧。

水杯

水杯的图标如下所示。

水杯图标

我们对水杯图标进行拆分,分为杯身和杯柄两个部分。

  • 杯身中的白色长方形就是一个div,设置宽度和高度。

  • 杯身的四周为黑色都是通过border实现,border-bottom比其他三个放向都要大。

  • 杯身的下方是圆角,通过border-radius设置,border-radius的右下和左下方向设置相同的值。

通过上述的分析,我们可以得到杯身部分的CSS代码。

杯身CSS代码

杯柄通过伪元素:before实现。

  • 杯柄设置为绝对定位,修改right值让中间出现一个空白。

  • 调整杯柄位置的宽度,只需要和杯身重叠即可。

  • 杯柄右上角和右下角的border-radius设置为特定的值,展现成圆角的样子。

通过以上的分析,我们可以得到杯柄部分的CSS代码。

杯柄CSS代码

心形

首先我们来看看心形图案的样子。

心形图案

接下来我们同样将整个图案拆分来看,分成左右两个部分,我们将上述图案换成两种不同颜色就一目了然了。

拆分图案

从图案中可以看出,它实际是由两个相同的图行旋转不同的角度构成,相同的元素部分,可以通过设置border-radius值来实现。

我们将左右两个半边的形状分别通过:before和:after来实现,原始的的div形状的CSS属性则很简单,只需要设置相对位置和宽度为0即可。

基本CSS属性

然后看看:before和:after共有的属性,主要是保证为元素部分的定位为绝对定位,然后设置border-radius的值, 保证上半部分是圆角。

共有CSS属性

然后是关键的两半边各自的CSS属性。左侧的图形距左边应该为0,所以left: 0,右侧的图形距右侧为0,所以right: 0。

各有的CSS属性

同时左右两侧图案需要进行旋转,这里我们选择旋转48度,这是为什么呢?

很多人一下子可能会想到旋转45度,我们来看看旋转45度时的样子。

旋转45度

从图形中可以看出,两侧有棱角,整个图案就显得不标准,当旋转超过45度时,棱角的部分就会被里面的图案遮住。

所以这里我们选择旋转48度,达到最终的效果。

最终效果图

结束语

今天这篇文章我们使用纯CSS3的属性画出了一个杯子和心形两个稍微复杂点的图案,其实其它图案也是类似的,只要我们能将其拆分,每个部分独立实现,再组合就可以达到图标库的效果了。

大家也可以自己动手实现一下噢~

相关推荐

教你实现背景透明文字不透明全兼容的方法

在div+css网站布局中,经常要用到背景透明,所在背景的文字内容也会跟着透明,但有时文字需求是不透明的,确实让我们web前端开发者很苦恼,解决这个问题方法有二,第一背景用图片,第二那就是用css来...

IE下兼容背景透明度,这一行代码就足够

相信不少小伙伴大部分都写过这样的页面,小编找来了一个例子,比如上面图中,文字的黑色背景。给一段文字加背景透明度的时候都遇见过IE不兼容的问题,下面我们聊聊这些问题的处理方法。如何添加背景透明度我们工作...

《小白HTML5成长之路31》半透明背景的弹窗是怎么用CSS布局的

北方的冬天最怕有风,空气虽然好了,但是异常的冷,吸几口冷风感觉肺都结了冰。一大早小白来到办公室琢磨用户交互方面的问题,看了几个网站发现很多网站的弹窗都是自定义的,而且还把弹窗周围的区域做成了半透明状,...

CSS透明度的使用:rgba和opacity的区别

rgba和opacity的使用1、opacity取值在0到1之间,0表示完全透明,1表示完全不透明。.aa{opacity:0.5;}2、rgbargba中的R表示红色,G表示绿色,B表示蓝色,三种...

css基础快速入门-19 透明transparent

大学生就可以看懂的css基础实战系列,pre标签里是笔记总结,动手实际操作一下会加强理解。有疑问留言交流哦。可能比较枯燥,但是再坚持一下,前端知识的大门就会大开了。<!DOCTYPEhtml&...

php实现excel单元格合并,字体加粗居中等操作

使用的是phpexcel,基本用的原生语法,所见即所得,直接复制下面代码,即可://引用phpexcel类$this->load->library('P...

HTML常用代码之:修改页面的实用性HTML代码

HTML常用代码之:修改页面的实用性HTML代码贴图:<imgsrc="图片地址">加入连接:<ahref="所要连接的相关地址">写上你想写的字</a>在新窗...

IReport导出PDF字体加粗失效 pdf expert导入字体

一、iReport简介说到iReport不得不先介绍Jasperreport,Jasperreport是一个报表制作程序,用户需要按照它制定的规则编写一个XML文件,然后得到用户需要输出的格式文件。...

前端图片压缩上传插件localResizeIMG的使用

我最近做的几个项目,都有图片上传功能。实现图片上传有很多方法,但是要考虑到上传速度、兼容各种浏览器(尤其是各种移动设备)等因素,可选择的没几种,我给大家推荐一种比较好用的上传插件(localResiz...

vue怎么编辑照片 vue如何编辑照片

Vue是一种用于构建用户界面的JavaScript框架,它本身并不提供直接的图像处理功能。但是,我们可以使用Vue结合其他图像处理库来编辑照片。一种常用的图像处理库是`canvas`,它提供了一些功能...

vue的几个提效技巧 vue提升性能

1.动态组件<component:is='组件名'></component>结合v-for循环使用使用环境如图,这是一个v-for渲染的列表(只是目前这个版...

Python-OpenCV开发总结:替换视频绿幕并重新调整大小和位置

在Python中,使用OpenCV(cv2)替换视频的绿幕背景为新的图片,同时还需要调整透明的视频的大小和位置,首先需要解决抠图的问题,因为是替换视频绿幕,所以视频帧抠图后,还需要确保合成的视频的清晰...

开发多年put、get、resize不知道?Java原理分析

前言在分析HashMap之前,先看下图,理解一下HashMap的结构我手画了一个图,简单描述一下HashMap的结构,数组+链表构成一个HashMap,当我们调用put方法的时候增加一个新的key-...

input 输入框,文字和光标之间有个空格

输入框内输入文字后,光标和文字之间,留有一点空隙,使用js方法,给框内的最后文字加个空格;<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Tran...

Vue2的项目自适应屏幕大小 vue自适应布局用什么ui

一方案1.安装npmilib-flexible--savenpminstallpostcss-pxtorem-Dlib-flexible库的新版本:github.com/amfe/li...

取消回复欢迎 发表评论: