首页 > 代码库 > 总结几个小图标实现方法

总结几个小图标实现方法

前言:页面总是时不时会出现小图标,就来总结一些自己知道的实现方法,应用情况依靠场景大家自行参考吧。

(一)雪碧图

       CSS雪碧 即CSS Sprite,也有人叫它CSS精灵,是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片上,然后利用css的背景定位来显示需要显示的图片部分。

特点相对于单个小图标,它节省了文件体积和服务请求次数。主要是因为将所有的零碎的小图片整合在一起,可以有效的减少http对图片的请求次数,不需要多次加载零碎的背景图片,所以合理的利用它可以有效的提高网页的加载速度。

注意您要预先确定每一个小图标的大小,知道图片与图片之间的距离。一般使用Photoshop或者fireworks等一些作图软件进行雪碧图制作。

网上查到几个可以制作雪碧图的工具,我还没试过,有兴趣的可以看看 ,下面是链接:

http://www.360doc.com/content/12/0802/05/21412_227764450.shtml

http://www.cnblogs.com/joyho/articles/3715260.html 

(二)css伪类绘制ICON

     使用css的 :after、:before、border、width、height、border-radius  等属性配合就可以制作一些小图标。

eg: HTML  <div class="search-icon"></div>   

      CSS   .search-icon{

                   color: #000;
                   position: absolute;
                   margin-top: 2px;
                   margin-left: 3px;
                   width: 12px;
                   height: 12px;
                   border: solid 1px currentColor;
                   border-radius: 100%;
                   -webkit-transform: rotate(-45deg);
                   transform: rotate(-45deg);
                 }
                 .search-icon:before {
                    content: ‘‘;
                    position: absolute;
                    top: 12px;
                    left: 5px;
                    height: 6px;
                    width: 1px;
                    background-color: currentColor;
                }

(三)字体图标

      Font Awesome 字体可以提供可缩放矢量图标,它可以被定制大小、颜色、阴影以及任何可以用Css的样式。具体使用请详读官网,里面有实例可参考。

官网:  

http://fontawesome.io/icons/  英文网 
http://www.fontawesome.com.cn/  中文网

(四)canvas绘制

     这个要用到HTML5语义化标签canvas和javascript进行配合,当然canvas还可以做动态动画等其他功能,这里只是想到这个方法。下面是一个板栗,画一个星星:  

     <canvas id="canvas"> 
 当前浏览器不支持canvas,请更新浏览器后再试
  </canvas>
  <script type="text/javascript" lang="javascript">
       window.onload = function(){
        var canvas = document.getElementById("canvas");
           canvas.width = "800";
          canvas.height = "800";
          var context = canvas.getContext("2d");         
          drawStar(context,150,300,400,400,10,"red","yellow",30);
       };
       function drawStar(cxt,r,R,x,y,borderWidth,borderColor,fillColor,rot){
         cxt.beginPath();
         for(var i=0; i<5; i++){
          cxt.lineTo( Math.cos((18+i*72 - rot)/180*Math.PI)*R + x,
                   -Math.sin((18+i*72 - rot)/180*Math.PI)*R + y);
          cxt.lineTo( Math.cos((54+i*72 - rot)/180*Math.PI)*r + x,
                   -Math.sin((54+i*72 - rot)/180*Math.PI)*r + y);
          };        
          cxt.closePath();
          cxt.fillStyle = fillColor;
          cxt.strokeWidth = borderWidth;
        cxt.strokeStyle = borderColor;
          cxt.fill();
        cxt.stroke();
       };
  </script>

(五)SVG绘制

     SVG 于 2003 年 1 月 14 日成为 W3C 推荐标准。
     SVG可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式。它由万维网联盟制定,是一个开放标准。由于SVG是XML文件,SVG图像可以用任何文本编辑器创建。

下面就画个园:

<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="330" cy="70" r="60" stroke="green" stroke-width="3" fill="orange" />
</svg>

(六)其他的网上图库插件 

这些我只是试用过,具体还请大家自己实践一下。  

1)iconfont阿里巴巴矢量图标库
http://www.iconfont.cn/
2)icomoon 
https://icomoon.io/   icomoon官网
https://icomoon.io/icons.html
http://icomoon.io/app/
3)easyicon
http://www.easyicon.net/
4)flaticon(Free vector icons - SVG, PSD, PNG, EPS & Icon Font)
http://www.flaticon.com/
5)在线ico转换、制作
https://www.ico.la/


结束语:以上是我现在能想到的方法,若是以后想到还会添加,如果哪里不对或者大家有更新奇的方法请积极留言哈,至于兼容性就请各位自己测试了,新属性有好多是不支持ie9以下版本的。 

 

总结几个小图标实现方法