比如说,虽然我们只在字体图标文件中定义了一个图标,但是当我们使用不同的 color 定义时,图标就会改变其颜色。...当我们用 Lighthouse 类似的工具来测试网页的性能时,就可以很容易地发现请求代码的使用率情况。如果我们采用多个字体图标集合并用的方案,那么代码实际使用率可能就会很低。...SVG 图标还支持多种颜色、可以通过字体样式调整样式,并且支持 IE9 以上版本的浏览器。...值得注意的是,一个 symbol 元素本身是不会呈现的,只有当 symbol 元素的实例(即,一个引用了 symbol 的 元素)才能呈现。 ...当鼠标悬停时,灰度化效果被移除,并且有 0.2 s 的缓慢过渡。不过如果原来的图标是黑色的话,灰度化的效果可能就比较差,悬停前后的差异不大明显,所以推荐使用彩色社交图标。
就像我们,在接触一个新的领域时,学会用工具来辅助我们,总比我们埋头苦干,闭门造车的强. 除非你知道故障出在哪里,否则无法解决性能问题。...采用 SVG 图像 可缩放矢量图形(SVG)通常用于标识、图表、图标和简单的图示。与JPG和PNG位图不同,SVG不会定义每个像素的颜色,而是在XML中定义形状,如线条、矩形和圆圈。...请注意,将SVG放在标签内或作为CSS背景图像使用会将它们与DOM分离,CSS样式将不会产生影响。 ---- 18....这意味着只有当用户滚动到相应区域时才加载内容,从而减少初始加载时间。 「逐步呈现动画:」 对于页面上的动画效果,可以使用渐进式呈现,以使动画更早地出现并逐步完善。...这可以避免用户在等待动画加载时的空白时间。 分段加载内容 与使用单个整站CSS文件不同,渐进式渲染是一种为单独的组件定义独立样式表的技术。
如果我们给图标所在的容器一个背景色,那么对勾呈现的就是背景的颜色: ?...这种方案每个图标都需要写css样式,劳动量大。即使是别人写好了样式,批量引入进来,也有不便控制的问题。它本身并不是字符,如果每个图标在绘制时没有一个统一的中心点,在使用时仅控制位置就比较麻烦。...-- 使用变量传递图标样式 --> 组件库里的icon组件的图标,如何取出来,保存到本地? ? 这是 weui.io/#icons 里的图标样式,有人觉得好看,想把文件拿出来用。...有两个方法: a)通过谷歌浏览器开发者工具,定位到具体组件的样式: ? 可以看到url指向的是一个内嵌的svg矢量图数据。在新的tab页中打开,可以直接保存为svg文件,在Sketch软件中编辑。
"#00f" fill="#f0" />svg>') center no-repeat; } 这将增加样式表的大小,但对于必须立即显示的较小的可重用图标来说,这很有用。...更改任何子项的内容时,浏览器将不会重新计算该项目、列表中的其他项目或页面上的任何其他元素的大小或位置。渲染速度更快。 26.尝试渐进式渲染 渐进式呈现是一种为每个页面和组件定义单独样式表的技术。...对一个组件的样式所做的更改不会影响其他缓存文件。 你可以领养原生Web组件或在组件出现在HTML中之前立即引用较小的CSS文件: 样式表都是呈现阻止的,但每个文件不应超过几千字节。 较旧的浏览器可能会显示一个空白页面,直到所有CSS都加载完毕,但总体影响应该不会比一个大的呈现阻塞样式表更糟。...CSS-in-JS框架通常在构建时创建随机类名,因此组件样式不会冲突。 最后,使用CSS级联比使用CSS级联更好。例如,你可以设置默认字体、颜色、大小、边框等。它们是普遍应用的,然后在必要时覆盖它们。
1、动态 SVG 组件 如果你像我一样,喜欢手工制作你的应用程序 — 选择独特的 SVG 图标更适合你的风格指南,并将它们与自定义动画和样式配对。...现在,我们将此代码粘贴到新组件的模板中。我建议将所有 SVG 图标组件放入一个新文件夹中,并相应地命名它们 (components/SVG/IconMoon.vue) 以保持组织有序。...一旦我们把它作为一个组件,我们就可以使用 把它放到我们应用程序的任何其他组件或页面中: 在上面的示例中,当我将鼠标悬停在 SVG 上时,我只是在要更改的部分上设置一个类(此处称为...除了动态图标样式和动画之外,还可以传递道具来更改 SVG 的大小和其他方面(就像任何其他组件一样)。如果你还不熟悉,Vue 文档有一个很好的例子说明如何使用图标来做到这一点。...你有时需要强制它使用新属性刷新,或者因为你使用的包在传递新属性时没有按预期更新。
1、动态 SVG 组件 如果你像我一样,喜欢手工制作你的应用程序 — 选择独特的 SVG 图标更适合你的风格指南,并将它们与自定义动画和样式配对。...现在,我们将此代码粘贴到新组件的模板中。我建议将所有 SVG 图标组件放入一个新文件夹中,并相应地命名它们 (components/SVG/IconMoon.vue) 以保持组织有序。...一旦我们把它作为一个组件,我们就可以使用 把它放到我们应用程序的任何其他组件或页面中:在上面的示例中,当我将鼠标悬停在 SVG 上时,我只是在要更改的部分上设置一个类(此处称为...除了动态图标样式和动画之外,还可以传递道具来更改 SVG 的大小和其他方面(就像任何其他组件一样)。如果你还不熟悉,Vue 文档有一个很好的例子说明如何使用图标来做到这一点。...你有时需要强制它使用新属性刷新,或者因为你使用的包在传递新属性时没有按预期更新。
1、动态 SVG 组件 如果你像我一样,喜欢手工制作你的应用程序 — 选择独特的 SVG 图标更适合你的风格指南,并将它们与自定义动画和样式配对。...所以,当我们需要这种功能时,而不是使用这个: svg" /> 相反,我们将在 VSCode 中打开 .svg 图像,然后复制图像的 svg...一旦我们把它作为一个组件,我们就可以使用 把它放到我们应用程序的任何其他组件或页面中: 在上面的示例中,当我将鼠标悬停在 SVG 上时,我只是在要更改的部分上设置一个类(此处称为...除了动态图标样式和动画之外,还可以传递道具来更改 SVG 的大小和其他方面(就像任何其他组件一样)。如果你还不熟悉,Vue 文档有一个很好的例子说明如何使用图标来做到这一点。...你有时需要强制它使用新属性刷新,或者因为你使用的包在传递新属性时没有按预期更新。
移动端 100vh 问题 在移动端使用 100vh 时,发现在 Chrome、Safari 浏览器中,因为浏览器栏和一些导航栏、链接栏导致不一样的呈现: 你以为的 100vh === 视口高度 实际上...这些图标大多数不会被设计师所采纳,所以部分图标都应该被干掉: 创建一个 icons.js 来管理 Ant Design Vue 图标,这里以一个 Loading 图标为例: // @/src/assets...自动注册 Svg 图标 在日常的开发中,总是会有着大量的图标需要使用,这里我们直接选择使用 SVG 图标。但是如果每次使用图标还需要通过路径找到这张图标岂不是很麻烦?...首先需要对 @/assets/icons 文件夹下的 svg 图标进行自动注册,需要对 webpack 和 svg-sprite-loader 进行了相关设置,文件全部打包成 svg-sprite。...定义 CLEAR,以确保路由切换时可以初始化数据。 Actions 页面重的数据接口尽量在 actions (opens new window)中调用。 服务端返回的数据尽量不作处理,保留原始数据。
我们来看看 NutUI 2.0 有哪些重要的新特性。 京东APP 7.0 视觉风格 NutUI 2.0 的组件在开发时参考了京东APP 7.0 视觉规范,统一了视觉风格和动效。 ?...于是 2.0 版我们对按需加载功能进行了重新设计。 使用 NutUI 2.0 的组件时,不必导入完整的组件库,直接在项目中引入我们需要的组件文件及其对应的样式文件即可。...SVG图标 我们认为移动端组件库图标方案的最佳实践是 SVG 方案,因为 SVG 图标较字体图标更灵活,更利于按需加载,也不会招致部分浏览器对其进行抗锯齿处理,清晰度高,结合 symbol 元素还可以实现...SVG 图标在移动端的兼容性也是良好的。我们在 NutUI 1.x 时期就选择了 SVG 作为组件库的图标方案,而这种选择在 NutUI 2.0 版本获得了传承。...接入持续化集成和自动化测试,提升代码可靠性 支持自动生成新组件模板 配套一个 webpack 插件和一个 Vue 模板工程构建工具 … 组件 组件库是个舞台,台上的主角不是组件库的功能和架构,而是组件
当我们将CSS-like的JavaScript和组件写在一起时,构建工具会将这些样式分割成单独的优化包。...之所以会出现这种情况,部分原因是每一个新功能都意味要添加新的CSS。 我们通过在构建时生成原子化CSS来解决这个问题。...现在,我们将我们的样式与我们的组件写在一起,这样就可以将它们串联起来删除,并且只在构建时将它们分割成单独的包。...通过内联,不会出现图标闪烁。...相反,我们在会话期间,随着新链接的呈现,动态地将路由定义添加到路由图中。
因此使用步骤可以分为: 字体图标的下载 字体图标的引入(引入到我们html页面中) 字体图标的追加(以后添加新的小图标) 3.3.1 字体图标的下载 推荐下载网站: icomoon 字库 比较全面,国外服务器...3.3.3 字体图标的追加 如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标到原来的字体文件中。...以 icomoon字库 网为例,点击网站内import icons 把压缩包里面的 selection.json 重新上传,然后选中自己想要新的图标,重新下载压缩包,并替换原来的文件即可。...使浏览器呈现所有 HTML 元素更加一致,并且符合现代 web 标准。...Normalize.css 只作用于需要规范化的样式。
字体冗余 维护依赖 iconfont 平台 在组件开发的时候命名冲突 使用 SVG 的优点 完全离线化使用,不需要从 CDN 下载字体文件,图标不会因为网络问题呈现方块,也无需字体文件本地部署。...在低端设备上 SVG 有更好的清晰度。 支持多色图标。 SVG 可以支持动画 并给出了最终方案,放弃使用字体,使用 SVG 代替 iconfont。...又给出了实践步骤: 老项目中的 iconfont, 可以通过 nodejs 脚本将下载的 iconfont.svg 转为多个 SVG 图标 新加的图标,可以直接在 iconfont.cn 上下载 SVG...url use: ['@SVGr/webpack'], }, ], }, } 上面这段配置看上去很简单,当我往项目中配置时,却又遇到了困难,有的时候打包配置是在一个单独的包中...接下来我们只需要通过 Dom api 获得当前点击元素的 SVG 代码 在每个图标的操作覆盖层加入一新图标,用于复制 react component 原先是块级布局,一列显示 3 行 为了减少页面空间
因此,在需要适配不同尺寸的设备(如手机、平板和桌面设备)时,SVG 图标是一个极佳的选择。...可样式化:SVG 文件可以通过 CSS 来进行样式化,甚至可以通过 Angular 的数据绑定机制来动态改变 SVG 的颜色、大小等属性。这种灵活性使得 SVG 成为了图标的最佳选择。..." alt="购物车">这段代码在模板中引用了购物车图标,通过直接从 /assets/icons 文件夹中加载资源,图标得以顺利地呈现。...图标组件的封装与复用为了在项目中更高效地使用图标,尤其是 SVG 图标,Angular 中经常会封装一个 IconComponent 组件,该组件会从 /assets/icons 文件夹中加载相应的图标...并且,这样的组件设计使得图标的使用更加模块化与解耦,如果图标路径或图标文件名发生变动,只需在组件中修改路径逻辑,所有引用该组件的地方都会自动更新。4.
现在做的事情 我所在公司目前正在建设低代码平台,这个低代码平台可以说是无代码,需要从原先的各个应用中抽取部分页面和组件成为低代码组件,这样低代码平台就可以通过拖拽组件,形成一个有个性化的业务场景。...遇到的问题 问题一:命名冲突 原先都是一个个独立的应用,都是可以独立部署独立运行,现在需要将这些应用组合在一起,形成一个新的应用,就遇到这个关于图标的问题。...最终方案:使用 svg 代替 iconfont 使用 svg 的优势 完全离线化使用,不需要从 CDN 下载字体文件,图标不会因为网络问题呈现方块,也无需字体文件本地部署。...没有 unicode,不会因为抽离组件而造成图标冲突 在低端设备上 SVG 有更好的清晰度。 支持多色图标。...在 iconfont 字体样式中,css 包含了这样一个路径,或者我们可以在项目 css 中直接找到这段代码,然后下载这个 svg。
最近看项目视频的时候对里面使用 svg 的方式感到很好奇,于是去网上查了一下,发现 svg 竟然也有类似于 css 雪碧图一样的用法,也就是 svg-sprite(孤陋寡闻了),而且配合插件后能够以组件化的方式使用...每次要使用图标都得写这么一段代码,并不是很方便,是否可以像使用组件那样使用图标? 这里的关键是使用 svg-sprite-loader 这个插件。...Vue项目中更优雅地使用svg-1_2.png 接下来封装图标组件。...选择器拿到的,所以上面这个样式声明不会起效果。...html 中: 如何在Vue项目中更优雅地使用svg-3.png 但是这种方式不利于代码的维护,不可能说每一次新增图标都到 iconfont 重新生成一遍代码,再重新引入到项目中,这样太麻烦了。
// 此 name 需要与 component 组件中的 name 值相同(唯一) name: 'home', // 组件路径 component: () => import('/@/views...── iconSelector.scss (图标选择器) ├── index.scss (页面样式主出口) ├── loading.scss (loading样式) ├── other.scss...1.框架中全局注册svg /@/utils/other.ts, main.ts中引入import other from ‘/@/utils/other’; 添加了ele前缀,防止图标冲突,el前缀已经被使用...但是不建议以el svg前缀,因为会与element plus内置组件冲突 2.页面中使用svg 使用element plus的图标,可去 https://lyt-top.gitee.io/vue-next-admin-preview.../#/pages/element 复制粘贴 svg图标说明 如:ele-User,由两部分组成 1.ele:框架中全局注册svg中添加的svg图标前缀 2.User:为svg图标,请注意它的开头都是大写的
它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。...这种用法其实是做了一个svg的集合,与上面两种相比具有如下特点: 支持多色图标了,不再受单色限制。 通过一些技巧,支持像字体那样,通过font-size,color来调整样式。...,symbol这中使用方式就是本文的正题了,其实之前我是一直都使用font-class这种方式的(大家估计用这个的也很多),但是它有点麻烦,因为我每次迭代项目时,修改或者添加图标都要去重新下载一份新的包...不,还远远不够,这样使用一个图标就得引入文件一次也太麻烦了,接着看下文 进阶-svg文件自动引入 知道为什么在icons/文件夹下还有一个存放svg文件的svg/文件夹吗,就是为了这一步自动化引入准备的...svg图标时,不用再引入一遍图标svg了,因为我们做了自动化,icons/svg/下的svg后缀图标文件都可被自动引入 svg>
优势: 兼容性好 还原度高 劣势: 同一图标的不同颜色需要设计多个图片 新增图标需要重新合成sprite 由于是位图,兼容不同分辨率需要多套尺寸 iconfont 为了更易于控制图标颜色和大小,并兼容各种设备屏幕.../iconfont.css"> 复制代码 工程化方式 依赖网站生成字体文件,在替换或加图标后需要重新覆盖项目中的图标css...gulp (自动化构建工具) gulp-iconfont (使用gulp将svg图标集合创建为 svg/ttf/eot/woff/woff2字体) gulp-iconfont-css (结合gulp-iconfont...svg> 复制代码 使用 svg中的 symbol,use 元素来制作图标 标记的作用是定义一个图像模板,本身不会输出任何图像,可以使用标记实例化它。...微信图片_20191215163114.png 我们就可以在页面中使用这些图标了,同时可以封装通用icon调用组件,将图标name,size,color都作为参数,就能方便控制图标的使用。