首页 > 其他分享 >零基础学前端之CSS精灵图

零基础学前端之CSS精灵图

时间:2023-01-31 17:32:45浏览次数:58  
标签:字母 前端 精灵 background 图片 sprites CSS 页面

我们学习CSS背景的应用——CSS 精灵图。

什么是精灵图呢?先来看一个案例——在这个页面中,使用到了各种各样的小图片。

如何在页面中插入这些小图片呢?你的思维惯性,一定是应用 img 或者 background-image 来实现。大家思考一下,如果页面中只有几个简单的图片素材,我们可以采用 img 元素来引入图片,可是当网站图片过多的时候,一张图片一张图片的引入,就显得不方便了。

零基础学前端之CSS精灵图_选择器

最重要的是,每张图片的显示,都是由浏览器发送请求,通过互联网,服务器接收到请求后,再通过互联网,返回请求内容。如果一个页面里有上百张图片,哪怕是很小的图标,都需要经历一次这样的过程。毋庸置疑,因为请求网络资源过于频繁,整个页面的加载速度就会变慢。

此时,我们就可以使用精灵图技术来解决这个问题了!

精灵图,也称雪碧图、妖怪图,基本原理就是将页面中使用到的各种图片进行分类,整齐划一的摆在一张背景透明的图片上面,通过 CSS 的背景技术实现图片的引入,从而减少服务器发送和接收请求的次数,提高页面的加载速度。

零基础学前端之CSS精灵图_选择器_02

零基础学前端之CSS精灵图_选择器_03

例如,页面中有一个元素,使用 background-image 的方法,插入一张精灵图。

默认背景图片的左上角字母“a”显示在元素内部,如果想要将字母 O 显示在元素中,就要使用background-position 属性调整背景图片的位置。

在 ps 软件中打开精灵图( ​​http://ps.gaoding.com​​​),使用圈选工具,从图片的左上角测量到字母"O"的左上角,测量距离为:水平 390px,垂直 105px。

因为背景图片整体需要向左上角移动,所以 background-position 的值两个方向都是负数:分别为 -390px 和 -105px。此时,字母 o 已经显示在元素内部。

如果位置测量有偏差,可以在浏览器的开发者工具中,找到页面元素,选中属性值,按下键盘的上下箭头,对属性值进行微调,位置调整满意后,根据这个值来修改样式。

也许你会问,精灵图是前端工程师制作的吗?实际上,在团队的网站开发中,网页所需要的各种图片,UI设计师都会为我们准备好,我们直接使用即可。

接下来,我们就使用精灵图技术,完成 “千锋” 拼音首字母的展示。

创建 014-sprites 文件夹,在文件夹下创建 sprites.html 文件和 sprites-style.css 文件,打开html,构建基础代码,引入外部样式。

使用 emmet 命令:div.box$*2 快速创建两个带有类名的 div 元素。

零基础学前端之CSS精灵图_选择器_04

零基础学前端之CSS精灵图_CSS_05

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

打开 css 文件,定义 div 元素选择器,声明样式:width: 50px,height: 70px,border: 2px solid gray。

先看一下效果,两个带有灰色边框,纵向排列的容器就做好了!

继续给 div 添加样式:float: left,margin: 10px。

此时,容器已经横向显示,容器之间也有了间距。

CSS
div{
width:50px;
height:70px;
border: 2px solid gray;
float:left;
margin:10px;
}

再定义一个 .box1 选择器,声明样式:background: url(sprites.png) no-repeat。

预览一下效果,字母 “a” 已经在第一个容器中显示出来。

在 ps 中使用圈选工具,测量图片左上角到字母 “q” 左上角的水平距离为 545px,垂直距离为 110px。

给 background 属性追加样式值:-545px -110px。

这样,字母 “q” 就显示出来了!如果对位置不满意,可以在这里微调。

CSS
.box1{
background:url(sprites.png) no-repeat -545px -105px;
}

重复前面的操作。在 ps 里测量字母 f 的位置,水平方向 390px,垂直方向 20px。

再定义一个 .box2 选择器,声明样式:background: url(sprites.png) no-repeat -390px -20px;

再看一下效果,字母 “f” 也显示出来了。也可以微调一下位置。

CSS
.box2{
background:url(sprites.png) no-repeat -386px -14px;
}

标签:字母,前端,精灵,background,图片,sprites,CSS,页面
From: https://blog.51cto.com/u_14573321/6029817

相关文章

  • 零基础学前端之CSS背景
    假设这里有个div 容器,宽400,高300,默认情况下,这个div是没有背景的,或者说它的背景是透明的,我们拿一张图片实验一下就能看得出来,这个div在默认情况下,背景是透明的。也可......
  • 常用的CSS效果(1)
    单行省略overflow:hidden;text-overflow:ellipsis;white-space:nowrap;多行省略display:-webkit-box;overflow:hidden;......
  • css技巧篇(一)
    虚线:css自带的dashed虚线样式非常的有限。往往是不满足UI设计稿的需求的,这里可以使用渐变的方式实现:/**使用渐变来自定义虚线*/background:linear-gra......
  • 纯 CSS 绘图
    纯CSS绘图当我们需要三角形、圆形、半圆等简单图形时,用css直接绘制会比加载图片更好,通常可以使用border属性方法来绘制,目前主流的浏览器还可以使用clip-path属性......
  • nginx 子路径 网站图片或js/css 路径缺失 替换
     nginx子路径网站图片或js/css路径缺失替换location/test{rewrite^/test/(.*)$/$1break;proxy_passhttp://localhost:8080;sub_......
  • 002.前端项目发布(Nginx静态网站配置)
    1.在/root目录下增加web文件放置前端静态文件2.添加配置文件(/etc/nginx/conf.d/)web.confserver{listen80;#server_nameip;//ip就是公网ipserver_name域......
  • vite打包js,css分开
    打开vite.config.jsbuild:{chunkSizeWarningLimit:1000,rollupOptions:{output:{//最小化拆分包......
  • CSS & JS Effect – Section Design Waves
    介绍SectionWaves长这样   左边是没有waves,右边是加了waves.它的作用就是点缀.让画面有一点"Design"的感觉. 参考YouTube– CSSWavyBackground......
  • 前端VUE+后端springboot实现导入返回excel校验结果demo
    vue代码<!--菜单导入对话框--><el-dialog:title="upload.title":visible.sync="upload.open":close-on-click-modal="false"width="400px"append-to-body>......
  • CSS 设置背景图片
    一、基本设置使用CSS可以通过以下属性设置背景图片:background-image:设置背景图片的URL。background-size:设置背景图片的大小。可以设置为绝对像素值,也可以设置......