首页 前端知识 HTML5和css样式精灵图和字体图标的使用

HTML5和css样式精灵图和字体图标的使用

2024-08-20 09:08:57 前端知识 前端哥 839 312 我要收藏

目录

一、 精灵图的使用

1.精灵图的介绍

1.1什么是精灵图

1.2精灵图基本概念

1.3精灵图的优势

2.适用场景

3.精灵图的使用

3.1使用步骤

3.2使用注意事项

3.3示例

二、字体图标的使用

1.字体图标下载网站:

 2.字体图标的产生

 3.字体图标的使用

 4.字体图标的优点

5.示例

3.总结


一、 精灵图的使用

1.精灵图的介绍

1.1什么是精灵图


精灵图(Sprite),也被称为CSS Sprites或雪碧图,是一种优化网页性能的技术。该技术通过将多个小图标、图像或其他图形元素合并成一个单一的图像文件,并利用CSS来控制每个图形元素的显示位置和尺寸,以减少HTTP请求的数量,从而提高页面加载速度。

1.2精灵图基本概念

图像合并:将多个小图标或图形元素合并成一个大图像文件,这个大图像文件通常是一个矩形,其中包含所有的小图标,它们排列在一行或一列上,不同的小图标之间通过适当的间隔或边距分隔。
CSS控制:通过CSS的背景图像(background-image)属性,将这个大图像文件设置为一个元素的背景。使用CSS的背景位置(background-position)属性来指定在元素内显示哪个小图标,以及它们在大图像文件中的位置。

1.3精灵图的优势
  • 减少HTTP请求:合并多个图像元素为一个文件,显著减少了每个图像的HTTP请求,从而缩短了页面加载时间。
  • 提高性能:一次加载一个大图像文件比多次加载小图像文件更有效率,尤其在移动设备上或具有较慢网络连接的情况下。
  • 节省带宽:减少了不必要的网络流量,有助于降低带宽成本。
  • 简化CSS:通过使用单一的背景图像和背景位置属性,可以减少CSS代码的复杂性。
  • 方便管理:所有图标都包含在一个文件中,使得管理和维护变得更加容易。

2.适用场景

精灵图特别适合用于网页中的小图标素材,如按钮图标、导航图标等。然而,对于大背景或大布局背景,精灵图可能不是最佳选择。

3.精灵图的使用

3.1使用步骤
  • 准备图像:将需要合并的小图标或图形元素准备好,并确保它们具有清晰的边界和适当的间隔。
  • 合并图像:使用图像编辑软件(如Photoshop、GIMP等)将小图标合并成一个大图像文件。在合并时,要注意图标的排列顺序和间距,以避免在显示时出现重叠或错位。
  • 编写CSS:为包含精灵图的元素编写CSS样式。首先,使用background-image属性将精灵图设置为元素的背景图像。然后,使用background-position属性来指定要显示的图标在大图像文件中的位置。
  • HTML布局:在HTML中创建适当的元素(如div、span等),并为它们应用上面编写的CSS样式。这样,当页面加载时,就会根据CSS样式的设置显示对应的图标。
3.2使用注意事项
  • 1.精灵图主要针对于小的背景图片使用。
  • 2.主要借助于背景位置来实现--background-position.
  • 3.一般情况下精灵图都是负值。( 千万注意网页中的坐标: x轴右边走是正值,左边走题值,y轴同理。)
3.3示例
    <style>
        .box1 {
            width: 60px;
            height: 60px;
            margin: 100px auto;
            background: url(../images1/sprites.png) no-repeat;
            /* 根据自己的图片调整 */
            background-position: -182px 0;
        }

        .box2 {
            width: 27px;
            height: 25px;
            margin: 200px;
            background-color: skyblue;

        }
    </style>
</head>

<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>

二、字体图标的使用

1.字体图标下载网站:

https://icomoon.io/

https://www.iconfont.cn/?spm=a313x.illustrations_detail.i3.2.5afb3a810tLyH6

 2.字体图标的产生


字体图标使用场景:主要用于显示网页中通用、常用的一-些小图标。

精灵图是有诸多优点的,但是缺点很明显。

1.图片文件还是比较大的。

2.图片本身放大和缩小会失真。

3. 一旦图片制作完毕想要更换非常复杂。

此时,有一种技术的出现很好的解决了 以上问题, 就是字体图标iconfont.

 3.字体图标的使用


字体图标的使用通常涉及以下几个步骤:

  • 下载字体文件和CSS文件:从在线工具或图标库下载生成好的字体文件和CSS文件。
  • 将文件添加到项目中:将下载的字体文件和CSS文件添加到项目的合适位置。通常,字体文件会放在项目的fonts文件夹中,CSS文件则放在css文件夹中。
  • 引入CSS文件:在HTML文件的<head>部分引入CSS文件。这可以通过<link>标签实现,例如:<link rel="stylesheet" href="css/iconfont.css">。
  • 使用类名引用图标:在HTML文件中,通过添加带有特定类名的元素(如<i>、<span>等)来引用字体图标。这些类名通常在CSS文件中定义,并与字体文件中的字符(glyph)对应。例如,要显示一个用户图标,可以在HTML中添加如下代码:<i class="iconfont icon-user"></i>。其中,iconfont是一个通用的类名,用于指定使用哪个字体文件;icon-user则是与用户图标对应的类名。
 4.字体图标的优点
  • 轻量级 :一个图标字体要比一系列的图像要小。一 -旦字体加载了 ,图标就会马上渲染出来,减少了服务器请求
  • 灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等
  • 兼容性:几乎支持所有的浏览器,请放心使用

注意:字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。

5.示例
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /*字体声明 */
        @font-face {
            font-family: 'icomoon';
            src: url('fonts/icomoon.eot?k8a6wb');
            src: url('fonts/icomoon.eot?k8a6wb#iefix') format('embedded-opentype'),
                url('fonts/icomoon.ttf?k8a6wb') format('truetype'),
                url('fonts/icomoon.woff?k8a6wb') format('woff'),
                url('fonts/icomoon.svg?k8a6wb#icomoon') format('svg');
            font-weight: normal;
            font-style: normal;
            font-display: block;
        }

        span {
            font-family: 'icomoon';
            font-size: 50px;
            color: rgb(249, 204, 126);
        }

        .box1 {
            width: 0;
            height: 0;
            border-top: solid 10px pink;
            border-right: solid 10px rgb(235, 8, 45);
            border-left: solid 10px rgb(46, 15, 246);
            border-bottom: solid 10px rgb(240, 5, 185);
        }

        .box2 {
            margin-top: 100px;
            width: 0;
            height: 0;
            border: 10px solid transparent;
            border-top-color: #f59292;

        }

        .jd {
            position: relative;
            width: 120px;
            height: 249px;
            background-color: pink;
        }

        .jd span {
            position: absolute;
            right: 15px;
            top: -10px;
            width: 0;
            height: 0;
            /* 为了照顾兼容性 */
            line-height: 0;
            font-size: 0;
            border: 5px solid transparent;
            border-bottom-color: #f8a5a5;

        }

        .lianxi {
            position: relative;
            width: 150px;
            height: 249px;
            background-color: rgb(155, 194, 241);
        }

        .lianxi span {
            position: absolute;
            right: -20px;
            top: 70px;
            width: 0;
            height: 0;
            /* 为了照顾兼容性 */
            line-height: 0;
            font-size: 0;
            border: 10px solid transparent;
            border-left-color: #95f373;

        }
    </style>
</head>

<body>
    <span></span>
    <span></span>
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="jd">
        <span></span>
    </div>
    <div class="lianxi">
        <span></span>
    </div>
</body>

</html>

3.总结


1.如果遇到一些结构和样式比较简单的小图标,就用字体图标。

2.如果遇到些结构和样式复杂-点的小图片 ,就用精灵图。
 

转载请注明出处或者链接地址:https://www.qianduange.cn//article/16273.html
标签
评论
发布的文章

在线OJ项目

2024-08-27 21:08:43

JSON2YOLO 项目教程

2024-08-27 21:08:42

Redis 实现哨兵模式

2024-08-27 21:08:22

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!