如何在前端项目中简单优雅的使用 svg 图标并且适应排版?
我 clone 了一个项目改改改 https://github.com/zauberzeug/nicegui
原版项目右上角是一个 github 的图标:https://github.com/zauberzeug/nicegui/blob/main/website/static/github.svg
因为我的项目是 gitlab 的,所以我想把 github.svg 改成 gitlab.svg
所以我去 aliyun 的 icon 站点找了一个 gitlab 图标:https://www.iconfont.cn/search/index?searchType=icon&q=gitlab%20 并且复制了它的 svg 代码
<svg t="1706022839926" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4231" width="200" height="200"><path d="M932.317184 567.76704L885.10464 422.46144l-93.57312-287.997952c-4.8128-14.81728-25.776128-14.81728-30.590976 0L667.36128 422.459392H356.62848L263.051264 134.46144c-4.8128-14.81728-25.776128-14.81728-30.593024 0l-93.57312 287.997952-47.210496 145.309696a32.165888 32.165888 0 0 0 11.68384 35.96288l408.6272 296.890368L920.61696 603.734016c11.272192-8.192 15.990784-22.71232 11.68384-35.964928" fill="#FC6D26" p-id="4232"></path><path d="M512.002048 900.62848l155.365376-478.171136H356.634624z" fill="#E24329" p-id="4233"></path><path d="M512.004096 900.62848L356.63872 422.47168H138.901504z" fill="#FC6D26" p-id="4234"></path><path d="M138.891264 422.465536l-47.214592 145.309696a32.16384 32.16384 0 0 0 11.685888 35.96288L511.991808 900.62848z" fill="#FCA326" p-id="4235"></path><path d="M138.893312 422.459392h217.737216L263.053312 134.46144c-4.8128-14.819328-25.778176-14.819328-30.590976 0z" fill="#E24329" p-id="4236"></path><path d="M512.002048 900.62848l155.365376-478.154752H885.10464z" fill="#FC6D26" p-id="4237"></path><path d="M885.11488 422.465536l47.214592 145.309696a32.16384 32.16384 0 0 1-11.685888 35.96288L512.014336 900.62848z" fill="#FCA326" p-id="4238"></path><path d="M885.096448 422.459392H667.36128l93.577216-287.997952c4.814848-14.819328 25.778176-14.819328 30.590976 0z" fill="#E24329" p-id="4239"></path></svg>
然后复制到我的项目中使用,但是这个 svg 图标变得非常的大!!!
我只想简单优雅的使用,最好可以无脑自适应,要怎么做呢?
看下旁边其他几个icon图标有没有使用类什么的,代码中有没有设置样式,给.icon-font{font-size:24px}之类的,或者下载的时候选择下大小
直接设置大小就好了。比较常用的方法一般是给这个 svg 设置一个 width: 1em; height: 1em;
然后结合 font-size
去改变大小。
阿里云导出是可以指定大小的,把200改成24就可以了
不考虑一下 iconify 吗?
SVG 图标在前端项目中自适应排版的关键在于利用其原始尺寸和 CSS 的特性。在大多数情况下,将 SVG 作为背景图像或内联元素时,都需要通过特定的 CSS 规则来确保其自适应。
以下是实现 SVG 图标自适应排版的一种常见方法:
设置图标大小:
你需要明确设置 SVG 的尺寸,可以通过 CSS 来完成。width
和 height
属性决定了图标的大小。如果图标的大小没有设置,它可能会变得非常大或非常小。
.gitlab-icon { width: 1em; /* 或其他适当的值 */ height: 1em; /* 或其他适当的值 */}
em
或 rem
可以使图标大小相对于其父元素或根元素变化,从而实现自适应排版。你也可以使用 vw
或 vh
单位,它们分别表示视口宽度和视口高度的百分比。object-fit
属性来控制如何适应其容器的大小。例如,你可以设置 object-fit: contain;
以保持图标的原始纵横比并完全适应其容器,无论容器的尺寸如何变化。viewBox
属性并使用 preserveAspectRatio
来控制图标的缩放和对齐方式。这样可以在保持图标原始比例的同时适应不同的大小和容器。fill
属性来实现。如果图标是一个路径,你可能需要设置 fill
属性为颜色值;如果图标是形状,可能需要设置形状元素的 fill
属性。同样地,可以调整 stroke
属性来改变边框颜色。<i class="fas fa-gitlab"></i>
)来使用图标,并利用字体属性来实现自适应排版。这种方法相对简单且易于集成。示例 CSS 设置:
.gitlab-icon { width: 1em; height: 1em; fill: currentColor; /* 设置颜色 */}
示例 HTML 使用:
<svg class="gitlab-icon" viewBox="0 0 1024 1024"> <!-- viewBox 根据图标实际尺寸设置 --> <!-- 使用路径定义图标 --> <path d="..." /></svg>
info Lavas Basic 模板并不包含此功能 在项目中有两种使用图标的方式,可以同时使用: 使用 material 字体文件 引入自定义的 SVG 文件 字体文件 material 图标能够满足大部分应用场景: 我们已经引入了 material 字体文件和所需样式表,直接使用 vuetify 中 Icons 组件即可,基本方法如下: <v-icon>home</v-icon> 更多使用方
问题内容: 我已经看到了很多用于svg on react的库,但是没有一个给我如何在react组件中导入.svg的代码,我已经看到了谈论将svg代码带入反应而不是使用.svg图标作为图像进行显示的代码。在用户界面中。 请告诉我是否有嵌入图标的方法。 问题答案: 如果图像是远程托管的,则可以直接将扩展名与标记一起使用。 这是小提琴:http : //codepen.io/srinivasdamam-
问题内容: 我正在使用sqlite4java启动一个简单的Java测试项目,并使用Java进行构建。 我可以轻松地下载核心sqlite4java库,但是我不确定哪种最好的方式(任意!)来获取下载本地库并将它们放在正确位置的好处。 这是我的build.gradle文件: 但是,当我运行一个简单的测试时,我得到: (我是从IntelliJ内部构建的,但是我正在使用gradle构建选项-因此,我认为运行
如何优雅地覆盖antdesign的样式? 我想要把将这个button的border去掉(只是这个button,不影响其他button的样式)。 className or style都不行,Button组件没有提供这两个prop。倒是有一个classNames不知道是干什么的。 在index.css中添加以下规则,倒是可以去除Button上的border但是会影响所有的Button样式。 通过Con
本文向大家介绍在 React、Vue项目中使用SVG的方法,包括了在 React、Vue项目中使用SVG的方法的使用技巧和注意事项,需要的朋友参考一下 在一些现代的扁平化设计网站,特别是移动端网站,经常会包含许多简单而清晰的小图标,例如网站图标、用户的默认头像、移动端网页首页底部固定的切换栏等,这些小图标一般都是由美工做好,可能会放到精灵图上,前端再进行裁切展示。 而实际上,这些简单的小图标完全没
如何优雅地使用react做一个wordle小游戏? wordle游戏wiki 在线wordle游戏 我用reat + tailwindcss实现了该游戏,但是比较纠结什么什么时候该使用React.useCallback,自定义的hooks是否合理? 我写了一个自定义的hook,用来实现数据持久化(刷新之后仍可以保持刷新之前的游戏状态) 这里的name,initial永远都不会变化。 初始状态先从l