sprite学习

CSS雪碧图,就是把全部的图表,按钮和图形包含在一个图像里面。它要求:html

静态图片,不随用户信息变化而变化;小图片,图片容量比较小;加载量比较大。浏览器

使用这种技术能够减小Web浏览器发出的服务器请求,显著加快下载速度。同时把小图片,按钮集中在一块儿,能够提升维护性。服务器

在这里介绍一款CSS Sprite自动生成工具——CssGaga,能够快速生成雪碧图。在实际制做中,遇到不少的坑,如今总结下:ide

1.   坑一工具

html:url

<div class="cat">
2         <ul>
3             <li class="cat-1"><i></i><h3>服装内衣</h3></li>
4             <li class="cat-1"><i></i><h3>服装内衣</h3></li>
5         </ul>
6     </div>

  CSS样式:spa

* {margin:0;padding:0;}
    .cat {width: 150px;background: #f8f8f8; border:1px solid #ccc;padding:0 20px;}
        ul {list-style: none;}
        li {height: 31px;line-height: 31px;overflow: hidden;border-bottom:1px solid #ccc;margin-bottom: -1px;}
        li i {display: inline-block;width: 30px;height: 24px;}
        li h3{ font-size: 14px;font-weight: 400; }

  实际显示:3d

缘由:是i标签设置display:inline-block,h3是块元素,单独占据一行,父元素li设置了overflow属性,因此h3下移一行,内容没法显示。code

解决办法:htm

1.   i标签去掉display属性,改成浮动float:left;

2.   h3标签改成a标签,这种方式比较经常使用。

2.  坑二

    设置  i 标签和h3内容之间的距离,由于 i 标签是浮动的,h3文字内容会靠着i标签,须要设置必定的间距。在这里,能够设置 i 标签的外边距margin,这样二者之间的距离会拉开。i已经脱离文档流,这里的话,就至关于文字的环绕。

1 li i {float:left;width: 30px;height: 24px;background: url(sidebar.png);margin: 3px 10px 0 0 ;}

修改前:修改后:

3.坑3

       实际background-position的移动距离和图标的高度(会影响x轴的移动距离)和宽度(会影响Y轴的移动距离)有关系

4.最终的代码以下:

<style>
    * {margin:0;padding:0;}
    .cat {width: 150px;background: #f8f8f8; border:1px solid #ccc;padding:0 20px;}
        ul {list-style: none;}
        li {height: 31px;line-height: 31px;border-bottom:1px solid #ccc;overflow: hidden;margin-bottom: -1px;}
        li i {float:left;width: 30px;height: 24px;background: url(sidebar.png);margin-top: 4px;margin-right: 3px;}
        li h3{ font-size: 14px;font-weight: 400; }
        .cat-1 i {background-position: 0 0;}
        .cat-2 i {background-position: 0 -24px;}
        .cat-3 i {background-position: 0 -48px;}
        .cat-4 i {background-position: 0 -72px;}
        .cat-5 i {background-position: 0 -96px;}
        .cat-6 i {background-position: 0 -120px;}
        .cat-7 i {background-position: 0 -144px;}
        .cat-8 i {background-position: 0 -168px;}
        .cat-9 i {background-position: -40px 0;}
    </style>
</head>
<body>
    <div class="cat">
        <ul>
            <li class="cat-1"><i></i><h3>服装内衣</h3></li>
            <li class="cat-2"><i></i><h3>鞋包配饰</h3></li>
            <li class="cat-3"><i></i><h3>运动户外</h3></li>
            <li class="cat-4"><i></i><h3>珠宝手表</h3></li>
            <li class="cat-5"><i></i><h3>手机数码</h3></li>
            <li class="cat-6"><i></i><h3>办公家电脑</h3></li>
            <li class="cat-7"><i></i><h3>护符彩妆</h3></li>
            <li class="cat-8"><i></i><h3>母婴用品</h3></li>
            <li class="cat-9"><i></i><h3>其余分类</h3></li>
        </ul>
    </div>
</body>

  效果图以下:

后续在涉及到小图标比较多的状况下,能够制做雪碧图,使用 i标签,而后经过控制对应背景图片的X轴和Y轴距离来实现显示不一样图表的效果。

相关文章
相关标签/搜索