国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
使用元素簡化關(guān)閉圖標
使用元素簡化時鐘圖標
使用元素簡化信封圖標
總結(jié)
通過組合這些基本形狀可以創(chuàng)建多少個圖標?
首頁 web前端 css教程 如何使用基本形狀簡化SVG代碼

如何使用基本形狀簡化SVG代碼

Apr 02, 2025 pm 06:10 PM

How to Simplify SVG Code Using Basic Shapes

處理圖標的方法有很多,但最佳方案始終包括SVG,無論它是內(nèi)聯(lián)實現(xiàn)還是作為圖像文件鏈接。這是因為它們是在代碼中“繪制”的,使它們在任何環(huán)境中都靈活、適應性和可擴展性。

但是,在使用SVG時,總有可能包含許多不必要的代碼。在某些情況下,內(nèi)聯(lián)SVG的代碼可能很長,以至于文檔滾動更長,使用起來不舒服,是的,比它需要的要重一些。

我們可以使用<use></use>元素重用代碼塊,或者應用原生變量來在一個地方管理我們的SVG樣式。或者,如果我們在服務器端環(huán)境中工作,我們總是可以添加一些PHP(或類似的)來提取SVG文件的內(nèi)容,而不是直接將其放入。

這都很好,但是如果我們可以在文件級別解決這個問題,而不是求助于基于代碼的方法,那不是很好嗎?我想關(guān)注一個不同的視角:如何使用基本形狀用更少的代碼制作相同的圖形。這樣,我們就可以在項目中獲得更小、更可控和語義化的圖標的好處,而不會犧牲質(zhì)量或視覺變化。我將介紹不同的示例,探討常用圖標的代碼以及如何使用我們可以制作的一些最簡單的SVG形狀來重新繪制它們。

以下是我們將要處理的圖標:

讓我們看看我們可以用來制作這些圖標的基本形狀,這些形狀使代碼保持小巧和簡單。

噓! 這是我在holasvg.com上創(chuàng)建的更長的簡單圖標列表!閱讀完本文后,您將知道如何修改它們并使它們成為您自己的。

使用<line></line>元素簡化關(guān)閉圖標

這是從flaticon.com下載并由pixel-perfect構(gòu)建的“關(guān)閉”或“交叉”圖標的代碼:

在這個例子中,所有事情都發(fā)生在<path></path>內(nèi)部,數(shù)據(jù)屬性(d)中有很多命令和參數(shù)。這個SVG所做的是從它的邊界追蹤形狀。

如果您熟悉Illustrator,這相當于繪制兩條單獨的線,將它們轉(zhuǎn)換為形狀,然后使用路徑查找器將兩者組合以創(chuàng)建一個復合形狀。

<path></path>元素允許我們繪制復雜的形狀,但在這種情況下,我們可以用兩條線創(chuàng)建相同的圖形,同時保持相同的外觀:

<code><svg height="50" overflow="visible" stroke="black" stroke-linecap="round" stroke-width="10" viewbox="0 0 50 50" width="50" xmlns="http://www.w3.org/2000/svg">
? ?<line x1="0" x2="50" y1="0" y2="50"></line>
? ?<line x1="50" x2="0" y1="0" y2="50"></line></svg></code>

我們首先定義一個viewBox,從0,0到50,50。您可以選擇任何您喜歡的尺寸;SVG將始終很好地縮放至您定義的任何寬度和高度。為了簡化操作,在本例中,我還定義了50個單位的內(nèi)聯(lián)寬度和高度,這避免了繪圖中的額外計算。

要使用<line></line>元素,我們需要聲明線的第一個點的坐標和最后一個點的坐標。在本例中,我們從x=0 y=0開始,結(jié)束于x=50 y=50。

這就是代碼中的樣子:

<code><line x2="50" y2="50"></line></code>

第二條線將從x=50 y=0開始,結(jié)束于x=0 y=50:

<code><line x1="50" y2="50"></line></code>

SVG筆劃默認沒有顏色——這就是為什么我們在stroke屬性中添加黑色值的原因。我們還為stroke-width屬性提供了10個單位的寬度,并將stroke-linecap設置為圓形值,以復制原始設計的那些圓角。這些屬性直接添加到<svg></svg>標簽中,因此兩條線都將繼承它們。

由于筆劃比其默認大小1個單位大10個單位,因此viewBox可能會裁剪該線。我們可以將點向viewBox內(nèi)部移動10個單位,或者將overflow=visible添加到樣式中。

等于0的值可以刪除,因為0是默認值。這意味著兩行最終只有兩行非常小的代碼:

<code><line x2="50" y2="50"></line><line x1="50" y2="50"></line></code>

僅僅通過將<path></path>更改為<line></line>,我們不僅創(chuàng)建了一個更小的SVG文件,而且創(chuàng)建了一個更具語義和可控的代碼塊,這使得任何未來的維護都更容易。視覺效果與原圖完全相同。

相同的交叉,不同的代碼。

使用<circle></circle><path></path>元素簡化時鐘圖標

我從The Noun Project的barracuda那里獲得了這個時鐘圖標示例:

此形狀也使用<path></path>繪制,但我們還有許多與所用軟件和文件許可相關(guān)的命名空間和XML指令,我們可以刪除這些指令而不會影響SVG。你能說出使用哪個插圖編輯器創(chuàng)建圖標嗎?

讓我們使用一個圓圈和一個具有更簡單命令的路徑從頭開始重新創(chuàng)建這個。同樣,我們需要從一個viewBox開始,這次是從0,0到100,100,并且寬度和高度與這些單位匹配。

<code><svg fill="none" height="100" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="10" viewbox="0 0 100 100" width="100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="40"></circle><path d="M50 25V50 H75"></path></svg></code>

我們將<svg></svg>標簽中的樣式保持與之前的圖標相同。fill默認為黑色,因此我們需要顯式地為其賦予none值才能將其刪除。否則,圓圈將具有純黑色填充,遮擋其他形狀。

要繪制<circle></circle>,我們需要指示半徑將位于其中的中心點。我們可以通過cx(中心x)和cy(中心y)來實現(xiàn)這一點。然后r(半徑)將聲明我們的圓圈有多大。在這個例子中,半徑略小于viewBox,因此當筆劃寬度為10個單位時,它不會被裁剪。

所有這些字母是怎么回事?查看Chris Coyier的插圖指南,了解SVG語法的入門知識。

我們可以對時鐘指針使用<path></path>,因為它有一些非常有用和簡單的繪圖命令。在d(數(shù)據(jù))中,我們必須以M(移動到)命令開頭,后跟我們將開始繪制的坐標,在本例中為50,25(靠近圓的頂部中心)。

在V(垂直)命令之后,我們只需要一個值,因為我們只能使用負數(shù)或正數(shù)向上或向下移動。正數(shù)將向下移動。H(水平)也是如此,后跟一個正數(shù)75,這將向右繪制。所有命令都是大寫的,因此我們選擇的數(shù)字將是網(wǎng)格中的點。如果我們決定使用小寫字母(相對命令),則數(shù)字將是我們在一個方向上移動的單位數(shù)量,而不是坐標系中的絕對點。

相同的時鐘,不同的代碼。

使用<rect></rect><polyline></polyline>元素簡化信封圖標

我在Illustrator中繪制了信封圖標,沒有擴展原始形狀。這是從導出中獲得的代碼:

Illustrator提供了一些導出圖形的SVG選項。我在“CSS屬性”下拉菜單中選擇了“樣式元素”,這樣我就可以擁有一個包含類別的標簽,我可能希望將其移動到CSS文件中。當然,應用SVG樣式的方法有很多種。

我們在這個代碼中已經(jīng)有了一些基本形狀!我沒有選擇Illustrator中的“形狀到路徑”選項,這在這里幫助很大。我們可以使用SVGOMG進一步優(yōu)化它,以刪除注釋、XML指令和不必要的數(shù)據(jù),例如空元素。如果需要,我們可以從那里手動刪除其他額外內(nèi)容。

我們已經(jīng)有了一些更簡潔的東西:

<code><svg version="1.1" viewbox="0 0 310 190" x="0" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" y="0">
? .st0{fill:none;stroke:#000;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}
? <rect height="180" width="300" x="5" y="5"></rect>
? <polyline points="5 5 155 110 305 5"></polyline></svg></code>

我們可以刪除更多內(nèi)容而不會影響信封的視覺外觀,包括:

  • version="1.1"(自SVG 2以來已棄用)
  • (這沒有意義或用途)
  • x="0"(這是一個默認值)
  • y="0"(這是一個默認值)
  • xml:space="preserve"(自SVG 2以來已棄用)
<code><svg viewbox="0 0 310 190" xmlns="http://www.w3.org/2000/svg">
? .st0{fill:none;stroke:#000;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}
? 
? <rect height="180" width="300" x="5" y="5"></rect>
? <polyline points="5 5 155 110 305 5"></polyline></svg></code>

如果我們真的想變得非常激進,我們可以將CSS樣式移動到單獨的樣式表中。

<rect></rect>需要一個起點,我們將從那里擴展寬度和高度,因此讓我們使用x="5"和y="5"作為我們的左上角點。從那里,我們將創(chuàng)建一個寬度為300個單位,高度為180個單位的矩形。就像時鐘圖標一樣,我們將使用5,5作為起點,因為我們有一個10個單位的筆劃,如果坐標位于0,0,則該筆劃將被裁剪。

<polyline></polyline>類似于<line></line>,但此元素始終定義一個封閉的形狀。這是一個直接來自MDN的示例:

記住我們之前為時鐘圖標繪制的圓圈?將r(半徑)替換為rx和ry?,F(xiàn)在您有兩個不同的半徑值。這是來自MDN的另一個示例:

總結(jié)

我們在短時間內(nèi)涵蓋了很多內(nèi)容!雖然我們使用示例來演示優(yōu)化SVG的過程,但我希望您從這篇文章中獲得以下幾點:

  • 請記住,壓縮始于在插圖軟件中繪制SVG的方式。
  • 使用可用的工具,如SVOMG,來壓縮SVG。
  • 必要時手動刪除不必要的元數(shù)據(jù)。
  • 將復雜的路徑替換為基本形狀。
  • <use></use>是“內(nèi)聯(lián)”SVG以及建立您自己的可重用圖標庫的好方法。

通過組合這些基本形狀可以創(chuàng)建多少個圖標?

我在holasvg.com/icons上制作我的列表,我將不斷在此處上傳更多圖標和功能,現(xiàn)在您知道如何通過更改幾個數(shù)字輕松修改它們。繼續(xù),讓它們成為你自己的吧!

以上是如何使用基本形狀簡化SVG代碼的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

如何僅在某些頁面上包括CSS? 如何僅在某些頁面上包括CSS? Jun 11, 2025 am 12:01 AM

選擇性包含CSS在特定頁面上的方法有三種:1.內(nèi)聯(lián)CSS,適用于不常訪問或需要獨特樣式的頁面;2.使用JavaScript條件加載外部CSS文件,適合需要靈活性的情況;3.服務器端包含,適用于使用服務器端語言的場景。這種方法可以優(yōu)化網(wǎng)站性能和可維護性,但需平衡模塊化與性能。

Flexbox與網(wǎng)格:了解CSS布局的關(guān)鍵差異 Flexbox與網(wǎng)格:了解CSS布局的關(guān)鍵差異 Jun 10, 2025 am 12:03 AM

flexboxisidealforone-dimensionAllayouts,while gridsuitStwo,complex layouts.useflexboxforaligningItemsinasingLeaxisAndGridForRidForPreciseconcontroloverroverroverroverroverroverroverrowsandsininintricatientricatedesigns。

使用HTML彈出案創(chuàng)建自動關(guān)閉通知 使用HTML彈出案創(chuàng)建自動關(guān)閉通知 Jun 10, 2025 am 09:45 AM

HTML彈出屬性將元素轉(zhuǎn)換為頂層元素,可以使用按鈕或JavaScript打開和關(guān)閉??梢詫棾霭格g回多種方式,但是沒有選擇自動關(guān)閉它們。 preethi有一種技術(shù),你可以

什么是'渲染障礙CSS”? 什么是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會阻塞頁面渲染是因為瀏覽器默認將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量內(nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。1.提取關(guān)鍵CSS并內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合并CSS減少請求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復雜腳本控制。

如何在無花果中使用Lotties 如何在無花果中使用Lotties Jun 14, 2025 am 10:17 AM

在接下來的教程中,我將向您展示如何在無花果中創(chuàng)建Lottie動畫。我們將使用兩種彩色設計來超越如何在無花果上進行動畫,然后向您展示如何從Figma到Lottie動畫。您只需要免費無花果

打破邊界:用(s)CSS構(gòu)建湯姆拼圖 打破邊界:用(s)CSS構(gòu)建湯姆拼圖 Jun 13, 2025 am 11:33 AM

我們對其進行了測試,事實證明,至少在低級邏輯和拼圖行為時,Sass可以替換JavaScript。除了地圖,混音,功能和大量數(shù)學外,我們都設法使我們的Tangram難題栩栩如生,沒有J

外部與內(nèi)部CSS:最好的方法是什么? 外部與內(nèi)部CSS:最好的方法是什么? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進性技術(shù),3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

See all articles