国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SVG圖標,SVG symbols,SVG use標簽

這篇具有很好參考價值的文章主要介紹了SVG圖標,SVG symbols,SVG use標簽。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

SVG圖標,SVG symbols

項目中圖標的使用,趨勢是使用svg作圖標的,優(yōu)點如下

  1. 兼容現(xiàn)有圖片能力前提還支持矢量

  2. 可讀性好,有利于SEO與無障礙

  3. 在性能和維護性方面也比iconfont要強很多

怎么在項目中優(yōu)雅的使用svg圖標,下面我們將采用類似雪碧圖的做法


1、普通的使用

普通的使用遇到以下的問題:

  • 下載的 svg 可能有自帶的 fill 屬性,添加 color 樣式不生效。
  • 封裝 Icon 組件時,每用到一個 svg 圖標都需要引入一下,比較繁瑣。
import apple from "../assets/icons/apple.svg"  // 得到一個計算之后的路徑

const Icon = (props) => {
    return (
        <img src={apple} />
    );
};

export default Icon;

2、全局配置(svg-sprite-loader)

svg-sprite-loader官網(wǎng)
官方解釋是:一個用于創(chuàng)建 svg 雪碧圖的 Webpack 加載器。通俗的講:svg-sprite-loader 會把你引入的 svg 塞到一個個 symbol 中,合成一個大的 svg,最后將這個大的 svg 放入 body 中。

symbol 的 id 如果不特別指定,就是你的文件名。在頁面上形成這樣的元素,然后我們使用use標簽使用類名的形式引入。

  1. 打開webpack配置

    先看自己項目目錄有沒有config這個文件,如果沒有就需要調出這個文件,運行這個命令: yarn eject
    注意:如果項目沒有提交要先提交再運行這個命令,運行完就出現(xiàn)config文件,打開可以看到有一個webpack.config.js文件,反正就是暴露webpack的配置文件,方便我們去配置對應的loader

  2. 安裝并配置

    yarn add --dev svg-sprite-loader yarn add --dev svgo-loader

    安裝這兩個依賴,然后將下面代碼放進config>webpack.config.js文件里面的module>rules>oneOf里面

    {
       test: /\.svg$/,
       use: [
          { loader: 'svg-sprite-loader', options: {} },
          { loader: 'svgo-loader', options: {} },
       ]
    }
    

3、 使用svg組件化Icon

完成上述配置之后,我們就可以通過指定 id 的方式使用 use 的方式使用 svg 了。但是不能使用import方式引入

不適用import的原因:import 的方式引入了 svg ,在頁面上是找不到 icon 的。這是因為 import 引入的 apple 實際上是一個對象,通過 svg use 指定的 #id 的方式最終被 webpack 理解為 apple 對象沒被用到,所以就 Tree Shaking 掉它,因此我們需要用 require 的方式引入(原因:CommonJS 模塊的這種動態(tài)加載的性質意味著無法應用 Tree Shaking,因為在實際運行代碼之前無法確定需要哪些模塊)。

// 下面這種方式有坑,最終會被 Tree Shaking
// import apple from "../assets/icons/apple.svg"  // 得到一個計算之后的路徑
require('../assets/icons/apple.svg')

const Icon = (props) => {
    return (
        <svg fill="red">
            <use xlink:href="#apple"/>
        </svg>
    );
};

export default Icon;

而且經(jīng)過 svg-sprite-loader 加載之后,不僅可以通過指定 id 的方式引入 icon,而且相比圖片引入的方式,最大的優(yōu)點就在于可以通過給 svg 標簽添加 fill 屬性來調整 icon 的顏色。

4、批量引入所有的 svg靜態(tài)文件

項目中我們用到 svg 的地方,都需要手動引入一下然后使用,當 svg 多起來的時候,一遍遍的引入就顯得不太聰明。能不能像 Element UI 那樣,直接指定一個 name 就能使用特定的 svg ?那就需要在 Icon 組件中將所有的 svg 做批量的引入:

// require('../assets/icons/apple.svg')
// require('../assets/icons/banana.svg')
// require('../assets/icons/orange.svg') // 這樣就仿佛一個不太聰明的機器人

//直接引入 src/assets/icons 目錄下的所有 svg
const importAll = (requireContext: __WebpackModuleApi.RequireContext) => {
    requireContext.keys().forEach(requireContext);
}
try {
    importAll(require.context('../assets/icons', true, /\.svg$/));
} catch (error) {
    console.log(error);
}

const Icon = (props) => {
    return (
        <svg>
          <use xlinkHref={'#' + props.name}></use>
        </svg>
    );
};

export default Icon;

ps:直接從網(wǎng)上拷貝上述代碼會報錯,需要 yarn add @types/webpack-env -D 一下。

5、svgo-loaderg改變 Icon組件的顏色

svg-sprite-loader可以幫助我們通過 svg use + 指定 id 的方式引入 svg,雖然可以通過給 svg 添加內聯(lián) fill 屬性的方式修改 icon 的顏色,但是并不建議這樣做,而是通過 class 樣式的方式指定 icon 的顏色,這就需要用到 svgo-loader 先把 svg 自帶的 fill 屬性給清除掉,為我們后續(xù)指定 icon 的顏色掃清障礙。

    [svgo-loader](https://github.com/svg/svgo "svgo-loader") 是基于 SVG Optimizer 的一個加載器,而 SVG Optimizer 是一個基于node.js 的工具,用于優(yōu)化 SVG 矢量圖形文件,它可以刪除和修改SVG元素,折疊內容,移動屬性等。
// 配置 webpack.config.js
// 配置之前需要安裝該 loader
// npm install --dev svgo-loader
// yarn add --dev svgo-loader

{ loader: 'svg-sprite-loader', options: {} },
{ loader: 'svgo-loader', options: {
    plugins: [{
        name: 'removeAttrs', // 必須指定name!
        params: {attrs: 'fill'}
        }]
    }
}

通過上述配置,引入項目中的 svg 文件會先經(jīng)過 svgo-loader 清楚 fill 屬性,然后再通過 svg-sprite-loader 將你引入的 svg 塞到一個個 symbol 中,合成一個大的 svg,最后將這個大的 svg 放入 body 中。文章來源地址http://www.zghlxwxcb.cn/news/detail-618004.html

到了這里,關于SVG圖標,SVG symbols,SVG use標簽的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • css 實現(xiàn)svg動態(tài)圖標效果

    css 實現(xiàn)svg動態(tài)圖標效果

    效果演示: ?實現(xiàn)思路:主要是通過css的stroke相關屬性來設置實現(xiàn)的。

    2024年02月12日
    瀏覽(16)
  • Vue3中使用svg圖標

    因為項目很多模塊需要使用圖標,因此把它封裝為全局組件?。?! 在src/components目錄下創(chuàng)建一個SvgIcon組件:代表如下 在src文件夾目錄下創(chuàng)建一個index.ts文件:用于注冊components文件夾內部全部全局組件!!! 在入口文件引入src/index.ts文件,通過app.use方法安裝自定義插件

    2024年02月05日
    瀏覽(23)
  • WPF使用SharpVectors顯示SVG圖標

    WPF使用SharpVectors顯示SVG圖標

    W3C SVG Working Group SVG它的英文全稱為Scalable Vector Graphics,意思為可縮放的矢量圖形。 矢量圖形,不受像素影響——SVG的這個特性使得它在不同的平臺或者媒體下表現(xiàn)良好,無論屏幕分辨率如何,適合WPF使用。 iconfont-阿里巴巴矢量圖標庫提供了大量的SVG圖標。 但是WPF本身不支持

    2024年02月13日
    瀏覽(25)
  • windows系統(tǒng)本地批量預覽svg圖標

    windows系統(tǒng)本地批量預覽svg圖標

    ? ? ? ? 目前前端使用圖標大致分為兩類: iconfont方式:通過引入在線或者下載到本地的iconfont.css類文件實現(xiàn)顯示圖標 第二類是封裝圖標組件,通過傳入指定的svg名稱快速生成圖標 ? ? ? ? 目前第二種是比較方便的,不需要頻繁替換類文件,只需要下載svg到指定文件夾即可

    2023年04月21日
    瀏覽(21)
  • 在小程序中如何使用svg圖標

    在小程序中如何使用svg圖標

    1.首先找到一個能夠下載svg圖標的網(wǎng)站,例如iconfont或iconpark。 ?2.選擇好點擊批量下載,下載一個壓縮包。將下載后的壓縮包解壓之后就是我們選擇下載的svg文件。如下圖 ?3. 打開將svg文件轉成base64的網(wǎng)站 ,因為在小程序中不能直接使用svg文件,得將其轉成base64格式得數(shù)據(jù)作

    2024年02月12日
    瀏覽(28)
  • 微信小程序 使用 echarts symbol屬性不能使用自定義圖標

    微信小程序 使用 echarts symbol屬性不能使用自定義圖標

    ? 當我想去給 symbol? 屬性自定義圖標時,控制臺就報錯 Image ?is not defined ?。?! 原因是因為微信小程序不支持? new image() ; 下列就是echarts.js 源碼,版本不同格式化后顯示的 function 命名有所不同。但是全局就只有這么一個 new image ;全局搜一下就好 ?。?! 全局定義 canvas

    2024年02月13日
    瀏覽(93)
  • 【vue3+vite】使用vite-plugin-svg-icons插件顯示本地svg圖標

    使用vite-plugin-svg-icons插件顯示本地svg圖標 1.安裝vite-plugin-svg-icons插件 2.使用vite-plugin-svg-icons插件 2.1 在項目根目錄查找vite.config.js,進行配置 2.2 vite-plugin-svg-icons插件引入在main.js中 2.3 svg圖標放入對應路徑~~~~~圖標路徑與iconDirs設置得路徑一致 項目中使用示例: //menu.icon是路徑里面

    2024年02月12日
    瀏覽(44)
  • 帶你了解SVG標簽

    帶你了解SVG標簽

    ?? 作者簡介: 前端新手學習中。 ?? 作者主頁: 在主頁中查看更多前端教學,可接大學生前端作業(yè)單。 ?? 專欄分享:css重難點教學 ? Node.js教學 從頭開始學習 ? ajax學習 js學習 SVG是一種圖形文件格式,它的英文全稱為Scalable Vector Graphics,意思為可縮放的矢量圖形。它是基

    2024年02月15日
    瀏覽(16)
  • HTML <svg> 標簽

    實例 畫一個圓: 頁面下方有更多 TIY 實例。 svg ?標記定義 SVG 圖形的容器。 SVG 有幾種繪制路徑、框、圓、文本和圖形圖像的方法。 如需了解有關 SVG 的更多信息,請閱讀我們的 SVG 教程。 元素 Chrome IE Firefox Safari Opera svg 4.0 9.0 3.0 3.2 10.1 實例 畫一個矩形: 實例 畫一個帶有圓

    2024年02月12日
    瀏覽(19)
  • 將安卓XML圖標轉換成SVG圖片

    首先要明確的是,安卓 XML 格式的圖標其實是 XML 矢量圖片,與SVG圖片及其類似,同根同源。 縮放矢量圖形(英語:Scalable Vector Graphics,即SVG)是一種基于可擴展標記語言 XML ,用于描述二維矢量圖形的圖形格式。 .svg格式相對于.jpg、.png甚至.webp具有較多優(yōu)勢: 圖像與分辨率

    2024年02月22日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包