博客列表 >背景属性控制,精灵图原理以及字体图标的引用

背景属性控制,精灵图原理以及字体图标的引用

longlong
longlong原创
2020年06月20日 15:25:231477浏览

1.背景控制

CSS背景属性用于定义HTML中元素的背景

以下是背景控制中常用属性:

  • background-color:定义元素的背景颜色,示例如下:

  • background-image:定义元素的背景图片,示例如下:

  • background-repeat:定义背景图片的重复方向,常用取值如下:

    • no-repeat:不重复

    • repeat-x:水平方向重复

    • repeat-y:垂直方向重复

示例如下:

  • background-position:设置背景图像的起始位置,此属性的取值可以是一些关键字,比如:right、left、top、bottom、center,也可以是长度值,比如:50px或者10cm,还可以使用百分比数值,比如:50%。一般来说,其取值语法是background-position:'水平方向值' '垂直方向值',但是有时也可以只写一个取值,第二个值有默认值。

    • 当使用关键字时,若只有一个值,第二个值默认是center,示例如下:

    • 当使用长度值时,若只有一个值,第二个值默认垂直居中,若有两个值,表示分别向X和Y方向偏移多少,示例如下:

    • 当使用百分比时,若只有一个值,第二个值默认是50%,示例如下:

  • background-attachment:设置背景图像是否随着页面的其余部分一起滚动或者固定,常用取值如下:

    • scroll:默认值,表示随页面滚动

    • fixed:固定不动

    示例如下:

  • background-size:设置背景图片的尺寸,取值可以是关键字,比如:contain、cover,也可以是数值或百分比,其中:contain表示图像会按照自身的纵横比伸缩直到接触到定位区域边缘,cover表示图像按照自身纵横比伸缩到完全覆盖定位区域,示例如下:

  • background-clip:用于对背景图像进行裁切,取值如下:

    • border-box:默认值

    • content-box:背景应用于内容框中

    • padding-box:背景会覆盖到内边距的外边缘

    示例如下:

以上属性中,还可以使用backgorund属性来简写,简写顺序是:

  1. background-color

  2. background-image

  3. background-repeat

  4. background-attachment

  5. background-position

示例如下:

背景属性差不多就这样了,最后附上测试过程中的代码:

  1. <style>
  2. .box {
  3. width: 600px;
  4. height: 500px;
  5. /* border: 1px solid black*/
  6. /* border: 10px dashed black; */
  7. padding: 20px;
  8. /* 定义元素的背景颜色 */
  9. /* background-color: cadetblue; */
  10. /* 定义元素的背景图片 */
  11. /* background-image: url("pic.jpg"); */
  12. /* 定义背景图片的重复方向 */
  13. /* background-repeat: no-repeat; */
  14. /* background-repeat: repeat-x; */
  15. /* background-repeat: repeat-y; */
  16. /* 定义背景图像的起始位置 */
  17. /* background-position: left center; */
  18. /* background-position: left; */
  19. /* background-position: 100px; */
  20. /* background-position: 100px 50px; */
  21. /* background-position: 80%; */
  22. /* background-position: 80% 50%; */
  23. /* 设置背景图片的尺寸 */
  24. /* background-size: 400px 400px; */
  25. /* background-size: 50% 50%; */
  26. /* background-size: contain; */
  27. /* background-size: cover; */
  28. /* 背景图像的裁切 */
  29. /* background-clip: border-box; */
  30. /* background-clip: content-box; */
  31. /* background-clip: padding-box; */
  32. /* 属性简写 */
  33. background: rgb(218, 145, 145) url(pic.jpg) no-repeat center;
  34. }
  35. /* 设置背景图片是否滚动或者固定 */
  36. body {
  37. /* background-image: url("girl.jpg");
  38. background-repeat: repeat-x;
  39. background-attachment: scroll;
  40. background-attachment: fixed; */
  41. }
  42. </style>
  43. <body>
  44. <div class="box"></div>
  45. <!-- <p>背景图片会随之滚动</p>
  46. <p>为了精简页面,多余的文字就删除了,您在测试过程中,可以多加一些段落</p> -->
  47. <!-- <p>背景图片会固定不动</p>
  48. <p>为了精简页面,多余的文字就删除了,您在测试过程中,可以多加一些段落</p> -->
  49. </body>

2. 精灵图的原理与实现

  • 精灵图(sprite):又称雪碧图,产生这一技术的主要原因是:网页如果在同一时间要加载很多的小图片,可能会造成服务器拥堵,而精灵图能够缓解这种情况,提升用户体验!

  • 精灵图就是一张带有很多小图标的图片集合,我们会将程序开发所需要的图标都放在这一张图片上,然后,通过设置背景图像的位置,拿到我们所需要的图标

下面看看精灵图是一个什么样子?

在上面背景属性控制的案例中,我们可以知道,一张图片被插入到元素中时,图像的左上角和元素空间的左上角是对齐的。所以,要拿到图像中的图标,就需要用到背景属性中的background-position,然后设置图像的水平垂直方向偏移量,取到所需要的图标。对于偏移量,我们要取到其中的图标,图像始终会朝水平反方向和垂直反方向移动,所以这两个值都会是负值。

在实际开发中,我们首先要知道精灵图中图标的大小,以便后面设置position偏移量,这里就演示Chrome的Page Rule Redux 插件来获取像素值。

  • 第一步:安装igg谷歌访问助手,然后放入扩展程序中,接着打开此助手,去访问谷歌应用商店

  • 第二步:在应用商店中搜索Page Rule Redux插件,然后添加到扩展程序,安装好后如下图:

  • 第三步:将精灵图的域名地址复制到浏览器中,千万不要把图片拖到浏览器,那样没效果的,(例:http://127.0.0.1:5500/front.edu/0619/sprite.jpg),然后打开Page Rule Redux插件,结果如下图:

  • 第四步:直接在图片上拖动鼠标,就可以拿到你所需要的像素值了,你想要取哪个图标,就拖动哪里,得到那个图标的起始位置后,就可以设置position了。

下面,实际操作一下,取图片中的放大镜图标,先写好代码页面,做好取图标前的操作:

然后,在插件中测量图标大小:

然后在代码中把box2的宽度高度设置一下,用来放图标,同时加入背景图:

接着,去取到放大镜图标的起始位置:

偏移量拿到之后,在代码中写入:

这样就成功的拿到自己所需要的图标了!最后附上代码及效果图:

  1. <style>
  2. .box1 {
  3. width: 400px;
  4. height: 300px;
  5. border: 1px solid black;
  6. background: url("sprite.jpg") no-repeat;
  7. }
  8. /* 在box2中取放大镜图标 */
  9. .box2 {
  10. width: 44px;
  11. height: 44px;
  12. background: url("sprite.jpg") -17px -98px;
  13. }
  14. /* 在box3中取到笑脸图标 */
  15. .box3 {
  16. width: 44px;
  17. height: 44px;
  18. background: url("sprite.jpg") -195px -189px;
  19. }
  20. </style>
  21. <body>
  22. <div class="box1"></div>
  23. <hr />
  24. <div class="box2"></div>
  25. <hr />
  26. <div class="box3"></div>
  27. </body>

3. 阿里字体图标的引用

  • 下载好后解压到自己的项目文件夹,打开demo_index.html,里面有字体图标的用法:

这里主要需要下面这两种用法:

  • Font class:此方法主要是通过class来定义图标,操作步骤如下:

    • 第一步:引入项目下面生成的fontclass代码,如:<link rel="stylesheet" href="./iconfont.css">,路径可能需要自己修改一下,示例如下:

    • 第二步:挑选相应图标并获取类名,应用于页面:<span class="iconfont icon-xxx"></span>,示例如下:

  • Unicode:这种方法是兼容性最好的,操作步骤如下:

    第一步:拷贝项目下面生成的 @font-face

    1. @font-face {
    2. font-family: 'iconfont';
    3. src: url('iconfont.eot');
    4. src: url('iconfont.eot?#iefix') format('embedded-opentype'),
    5. url('iconfont.woff2') format('woff2'),
    6. url('iconfont.woff') format('woff'),
    7. url('iconfont.ttf') format('truetype'),
    8. url('iconfont.svg#iconfont') format('svg');
    9. }

当然,其中的路径还是需要自己修改一下,示例如下:

第二步:定义使用 iconfont 的样式

  1. .iconfont {
  2. font-family: "iconfont" !important;
  3. font-size: 16px;
  4. font-style: normal;
  5. -webkit-font-smoothing: antialiased;
  6. -moz-osx-font-smoothing: grayscale;
  7. }

其中:font-size的值可以更改,也可以加上color属性,示例如下:

第三步:挑选相应图标并获取字体编码,应用于页面,如:<span class="iconfont">&#x33;</span>,示例如下:

3. 总结:

  1. 背景控制的属性大都比较好理解,都是一些字面量的东西,着重要理解到background-size的覆盖范围,background-clip的裁剪范围和background-position的偏移方式。

  2. 学会了精灵图的原理,主要就是通过background-position来设置的,主要理解到图像偏移的时候水平垂直方向如何设置,通过ps或者插件的方式找到图标的起始位置

  3. 对于阿里字体图标的引用,是必须要学会的,精灵图毕竟淡出了,并且字体图标更方便,它不需要服务器返回图片资源,也不需要设置各种css偏移量或者运用脚本处理,而且字体图标可以简单的设置下颜色,修改尺寸,表现更美观

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议