百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

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

yuyutoo 2024-10-12 01:17 7 浏览 0 评论

前言

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

但是你们有没有想过,如果是自己的话该怎么去实现这些图标呢?今天我们就来看看一些稍微复杂的图标是如何使用纯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的属性画出了一个杯子和心形两个稍微复杂点的图案,其实其它图案也是类似的,只要我们能将其拆分,每个部分独立实现,再组合就可以达到图标库的效果了。

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

相关推荐

Java的经典垃圾收集器G1,如何设置参数,什么场景下适用?

G1(Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器.以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征。G1将Java堆划分为多个大...

这份Java面试八股文让329人成功进入大厂,堪称2021最强

前言2021秋招即将来临,很多同学会问Java面试八股文有必要背吗?我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网面试,恐怕是现存的、最接近科举考试的制...

JDK成长记7:3张图搞懂HashMap底层原理

...

深度解析HashMap集合底层原理(hashmap集合特点)

目录...

网络安全之对文件上传的思考(文件上传功能中出现安全问题)

在web渗透中,最简单直接的方式就是文件上传。但是不做任何检测,直接getshell的现在已经很少了.我在平时的授权测试中,遇到的大多数都是对上传的文件内容,格式等检测的比较多的按前端到后端绕过顺序分...

JVM常用参数自查笔记(jvm参数怎么看)

配置堆区:-Xms、-Xmx、-XX:newSize、-XX:MaxnewSize、-Xmn;-Xms:表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可,但仍...

JAVA集合(java集合类有哪些分别有什么特点)

JAVA集合1.接口集成关系和实现集合类存放于Java.util包中,主要有3种:set(集)、list(列表包含Queue)和map(映射)。1.Collection:Collection...

体育老师教你学Java语言(中篇)(教java的老师)

一、控制结构训练营1.条件语句if-else→赛前资格审查...

十年之重修ConcurrentHashMap原理

弱小和无知并不是生存的障碍,傲慢才是。...

安装JDK(安装jdk的详细步骤)

JDK下载地址:JDK组成:javac:编译器,将源程序转成字节码。jar:打包工具,将相关的类文件打包成一个文件。javadoc:文档生成器,从源码注释中提取文档。jdb:debugger,查错...

零基础编程入门!手把手教你学Java

...

CentOS 7 上安装 JDK 8 的步骤:(centos7下载jdk)

CentOS7上安装JDK8的步骤:一、下载JDK...

JDK为什么废弃永久代,而引入元空间

今天我们来说说这个JVM的相关知识,因为面试简直是问到麻木的问题,那就是关于JVM的相关知识,今天了不起再次来和大家聊一下这个知识,我们从一些比较奇怪的问题说起,也不说那些经常会问到的内容了,...

JDK 1.8中对象被访问的具体过程及步骤

JDK1.8中对象被访问的过程和步骤对象的创建与初始化当使用new关键字创建一个Java对象时,JVM需要执行以下步骤:...

JDK21有没有什么稳定、简单又强势的特性?

佳未阿里云开发者...

取消回复欢迎 发表评论: