前言

移动网络带宽的快慢直接影响webapp应用体验效果的优差,其中加载图片是很耗流量的,所以对这一方面的性能优化是很需要的。一般对于那些小而多的图片(图标)都会采用sprite合并成一张图片来减少http的请求次数。而CSS3的出现,无疑在移动端对图标的优化有着比较大的帮助。为此,自己也琢磨使用CSS3来制作一些常用的图标。有句话这么说:能用CSS3就不用图片!

正题

于是用了一天的时间,我制作了72个相对比较常用的图标,图标效果图整理如下:

 

今天就跟大家一起分享一下:

首先,每个图标的基本结构为:

  1. <a href="#" class="btn-box">
  2. <span class="icon-chevron-left"></span>
  3. </a>

其中,.btn-box是定义<a>标签的基本设置,大小为40x40,由于我这里默认将图标放在一个<a>标签里面以实现按钮效果,如果不需要<a>标签的话可以换成别的(例如div),但是.btn-box必须带上,因为里面的<span>的定位是相对于父元素的。

.btn-box的基本样式为:

  1. .btn-box{
  2. display: inline-block;
  3. width: 40px;
  4. height: 40px;
  5. text-decoration: none;
  6. position: relative;
  7. }

接下来讲一下<span>标签,该标签只需要添加一个类名就行了,该类名的选择就是上图中72个图标样式类名中的一个。每个类名实现一个图标效果,依据图标效果的实现过程会不固定地使用到:before和:after这两个伪元素来辅助实现所需的图标效果。当然,使用CSS3在某些图标的实现上还是很难达到矢量图标或者图标字体那么完美,这方面可能是我学术尚浅以致目前无法自我解决。另外,在这72个图标中,有几个图标是有白色遮罩的,分别是:

1.移动图标:此图标中间的白色小正方形是白色遮罩。

2.相机图标:此图标中间白色圆圈是白色遮罩。

3.手机图标:此图标顶部和尾部的小矩形和小圆圈是白色遮罩。

4.标签图标:此图标中的小圆圈是白色遮罩。

5.网格图标:此图标中间的白色线条是白色遮罩。

6.开关机图标:此图标圆圈顶部的缺口是白色遮罩。

7.刷新图标:此图标右边的缺口是白色遮罩。

PS:说明一下:所谓白色遮罩就是当无法使用CSS规则来达到某种效果时,采用伪元素作为白色遮罩以完成所需的图标效果,所以使用时需要结合实际情况修改遮罩颜色,以达到和背景色融合。当然,相机,手机和标签图标的遮罩部分不改动也不影响叶敏啊美观。除此之外,其他图标都是可以放心使用,若遇到需要根据实际情况改变图标大小的,可以自行修改,不过我在各种主流分辨率下测试过,基本上不会影响使用。

由于图标数量很多,我就选取一些图标的代码进行分享,其他的可以到我提供的github地址下载哦:

  1. <a href="#" class="btn-box">
  2. <span class="icon-music"></span>
  3. </a>
  1. .icon-music{
  2. display: inline-block;
  3. width: 18px;
  4. height: 18px;
  5. border-radius: 3px 3px 0 0;
  6. border-top:7px solid #333;
  7. border-left:3px solid #333;
  8. border-right:3px solid #333;
  9. position: absolute;
  10. top:6px;
  11. left:11px;
  12. -webkit-transform: skewY(-15deg);
  13. }
  14. .icon-music:before,.icon-music:after{
  15. content: '';
  16. display: inline-block;
  17. width: 10px;
  18. height: 7px;
  19. background: #333;
  20. border-radius: 10px/7px;
  21. position: absolute;
  22. -webkit-transform: rotate(15deg);
  23. }
  24. .icon-music:before{
  25. top:14px;
  26. left:-10px;
  27. }
  28. .icon-music:after{
  29. top:14px;
  30. left:11px;
  31. }

  1. <a href="#" class="btn-box">
  2. <span class="icon-refresh"></span>
  3. </a>
  1. .icon-refresh{
  2. display: inline-block;
  3. width: 20px;
  4. height: 20px;
  5. border-radius: 50%;
  6. border:4px solid #333;
  7. position:absolute;
  8. top:6px;
  9. left:6px;
  10. }
  11. .icon-refresh:before{
  12. content: '';
  13. display: inline-block;
  14. width: 6px;
  15. height: 10px;
  16. background: #fff;
  17. position:absolute;
  18. top:4px;
  19. right:-4px;
  20. }
  21. .icon-refresh:after{
  22. content: '';
  23. display: inline-block;
  24. width: 0px;
  25. height: 0px;
  26. border-left:6px solid transparent;
  27. border-right: 6px solid transparent;
  28. border-top: 6px solid #333;
  29. position:absolute;
  30. top:1px;
  31. left:14.5px;
  32. -webkit-transform: rotate(-45deg);
  33. }

  1. <a href="#" class="btn-box">
  2. <span class="icon-heart"></span>
  3. </a>
  1. .icon-heart,.icon-heart:before{
  2. display: inline-block;
  3. width: 20px;
  4. height: 30px;
  5. border-radius: 10px;
  6. background: #333;
  7. position: absolute;
  8. top:-10px;
  9. left:12.7px;
  10. -webkit-transform-origin: bottom right;
  11. -webkit-transform: rotate(-45deg);
  12. }
  13. .icon-heart:before{
  14. content: '';
  15. -webkit-transform-origin: bottom left;
  16. -webkit-transform: rotate(90deg);
  17. top:-18px;
  18. left:2px;
  19. }
  20. .icon-heart:after{
  21. content: '';
  22. width:;
  23. height:;
  24. border-left:10.8px solid transparent;
  25. border-right:10.8px solid transparent;
  26. border-top:12px solid #333;
  27. -webkit-transform: rotate(45deg);
  28. position: absolute;
  29. top:22.5px;
  30. left:-7.3px;
  31. }

  1. <a href="#" class="btn-box">
  2. <span class="icon-star"></span>
  3. </a>
  1. .icon-star,.icon-star:before,.icon-star:after{
  2. display: inline-block;
  3. width:;
  4. height:;
  5. border-top:20px solid transparent;
  6. border-bottom: 20px solid transparent;
  7. border-left: 14px solid #333;
  8. -webkit-transform: rotate(18deg);
  9. position: absolute;
  10. left:13.5px;
  11. top:2px;
  12. }
  13. .icon-star:before{
  14. content: '';
  15. top:-19.2px;
  16. left:-14.5px;
  17. -webkit-transform: rotate(72deg);
  18. }
  19. .icon-star:after{
  20. content: '';
  21. top:-19.8px;
  22. left:-15.5px;
  23. -webkit-transform: rotate(145deg);
  24. }

  1. <a href="#" class="btn-box">
  2. <span class="icon-user"></span>
  3. </a>
  1. .icon-user{
  2. display: inline-block;
  3. width: 14px;
  4. height: 18px;
  5. background: #333;
  6. border-radius: 7px 7px 5px 5px;
  7. position: absolute;
  8. top:5px;
  9. left:13px;
  10. }
  11. .icon-user:before{
  12. content: '';
  13. display: inline-block;
  14. width: 8px;
  15. height: 10px;
  16. background: #333;
  17. position: absolute;top:17px;left:3px;
  18. }
  19. .icon-user:after{
  20. content: '';
  21. display: inline-block;
  22. width: 0px;
  23. height: 0px;
  24. border-left:20px solid transparent;
  25. border-right: 20px solid transparent;
  26. border-bottom: 12px solid #333;
  27. border-radius: 50%;
  28. position: absolute;top:18px;left:-13px;
  29. }

  1. <a href="#" class="btn-box">
  2. <span class="icon-screenshot"></span>
  3. </a>
  1. .icon-screenshot{
  2. display: inline-block;
  3. width: 17px;
  4. height: 17px;
  5. border-radius: 50%;
  6. border:3px solid #333;
  7. position: absolute;
  8. top:8.5px;
  9. left:8.5px;
  10. }
  11. .icon-screenshot:before,.icon-screenshot:after{
  12. content: '';
  13. display: inline-block;
  14. width: 5px;
  15. height: 5px;
  16. border-left:15px solid #333;
  17. border-right:15px solid #333;
  18. position: absolute;
  19. top:6px;
  20. left:-9px;
  21. }
  22. .icon-screenshot:after{
  23. -webkit-transform:rotate(90deg);
  24. }

  1. <a href="#" class="btn-box">
  2. <span class="icon-move"></span>
  3. </a>
  1. .icon-move{
  2. display: inline-block;
  3. width: 26px;
  4. height: 26px;
  5. background: #333;
  6. position: absolute;
  7. top:7px;
  8. left:7px;
  9. -webkit-transform: rotate(45deg);
  10. }
  11. .icon-move:after,.icon-move:before{
  12. content: '';
  13. display: inline-block;
  14. width: 4px;
  15. height: 8px;
  16. border-left: 8px solid #fff;
  17. border-right: 8px solid #fff;
  18. position: absolute;
  19. top:5px;
  20. left:-1px;
  21. -webkit-transform: rotate(-45deg);
  22. }
  23. .icon-move:after{
  24. -webkit-transform: rotate(-45deg) translateY(12px);
  25. }

OK,其他图标详见我的github之css3-icon:https://github.com/JR93/css3-icon

最后,转载请注明出处,谢谢!

使用CSS3制作72个webapp图标的更多相关文章

  1. CSS3 圆角制作的消息提示图标

    CSS3 圆角制作的消息提示图标,如果你想知道它是如何被开发的,请点击连接查看.http://www.gbtags.com/gb/rtreplayerpreview/142.htm

  2. CSS3制作精美的iphone电话图标,不使用图片

    <!DOCTYPE HTML> <html lang=zh-cn> <head> <meta charset=utf-8> <title>C ...

  3. 详解用CSS3制作圆形滚动进度条动画效果

    主  题 今天手把手教大家用CSS3制作圆形滚动进度条动画,想不会都难!那么,到底是什么东东呢?先不急,之前我分享了一个css实现进度条效果的博客<CSS实现进度条和订单进度条>,但是呢, ...

  4. 推荐10个 CSS3 制作的创意下拉菜单效果

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用 HTML5 和 CSS3 可以更容易 ...

  5. 8个纯CSS3制作的动画应用及源码

    对于一个复杂的图形或者动画来说,之前我们的处理方式是图片叠加或者利用CSS+JavaScript的方法,然而随着CSS3标准的不断成熟,我们甚至完全可以利用CSS3来绘制一些图片和制作丰富的动画特效. ...

  6. CSS3制作分步注册表单

    这个DEMO是使用CSS3制作的一个分步注册表单,每个input对应的是每一步,在表单得到焦点时,对应的step也会进行对应的改变.不过这个效果是使用js代码来实现,但整个表单的外观是由CSS3来完成 ...

  7. CDR快速制作苹果手机照片小图标

    本篇教程用CorelDRAW快速制作苹果手机照片小图标,在实现的过程中主要使用了旋转复制的方法,加之一些常用工具的用法处理,最后加上透明效果下的合并模式就好了,现在跟小编一起来看看详细的操作吧! 1. ...

  8. 图解CSS3制作圆环形进度条的实例教程

    圆环形进度条制作的基本思想还是画出基本的弧线图形,然后CSS3中我们可以控制其旋转来串联基本图形,制造出部分消失的效果,下面就来带大家学习图解CSS3制作圆环形进度条的实例教程 首先,当有人说你能不能 ...

  9. css3制作旋转动画

    现在的css3真是强大,之前很多动画都是用jq来实现,但是css3制作的动画要比jq实现起来简单很多,今天呢,我自己也写了一个css旋转动画和大家分享.效果如下面的图片 思路:1.制作之前呢,我们先来 ...

随机推荐

  1. Error message when you try to modify or to delete an alternate access mapping in Windows SharePoint Services 3.0: "An update conflict has occurred, and you must re-try this action"

    Article ID: 939308 - View products that this article applies to. Expand all | Collapse all Symptoms ...

  2. iOS单元测试1

    iOS单元测试1 iOS单元测试分为两种类型的测试: 应用测试.应用程序测试可以检查app的代码组件,比如计算机的算术运算的例子.你可以利用应用程序测试来确保你的UI空间控件保持原有位置,并且你的控件 ...

  3. Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

    1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...

  4. ShellExecuteA()&MessageBoxA()

    #include<windows.h> #include<stdlib.h> void main() { ) { ShellExecuteA(, , , ); //0代表系统启 ...

  5. Java之fianl修饰符

    fianl修饰的变量不可以改变,一旦获得初始值,该final变量的值就不能被重新赋值. 1.final成员变量(必需由程序员显式地指定初始值) 类变量:必须在静态初始化块中或者声明该变量时指定初始值, ...

  6. 《数据结构与算法JavaScript描述》

    <数据结构与算法JavaScript描述> 基本信息 作者: (美)Michael McMillan 译者: 王群锋 杜欢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9 ...

  7. docker-3 基础命令

    创建镜像 创建镜像的方法有三种: 基于已有的容器创建 基于本地模板导入 基于dockerfile 基于已有的容器创建 主要使用docker commit 命令,命令格式: docker commit ...

  8. php进程的SIGBUS故障

    某个子站是php写的,访问的时候nginx时不时会冒出现502错误,高峰时更频繁,检查php-fpm的日志发现大量的 child exited on signal 7 (SIGBUS),并且和acce ...

  9. Java读写txt文件

    1.Java读取txt文件 1.1.使用FileInputStream: public static String readFile(File file, String charset){ //设置默 ...

  10. java微信接口之五—消息分组群发

    一.微信消息分组群发接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_t ...