当你打开(绝大部分)网站,页面上将会有许多形形色色的小图标(icon),适当的icon的可以达到一图胜千言的目的,使网页的表现效果更佳。

关于页面icon的制作,比较传统的方法是,让设计师去设计一个个的小图片,然后网页程式员再将设计好的icon放到页面上适当的位置。不过,随着这些年Web前端技术的迅猛发展,现在有一种新的方案去制作页面icon,那就是webfont。

页面icon

什么是页面icon

天猫商城中左侧的导航栏中,每一个购物频道都有一个小小的图标,这些小图标就是页面icon的一种表现方式。

除此之外,页面icon还有多种表现形式,可能出现在页面的任何位置。

我们再来看看百度域下的资源文件,其中有一个图片文件

传统icon的制作

首先要求设计师设计好大小合适的小图标,然后将这些小图标按照一定的顺序和方式合并在一起(这种方式称为css sprite,或者图片精灵),然后网页程序员通过书写css代码来控制相应元素的background-position属性,以达到不同元素显示不同的小图标。

这种方式下,需要使用小图标的页面元素的css规则一般这样定制:一个表示图标类的icon样式,以及表达不同小图标的自定义类名,比如icon-homeicon-user。当然,具体css类名的命名规范是不定的。一般地,iconicon-*的样式内容如下,

  1. .icon {
  2. background-image: url(...)
  3. }
  4. .icon-home {
  5. background-position: 0 0;
  6. }
  7. .icon-user {
  8. background-position: 0 10px;
  9. }

这种制作和使用icon的方式现在仍然有许多企业和网页正在使用,也是一种比较常规的方式。这种方式在书写css代码需要有一定的耐心,要匹配好各个icon的background-position属性。

值得一提的是,这种方式有一个不可避免弊端,就是,可能页面的icon需要两种以上的尺寸或者icon要发生变更。前者一般会要求设计师产出多套的icon,因为直接对图片进行缩放在网页上的表现并不是很好;后者可能就要重写之前的css代码了,因为可能图片雪碧后的position也发生了变化。


webfont与@font-face

什么是webfont

随着这些年Web前端技术的迅猛发展,web font技术逐渐成熟。那么什么是web font呢?

web font,又称之为在线字体或者网络字体,是CSS3中的一个模块,主要是把自定义的特殊字体嵌入到网页中。无需安装,无需下载,直接在线使用。

@font-face语法

web font技术需要通过CSS的@font-face语句引入在线字体。所以这里我先说一下@font-face的相关内容。

@font-css是CSS3中的一个模块,通过它可以将自定义的字体嵌入到前端网页中。随着@font-face的出现,标识着我们在web开发的过程中可以使用除了web安全字体之外的自定义字体,使页面的展现更加多样化。

值得一提的是,@font-face这个CSS3模块早在IE4中就已经被支持了。有点意外。

我们先来看看@font-face的语法,

  1. @font-face {
  2. font-family: <your-webfont-name>;
  3. src: <source> <format> [, <source> <format>];
  4. [font-weight: <weight>;]
  5. [font-style: <style>;]
  6. }

值得注意的有两点,一个是font-family属性,一个是src属性。前者是自定义webfont的名字,后者是引用字体的路径。其中src<format>字段是用来标识字体格式帮助浏览器识别。

说了这么多的理论,下面让我们来一段具体的CSS代码,了解下这个@font-face到底是如何定义的。

  1. @font-face {
  2. font-family: 'icomoon';
  3. src:url('fonts/icomoon.eot?'); /* 兼容IE9以上 */
  4. src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'), /*兼容IE8以下*/
  5. url('fonts/icomoon.woff') format('woff'),
  6. url('fonts/icomoon.ttf') format('truetype'),
  7. url('fonts/icomoon.svg') format('svg');
  8. font-weight: normal;
  9. font-style: normal;
  10. }

这样我们自定义的web font就成功了。然后就可以在页面中正常使用了。比如,

  1. div.title {
  2. font-family: 'icomoon'
  3. }

如果不出任何的意外的话,你将会得到自定义的字体效果。

自定义字体

说到这里,如果大家自己动手实验一番的话,就会发现一个致命问题:我去哪里获得这些自定义字体啊?

目前有三种途径来获取这些字体,

  • 去免费的网站下载字体
  • 去收费的网站购买字体使用授权
  • 有设计背景,自己设计字体

针对前两种方式没什么好说的,针对第三种方案,可能相关门槛就高了一点,需要一些设计背景。如果有兴趣,可以参阅这篇文章


webfont的更多内容

收集自https://www.w3cschool.cn/css_series/css_series-qx2k24qe.html

WebFont与页面font-icon图标研究的更多相关文章

  1. 启动页面、icon图标设置

    更多尺寸像素如何放置请看:http://chicun.jammy.cc/ 如何设置App的启动图,也就是Launch Image? 新建一个iosLaunchImage文件夹

  2. icon font字体图标字库汇总

    最近在研究icon font图标字库,找了一些比较好的在线字库.大都是开源的,而且各有特色! 阿里icon font字库 http://www.iconfont.cn/ 这个是阿里妈妈M2UX的一个i ...

  3. JS组件系列——不容错过的两款Bootstrap Icon图标选择组件

    前言:最近好多朋友在群里面聊到bootstrap icon图标的问题,比如最常见的菜单管理,每个菜单肯定需要一个对应的菜单图标,要是有一个可视化的图标选择组件就好了,最好是直接选择图标,就能得到对应的 ...

  4. CSS3魔法堂:认识@font-face和Font Icon

    一.前言 过去我们总通过图片来美化站点的LOGO.标题.图标等,而现在我们可以通过@font-face获取另一种更灵活的美化方式. 二.看看例子 /* 定义 */ @font-face { font- ...

  5. 字体在网页中画ICON图标

    用字体在网页中画ICON图标有三种小技巧: 1.用CSS Sprite在网页中画小图标 实现方法: 首先将小图片整合到一张大的图片上 然后根据具体图标在大图上的位置,给背景定位.background- ...

  6. 【iOS开发-51】案例学习:动画新写法、删除子视图、视图顺序、延迟方法、button多功能使用方法及icon图标和启动页设置

    案例效果: (1)导入所需的素材,然后用storyboard把上半截位置和大小相对固定的东西布局起来.当然,这些控件也要定义成对应地IBOutlet和IBAction方便兴许使用它们. 注意:本案例在 ...

  7. Vue如何引入icon图标

             1.下载icon图标,推荐icomoon网站,里面有大量的矢量图标,也可以自定义,当然你也可以去阿里巴巴矢量图标库下载你所需要的小图标.点击进入icomoon网站点击右上角“IcoM ...

  8. icon图标深入指南

    图标是网络上常用的元素. 它们是通用的,可以立即识别,可以非常吸引人,引起注意,并且(如果使用正确)可以提供出色的用户体验. 在网络上实现图标时,我们有很多选择: Icon Spritesheet – ...

  9. Vue Element使用第三库icon图标

    一:引入单设图标 1.打开 阿里icon,注册 >登录>图标管理>我的项目 2.新建项目 返回阿里icon首页,点进去你想要的icon库,因为没有批量导入购物车,所以一般情况下需要一 ...

随机推荐

  1. 【NOIP2018】为什么这么无力啊

    菜鸡又要爆零了 辛辛苦苦背板子结果考时候脑子一片空白 第一题线段树调了半小时 看完三道题两道写暴搜一道写暴力(说是暴搜,觉得更像写了个背包) 别提暴搜还忘记剪枝. . . . . . 我觉得考场上最菜 ...

  2. bzoj 1093 [ ZJOI 2007 ] 最大半连通子图 —— 拓扑+DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1093 先缩点,然后就是找最长链,DP一下即可: 注意缩点后的重边!会导致重复计算答案. 代码 ...

  3. 123D

    后缀数组+单调栈 看了好长时间,最后看了张神的程序才搞懂 意思就是求所有子串*n*(n+1)/2 n是子串出现次数 事实上,lcp可以看成宽度为1,高度为lcp值的长方形,所有lcp放在一起就是一堆长 ...

  4. 0605-类的继承、重写、parent、final

    定义一个子类(man) //定义一个类 class renlei{ var $name = '王五'; var $age = ''; var $sex = ''; var $todo = ''; fu ...

  5. [Apple开发者帐户帮助]二、管理你的团队(1)邀请团队成员

    组织可以选择向其开发团队添加其他人员.如果您已加入Apple开发者计划,您将在App Store Connect中管理团队成员.有关详细信息,请转到在App Store Connect帮助中添加用户. ...

  6. JS代码放在哪里比较好!

    在页面上加上<script></script>只有2个地方:head中,body体中 如果外部的JS文件,在head中加,写页面特效js放在body后面. <html&g ...

  7. [Swift]LeetCode1064. 不动点 | Fixed Point

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. C#将文件压缩成一个文件流,供前端下载

    直接上代码供大家参考... 前端页面就是一个下载的Button.. <body> <form id="form1" runat="server" ...

  9. MVC异步上传图片到本地/服务器

    这两天朋友问我,有没有异步上传图片到本地/服务器这种demo,他有用, 我就想,好吧, 那刚好周末了,整理一套出来. 主要用到的是jquery uploadify 这个juqery的插件 ,可以无刷新 ...

  10. 自学Python十一 Python爬虫总结

    通过几天的学习与尝试逐渐对python爬虫有了一些小小的心得,我们渐渐发现他们有很多共性,总是要去获取一系列的链接,读取网页代码,获取所需内容然后重复上面的工作,当自己运用的越来越熟练之后我们就会尝试 ...