亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 web前端 js教程 SVG 技巧為您服務(wù)

SVG 技巧為您服務(wù)

Dec 25, 2024 am 01:28 AM

我受到 Bytes #293 HTML 主要內(nèi)容的激勵。他們的動機(jī)來自 HTML 2023 現(xiàn)狀調(diào)查(以及金錢......但讓我們從郵件中保留贊助部分)。

看來 元素是日常工作中值得注意的痛點(diǎn)。它被引入“內(nèi)容部分”

SVG hacks for you

切入點(diǎn)

如果您根本不熟悉這些東西,我可以幫助您提供一些開始連結(jié)。之後,什麼都不會改變,但你會更了解 svg
?_(ツ)_/?

  • https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web
  • https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Introduction
  • 來自 MDN 的 SVG 教學(xué):https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Getting_Started

Tl;DR

SVG 元素是向量圖形元素。這可以理解為一堆用字元表示的幾何圖形。您可以使用 Adob??e Illustrator 或 Inkscape 作為免費(fèi)替代方案來建立一個。

起點(diǎn)

從人們的回答中,我們可以看到一些規(guī)律。我不會選擇任何特定的主題,但我會嘗試分享一些圍繞這些主題的知識,以便您可以在這裡找到一些提示和技巧、分享經(jīng)驗(yàn)和圍繞該主題的其他常識。

我將跳過 SVG 精靈主題,就像這個例子一樣。這是一個單獨(dú)的主題,與 svg 標(biāo)籤關(guān)係不大。我只能同意,您仍然可以為它們找到一些罕見的用例。

文件語法

正確的 SVG 檔案應(yīng)該是上述幾何圖形的表示。很容易檢查我們的圖標(biāo)是否由設(shè)計(jì)師或您使用它的網(wǎng)站以正確的格式準(zhǔn)備。

錯誤範(fàn)例:

預(yù)期語法:

在我的職業(yè)生涯中,我曾多次遇到這種情況。值得記住這一點(diǎn)。當(dāng)您取得光柵圖形,將它們匯入向量圖形程式並嘗試以 .svg 副檔名匯出它們時,就會發(fā)生這種情況。它不會神奇地將您的圖像轉(zhuǎn)換為向量圖形。

值得注意的 SVG 標(biāo)籤

我可以提供您大多數(shù)通用 svg 元素的備忘單。

Tag Description Animated attributes
used for grouping elements -
main tag for your actual icon. Avoid modifying the d="" attribute on your own ? It is possible but be careful with that. Grab a link with an explanation for each character group. To animate your path use animateMotion tag -
Basic rectangle shape in SVG. Simple as that ?
Simple as that. The line between two points. Don't mistake with the stroke attribute! It can also be used on the line tag. ?
You can think about it as an enhancement version of the g tag but it keeps the elements inside invisible for later use with, let's guess it... use tag -
Next basic shape. Be careful as the size is defined by radius and you position your circle with cx and cy attributes. ?
Let's call it a custom shape. They are connected straight lines where the last point connects to the first point. ?
Very similar to the previous one but with a notable difference. The last point doesn't need to be connected to the first point. ?

請注意,這些只是一些選定的 SVG 元素。我剛剛描述了最常見的。還有很多可供您使用。完整列表可以在這裡找到。

尺寸和定位

由於我們現(xiàn)在熟悉了一些常見的 svg 標(biāo)籤,我們可以進(jìn)入下一段修改圖示的基本參數(shù)。

假設(shè)我們與一位年輕設(shè)計(jì)師合作。他/她並不像您一樣完全知道如何為網(wǎng)路做好準(zhǔn)備。因此,有時您會看到圖示大小略有不同,且兩側(cè)缺少剪切填充。

good one wrong one
SVG hacks for you SVG hacks for you

經(jīng)典案例。我知道我們應(yīng)該與設(shè)計(jì)師進(jìn)行快速通話並澄清這一點(diǎn),但我們想在這裡學(xué)習(xí)一些 svg。在這種情況下我們不會這樣做。我們可以自己修復(fù)。

從程式碼的角度來看,都是關(guān)於屬性的。原始的 SVG 交叉檔案如下所示:

結(jié)果:

SVG hacks for you

幾乎就是我們想要的!讓我們進(jìn)一步深入研究如何保留第一個圖標(biāo)中的填充。

我們有2個選擇。我們可以保持相同的 viewBox 值,也可以調(diào)整每個巢狀標(biāo)籤上的每個寬度、高度、x 和 y 值。

第一個選項(xiàng)看起來很簡單,對我們來說效果很好,但可能有一個問題。就我而言,我的群組標(biāo)籤上有這個奇怪的轉(zhuǎn)換屬性。

現(xiàn)在我們的圖示大小是可以調(diào)整的。請注意,它是向量圖形,因此調(diào)整大小後我們不會失去圖標(biāo)品質(zhì)。

那為什麼 viewBox 如此重要?

當(dāng)我們想要正確縮放或設(shè)定圖示的某個位置時,這是關(guān)鍵。它有 4 個參數(shù) viewBox="min-x min-y width height".

例如,viewBox="0 0 100 100" 表示左上角位於 (0, 0),viewBox 寬 100 個單位,高 100 個單位。

這表示您必須在變更 viewBox 後調(diào)整圖示的 x 和 y 屬性,因?yàn)樗鼈兪歉鶕?jù)其值設(shè)定的。

管理顏色和填充

不同的圖示允許不同的填充。當(dāng)然,它可以像添加顏色樣式一樣簡單,但這是菜鳥等級的程式碼。

真正的開發(fā)人員正在向主元素添加 fill-rule="evenodd" 並從標(biāo)籤中刪除所有其他手動填充屬性?

你可能想知道為什麼。

我將對此提供盡可能簡短的答案。直接從我們的 IDE 中使用一行程式碼自由自訂圖示顏色。

你可能會問怎麼可能。

如果您正在處理公司設(shè)計(jì)系統(tǒng)中的一個簡單圖標(biāo),您應(yīng)該只能匯入一個圖標(biāo)。無需修改或重複大小或顏色。

從程式碼角度來看,您只需在 svg 元素上新增填充,就像通常使用顏色屬性一樣。

在繪製多邊形或路徑時,偶數(shù)值有一個問題。它只會填滿交叉路徑段的內(nèi)部。

考慮分析這個例子,以防你遇到困難。

SVG hacks for you

因此,對於我們的十字圖標(biāo),它會導(dǎo)致如下所示的結(jié)果:

SVG hacks for you

最佳化

在我們將圖示發(fā)佈到網(wǎng)路之前(或從 Figma 下載圖示之後),我們應(yīng)該確保它得到了適當(dāng)?shù)淖罴鸦?。這一點(diǎn)非常重要。在最後一哩的程式碼審查過程中,我被抓到或被抓到的次數(shù)太多了。

SVGO(或反應(yīng)的 SVGR)使其成為一個非常簡單的過程。在幕後,它主要刪除了我們所有不必要的東西。

總的來說,它是一個首選工具。您要么想將其與捆綁器集成,要么從 CLI 使用它。安裝後即可使用,因?yàn)槲覀円呀?jīng)配置了開箱即用的預(yù)設(shè)預(yù)設(shè)。

注意:如果您確實(shí)想要,您可以覆蓋預(yù)設(shè)預(yù)設(shè)。檢查項(xiàng)目README中的配置和文件中的插件清單

結(jié)果

最終的圖示程式碼如下圖所示:

<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 50 50"><g fill-rule="evenodd">



<p>我們將從 inkspace 匯出的原始圖示的大小從 871 位元組減少到僅 322 位元組。 </p>

<h2>
  
  
  動畫帶來的痛苦
</h2>

<p>最後一個對我來說苦樂參半的話題。它也多次出現(xiàn)在調(diào)查答案中。除了使用 Lottie 或在 CSS 中手動設(shè)定 SVG 元素的動畫之外,我不知道更好的方法。當(dāng)您要製作動畫的元素超過 5 個時,第二個選項(xiàng)絕對是折磨。 </p>

<p>當(dāng)然,這是可能的,我們可以做到,但說實(shí)話,還有更多有趣的事情要做? </p>

<p>假設(shè)您仍然好奇如何做到這一點(diǎn)。我在這裡留下一篇精彩文章的連結(jié)。它應(yīng)該讓您相信這需要耐心並且需要 5 分鐘以上。我想知道人工智慧機(jī)器人是否可以幫助您!如果是的話,也許會減輕一點(diǎn)痛苦。 </p>

<p>現(xiàn)在就這樣。 <br>
希望您能從這篇文章中學(xué)到一些東西並度過愉快的一天? </p>


          

            
        </g></svg>

以上是SVG 技巧為您服務(wù)的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
如何在node.js中提出HTTP請求? 如何在node.js中提出HTTP請求? Jul 13, 2025 am 02:18 AM

在Node.js中發(fā)起HTTP請求有三種常用方式:使用內(nèi)置模塊、axios和node-fetch。 1.使用內(nèi)置的http/https模塊無需依賴,適合基礎(chǔ)場景,但需手動處理數(shù)據(jù)拼接和錯誤監(jiān)聽,例如用https.get()獲取數(shù)據(jù)或通過.write()發(fā)送POST請求;2.axios是基於Promise的第三方庫,語法簡潔且功能強(qiáng)大,支持async/await、自動JSON轉(zhuǎn)換、攔截器等,推薦用於簡化異步請求操作;3.node-fetch提供類似瀏覽器fetch的風(fēng)格,基於Promise且語法簡單

JavaScript數(shù)據(jù)類型:原始與參考 JavaScript數(shù)據(jù)類型:原始與參考 Jul 13, 2025 am 02:43 AM

JavaScript的數(shù)據(jù)類型分為原始類型和引用類型。原始類型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時復(fù)制副本,因此互不影響;引用類型如對象、數(shù)組和函數(shù)存儲的是內(nèi)存地址,指向同一對象的變量會相互影響。判斷類型可用typeof和instanceof,但需注意typeofnull的歷史問題。理解這兩類差異有助於編寫更穩(wěn)定可靠的代碼。

React與Angular vs Vue:哪個JS框架最好? React與Angular vs Vue:哪個JS框架最好? Jul 05, 2025 am 02:24 AM

選哪個JavaScript框架最好?答案是根據(jù)需求選擇最適合的。 1.React靈活自由,適合需要高度定制、團(tuán)隊(duì)有架構(gòu)能力的中大型項(xiàng)目;2.Angular提供完整解決方案,適合企業(yè)級應(yīng)用和長期維護(hù)的大項(xiàng)目;3.Vue上手簡單,適合中小型項(xiàng)目或快速開發(fā)。此外,是否已有技術(shù)棧、團(tuán)隊(duì)規(guī)模、項(xiàng)目生命週期及是否需要SSR也都是選擇框架的重要因素??傊瑳]有絕對最好的框架,適合自己需求的就是最佳選擇。

JavaScript時間對象,某人構(gòu)建了一個eactexe,在Google Chrome上更快的網(wǎng)站等等 JavaScript時間對象,某人構(gòu)建了一個eactexe,在Google Chrome上更快的網(wǎng)站等等 Jul 08, 2025 pm 02:27 PM

JavaScript開發(fā)者們,大家好!歡迎閱讀本週的JavaScript新聞!本週我們將重點(diǎn)關(guān)注:Oracle與Deno的商標(biāo)糾紛、新的JavaScript時間對象獲得瀏覽器支持、GoogleChrome的更新以及一些強(qiáng)大的開發(fā)者工具。讓我們開始吧! Oracle與Deno的商標(biāo)之爭Oracle試圖註冊“JavaScript”商標(biāo)的舉動引發(fā)爭議。 Node.js和Deno的創(chuàng)建者RyanDahl已提交請願書,要求取消該商標(biāo),他認(rèn)為JavaScript是一個開放標(biāo)準(zhǔn),不應(yīng)由Oracle

什麼是緩存API?如何與服務(wù)人員使用? 什麼是緩存API?如何與服務(wù)人員使用? Jul 08, 2025 am 02:43 AM

CacheAPI是瀏覽器提供的一種緩存網(wǎng)絡(luò)請求的工具,常與ServiceWorker配合使用,以提升網(wǎng)站性能和離線體驗(yàn)。 1.它允許開發(fā)者手動存儲如腳本、樣式表、圖片等資源;2.可根據(jù)請求匹配緩存響應(yīng);3.支持刪除特定緩存或清空整個緩存;4.通過ServiceWorker監(jiān)聽fetch事件實(shí)現(xiàn)緩存優(yōu)先或網(wǎng)絡(luò)優(yōu)先等策略;5.常用於離線支持、加快重複訪問速度、預(yù)加載關(guān)鍵資源及後臺更新內(nèi)容;6.使用時需注意緩存版本控制、存儲限制及與HTTP緩存機(jī)制的區(qū)別。

處理諾言:鏈接,錯誤處理和承諾在JavaScript中 處理諾言:鏈接,錯誤處理和承諾在JavaScript中 Jul 08, 2025 am 02:40 AM

Promise是JavaScript中處理異步操作的核心機(jī)制,理解鍊式調(diào)用、錯誤處理和組合器是掌握其應(yīng)用的關(guān)鍵。 1.鍊式調(diào)用通過.then()返回新Promise實(shí)現(xiàn)異步流程串聯(lián),每個.then()接收上一步結(jié)果並可返回值或Promise;2.錯誤處理應(yīng)統(tǒng)一使用.catch()捕獲異常,避免靜默失敗,並可在catch中返回默認(rèn)值繼續(xù)流程;3.組合器如Promise.all()(全成功才成功)、Promise.race()(首個完成即返回)和Promise.allSettled()(等待所有完成)

利用Array.Prototype方法用於JavaScript中的數(shù)據(jù)操作 利用Array.Prototype方法用於JavaScript中的數(shù)據(jù)操作 Jul 06, 2025 am 02:36 AM

JavaScript數(shù)組內(nèi)置方法如.map()、.filter()和.reduce()可簡化數(shù)據(jù)處理;1).map()用於一對一轉(zhuǎn)換元素生成新數(shù)組;2).filter()按條件篩選元素;3).reduce()用於聚合數(shù)據(jù)為單一值;使用時應(yīng)避免誤用導(dǎo)致副作用或性能問題。

JS綜述:深入研究JavaScript事件循環(huán) JS綜述:深入研究JavaScript事件循環(huán) Jul 08, 2025 am 02:24 AM

JavaScript的事件循環(huán)通過協(xié)調(diào)調(diào)用棧、WebAPI和任務(wù)隊(duì)列來管理異步操作。 1.調(diào)用棧執(zhí)行同步代碼,遇到異步任務(wù)時交由WebAPI處理;2.WebAPI在後臺完成任務(wù)後將回調(diào)放入相應(yīng)的隊(duì)列(宏任務(wù)或微任務(wù));3.事件循環(huán)檢查調(diào)用棧是否為空,若為空則從隊(duì)列中取出回調(diào)推入調(diào)用棧執(zhí)行;4.微任務(wù)(如Promise.then)優(yōu)先於宏任務(wù)(如setTimeout)執(zhí)行;5.理解事件循環(huán)有助於避免阻塞主線程並優(yōu)化代碼執(zhí)行順序。

See all articles