如何使用 Javascript 內聯 Svg 更改樣式
已發表: 2023-02-06如果您希望使用 JavaScript 更改內聯 SVG 的樣式,則需要牢記一些事項。 內聯 SVG 就像任何其他 HTML 元素一樣,因此您可以使用 CSS 選擇器定位它們。 但是,因為它們是內聯的,所以與常規 HTML 元素相比,它們的樣式可能更棘手。 為了更改內聯 SVG 的樣式,您需要使用 CSS 屬性“fill”。 fill 屬性用於設置 SVG 的顏色。 您可以將 fill 屬性設置為您想要的任何顏色,但請記住,它必須是有效的 CSS 顏色。 您還可以將填充屬性設置為圖像,這是創建一些有趣效果的好方法。 請記住, fill 屬性僅適用於內聯 SVG,因此如果您嘗試使用SVG 背景設置常規 HTML 元素的樣式,它將不起作用。 下面是一個如何使用 JavaScript 更改內聯 SVG 顏色的示例:var svg = document.querySelector('#my-svg'); svg.style.fill = '紅色'; 您還可以使用 CSS 屬性“stroke”來更改內聯 SVG 的筆觸顏色。 stroke 屬性用於設置 SVG 周圍線條的顏色。 下面是一個示例,說明如何使用 JavaScript 更改內聯 SVG 的筆觸:var svg = document.querySelector('#my-svg'); svg.style.stroke = '紅色'; 您還可以使用 CSS 屬性“opacity”使內聯 SVG 透明。 opacity 屬性用於設置元素的透明度。 該值可以是 0 到 1 之間的任何值,0 表示完全透明,1 表示完全不透明。 這是一個如何使用 JavaScript 使內聯 SVG 透明的示例:var svg = document.querySelector('#my-svg'); svg.style.opacity = 0.5;
除了 HTML 之外,HTML 和 SVG 也使用文檔對像模型 (DOM) 表示。 因此,可以使用 Javascript 快速輕鬆地操作它們。 在本課中,我將介紹如何使用內聯和外部 SVG。 如需完整的代碼示例列表,請轉到本頁頂部。 當將元素添加到 URL 本身時,可以使用相同的代碼為外部 SVG 指定元素。 因為 SVG 無法訪問頁面中嵌入的 HTML 文檔,所以我們也可以這樣做,因為頁面上的其他 SVG 無法查看它。 如果將代碼包裝在 CDATA 中,則 XML 解析會考慮 XML 文件的 JS 代碼部分。
元素的創建和刪除方式與它們在 HTML 中的方式相同。 為了創建元素,您必須首先將標籤名稱和相關文檔的 createElementNS() 方法傳遞到 SVG 命名空間中。 您必須首先使用 createTextNode 方法創建一個單獨的文本節點,然後再將其附加到文本元素以刪除元素。 它們不存在於同一個文檔中,因此它們可以一起工作。
下面的步驟將帶您了解如何使用內聯SVG 圖像。 要將 SVG 圖像直接寫入 HTML,請使用 *svg 標籤。 打開 VS 代碼或您喜歡的 IDE 並插入 SVG 圖像,複製代碼並將其粘貼到 HTML 文檔的 body 元素中。
無法以這種方式更改圖像的顏色。 當您將 SVG 作為圖像加載時,您只能使用瀏覽器中的 CSS 或 Javascript 更改它的顯示方式。 要更改圖像,請在加載圖像時內聯使用 *object、*iframe 或 *svg。
使用 style> 元素時,樣式可以直接嵌入到 SVG 內容中。 您必須了解 SVG 的樣式元素與 HTML 的樣式元素具有相同的屬性(有關更多信息,請參閱 HTML 的樣式元素)。
如果您不需要在單個頁面上顯示數千個圖標,請使用內聯SVG 圖標。 您不介意您的文件比平常大,並且頁面不保存在緩存中(或根本不保存)。
Javascript 可以應用於 Svg 嗎?
因為它們可以內聯在 HTML 中,所以我們可以使用 JavaScript 來操作它們。 要使用,我們可以為圖像的一部分製作動畫,使其具有交互性,或者通過使用代碼將其變成可交互的東西。
DRY 代碼使您的代碼更健壯,更不容易輸入,並且運行起來更有效。 使用全局事件對像是 Internet Explorer 的遺留問題; 沒有用。 當您將數據對像傳遞給事件處理程序時,它將使用您傳遞的事件對象。 修改 x 和 y 變量時無需重新表徵它們。 如果您想在所有瀏覽器中使用它,我會提供我提供的 ASCII 事件代碼而不是 keydown,並且您需要使用您提供的奇數。 代碼使用 addEventListner() 來附加事件處理程序,而不是使用 onfoo=”…” 屬性來描述當元素上發生事件時應該發生什麼。 只有在加載頁面後,外部函數才會開始,以便引用元素。
如何在 Svgs 中使用 Javascript
我們可以使用 javascript insvg 嗎?
An.VSW 文檔可以用 JavaScript 分層,可以在文檔打開和關閉之間的任何位置添加。 腳本應該放在文檔的末尾,以防止它阻塞並允許它充分利用 DOM。
Issvg Javascript 依賴?
可以縮放基於矢量的 XML 格式的圖像而不會降低其質量。 CSS 和/或 JavaScript 是用於動畫和操作 SVG 的優秀工具。 因為它是響應式的,與 JPG、JPEG、PNG 和其他文件格式相反,SVG 還減少了頁面加載時間(從而降低了頁面加載速度)。
為什麼 HTML 不接受 svg?
使用 svg>/svg> 標籤時,可以直接將圖像寫入 HTML 文檔。 您可以通過在 VS 代碼或您喜歡的 IDE 中打開 SVG 圖像、複製代碼並將其粘貼到 HTML 文檔中的 body 元素來執行此操作。 如果其他一切都按計劃進行,您應該會得到一個與下圖完全一樣的網頁。
什麼是 svg 文件的最佳軟件?
Chrome、Firefox、IE 和所有其他流行的瀏覽器都可以渲染 SVG 圖像。 基本文本編輯器和高端圖形編輯器,如 CorelDRAW,也支持 SVG 文件。
你能用 Css 設計 Svg 樣式嗎?
在樣式表和表示屬性中使用 CSS 是將SVG 屬性定義為表示屬性或樣式表的一個進步。 這也可以通過 CSS 偽類來完成,例如 :hover 或 :active。 此外,SVG 2 引入了一組可用於顯示的新樣式屬性。
使用 >use> 元素即時訪問圖標或任何其他SVG 元素或圖像可能是一個挑戰。 它旨在提供一些實用方法的概述,以克服 >use> 屬性中固有的樣式限制。 SVG 中定義、結構和引用代碼的四大元素是元素。 創建模板時,使用通過標識符類型定義元素是有利的。 symbol 元素用於組織定義模板的元素,該模板將在文檔的其他地方引用。 use 元素允許您重用現有元素,它提供與圖形編輯器相同的複制粘貼功能。 什麼是影子 DOM?
你真的能從他們的工作中看到文件嗎? 在這種情況下,元素中存在自身的克隆。 使用 Chrome 網上應用店上的開發人員工具預覽影子 DOM 的內容。 為此,請打開“設置”面板並選擇“常規”選項卡,然後選擇“Shadow DOM 檢查”並單擊“齒輪”圖標。 另一方面,影子 DOM 在處理文檔中的 CSS 和 JavaScript 時具有一些明顯的特徵,但它與常規 DOM 並不完全相同。 這條路徑的後代將不可能成為目標。 在這種情況下,這是因為我們無法使用常規 CSS 選擇器訪問影子 DOM。
表示屬性是可以在元素上指定的 CSS 屬性。 它們在自然環境中形成了一系列風格,但可能並不像預期的那樣。 presentation 屬性是受任何其他樣式定義約束的低級屬性表。 樣式級聯中沒有強大的表示屬性,繼承的樣式也被排除在外。 use 元素中的樣式和元素的樣式都將傳遞給每個後代。 任何其他樣式聲明都可以覆蓋表示屬性。 外部樣式聲明是強制覆蓋表示屬性的絕佳方式。
這可以使用 CSS inherit 關鍵字在幾分鐘內完成。 在下面的示例中,我們將使用可以更改填充顏色的路徑,以匹配我們想要為不同目的顯示的冰淇淋類型。 CSS all Property 內容的使用並不常見,但它可能非常有益。 該聲明幾乎肯定會從其祖先那裡繼承所有元素的屬性值。 這幾乎可以在支持所有屬性條目的任何瀏覽器中完成(有關具體信息,請參閱詳細信息)。 我們可以通過使用 CSS currentColor 變量而不是簡單地使用一個來改變元素的顏色。 為此,我們同時使用容器的填充和顏色屬性,然後使用 currentColor 的可變特性將這些顏色層疊到容器的內容中。
我們將使用 currentColor 變量來確保前面的每一滴都被賦予一個特定的顏色值:由 color 屬性指定的值。 該技術在使用簡單的雙色徽標時最有用。 Amelia Bellamy-Royds 一年前在 Codepen 博客文章中提出了這個概念。 使用 CSS 變量時,您可以為 <use> 的內容設置樣式,而不必強制瀏覽器覆蓋任何表示屬性值。 變量是指描述網頁中特定於特定文檔的元素的實體,例如作者和用戶。 CSS 變量與 CSS 預處理器變量(如 Sass)有許多相似之處,但它們更靈活,可以執行以前為預處理器變量保留的各種功能。 您可以擁有任意數量的副本,並選擇一組顏色用於每次使用,從而產生各種主題。
如果您想根據上下文或用例以任何方式更改徽標的樣式,這將特別有用。 不需要將這些變量包含在填充和顏色中,但您可能不需要或不應該這樣做。 如果變量無法加載其定義的值,瀏覽器將恢復為標記中定義的顏色。 在 CSS 中為每個新實例設置一組變量值,您將擁有不同的顏色主題。 使用 CSS 級聯可以幫助簡化內容的樣式 有了 CSS 變量,我們可以通過打破影子 DOM 的線條來根據自己的喜好調整圖形。 它們目前僅受 Firefox 支持,但如果您希望它們更加突出,您也可以在其他瀏覽器中為它們投票。 未來還可能包括使用 CSS 變量作為 SVG 參數,因為關於如何使用 CSS 變量設置內容樣式的討論正在進行中。
fill 屬性不能單獨用於指定 sva 圖形中的顏色。 color 屬性也可以用來表示 SVG 標籤的顏色。 整個圖形將設置為此顏色,包括圖形中的任何文本。 要指定顏色,您還可以使用 currentColor 關鍵字。 要確定圖形的顏色,請選擇文檔中當前使用的顏色。 在處理圖形時,您可以使用此方法使圖形看起來保持一致。 完成圖形顏色設置後,您可以隨時使用 CSS 更改它。 通過選擇此選項,可以輕鬆更改文檔中共享SVG 圖形作為父元素的元素的顏色。
為什麼不能在瀏覽器中更改 Svg 圖像的顏色
借助圖像生成器,您可以輕鬆創建控製圖像外觀的矢量圖形。 但是,如果您想更改圖像在瀏覽器中的顯示方式,則必須使用不同的文件格式。 無法使用 CSS 或 Javascript 更改 SVG 在瀏覽器中的顯示方式。 要更改您的 SVG 圖像,您必須使用其 [[object][iframe])、[[iframe[/iframe]] 或 [[svg]] 內嵌加載它。
在更改 SVG 圖像的顏色之前從文件中刪除任何其他填充屬性。 關鍵字 currentColor 表示正在使用的顏色(不是固定顏色)。 之後,您可以使用 CSS 通過設置元素的顏色屬性或元素的父屬性來更改顏色。
HTML 到 Svg Javascript
有很多方法可以將 HTML 轉換為 SVG。 一種方法是使用像 D3.js 這樣的庫。 另一種方法是使用像 Adobe Illustrator 這樣的工具。
這。 svg 文件格式允許更動態地縮放圖像和數據。 XML 標記描述了這些是如何繪製和對齊的,尤其是路徑。 當您將標記插入 HTML 文件時,它將顯示在用戶的實際圖標中。 此外,通過在呈現數據時從遠程位置將 SVG 圖標動態插入到數據中,可以使用動態插入的 SVG 圖標動態生成數據。 可以創建 XML 標記,也可以在 html 元素中創建和顯示它。 要在 main.js 文件中生成 XML,請創建一個函數。 一旦我們上傳圖片,我們就會將它插入到錨標記中,從而使我們的滾動功能起作用。
因此,現在可以像處理任何其他元素一樣處理 svg。 樣式、類和屬性都可以進行編輯,並且它們都可以發揮作用。 這些圖標是預先添加的,因此它們可以很容易地用作錨鏈接以實現平滑滾動。
Svg Javascript 示例
將 JavaScript 與 SVG 結合使用可為您提供更多選擇和靈活性。 您可以使用 JavaScript 來創建特殊效果、提高性能和驗證表單。 您還可以使用 JavaScript 來控制 SVG 內容本身,例如顯示和隱藏元素以及動畫元素。
該圖形工具採用了一種稱為可縮放矢量圖形 (SVG) 的技術。 可擴展標記語言 (XML) 是一種允許創建基於矢量的圖形的圖像格式,是基於矢量的圖形的獨特格式。 在 CSS 和 HTML 中使用 SVG 圖像與直接使用它不同。 在本教程中,我們將了解六種不同的方法。 本課將向您展示如何使用 sva 文件作為 CSS 背景圖像。 'img' 標籤用於以這種方式將圖像添加到 HTML 文檔。 這一次,我們使用 CSS 來做,而不是 HTML,而且有更多的選擇。
HTML 允許使用 HTML >object 元素將圖像添加到網頁。 所有支持可縮放矢量圖形 (SVG) 的瀏覽器都支持它。 HTML >embed> 元素可用於通過以下語法將圖像添加到 HTML 和 CSS:>embed src=happy.svg。 MDN 建議只使用 >embed > 因為大多數現代瀏覽器不再支持插件。
為什麼在 Javascript 中使用 Svg?
我如何在 JavaScript 中使用 svg?
因為圖像的每個組件都可以使用 CSS 設置樣式或使用 JavaScript 編寫腳本,所以將它們用於樣式/腳本是有意義的。
通過使用 svg> 標籤,您可以將 SVG 圖像嵌入到您的網頁中。 要使網頁看起來像下面的演示,請複制代碼,將其粘貼到 HTML 文檔的 body 標記中,它就會顯示出來。
使用 Javascript 選擇 Svg 元素
要使用 JavaScript 選擇SVG 元素,您可以使用 querySelector() 或 querySelectorAll() 方法。 這些方法在文檔和所有元素上都可用,並且它們接受 CSS 選擇器作為它們的參數。
在 CodePen 中,基本 HTML5 模板中的每個元素都包含在 HTML 編輯器的 body 標籤中。 如果您願意,可以在此處添加可能影響整個文檔的類。 CSS 可以與您選擇在 Internet 上使用的任何樣式表一起應用於您的 Pen。 您可以從互聯網上的任何地方向您的 Pen 添加腳本。 只需在此處的 URL 字段中輸入一個 URL,我們將按照您之前為 Pen 編寫的 JavaScript 的順序添加它。 如果腳本具有與預處理器相關的文件擴展名,我們將在應用前嘗試處理腳本。
Svg:網絡圖形的未來
請輸入 svg 名稱。 還有一些與高度和寬度相關的物理屬性。 本地名稱='svg' br>。
如何使用 Javascript 在 Svg 中添加圖像
為了使用 javascript 在 svg 中添加圖像,必須首先創建一個新的 Image 元素,然後將其 src 屬性設置為圖像的路徑。 加載圖像後,可以將其附加到 svg。
我們需要一個 patio11 頭像來製作一個 patio11bot。 當瀏覽器查看 SVG 時,它會生成一個顯示在屏幕上的圖像。 在 SVG 文件本身中,我包含了一個 openMouth 元素和一個嘴巴組件。 如果我在兩者之間切換可見性,看起來他只是在做他自己。 我們將把 patio11bot talk.svg 放入一個帶有我們將製作的對象標籤的 HTML 文件中。 到目前為止,我們可以詳細了解 SVG 元素。 但是,您還可以使用另一種技巧通過 JavaScript 選擇它們。 使用 contentDocument,我們可以檢索該對象的文檔。 使用這個是我們獲得張嘴張嘴所需參考資料的最佳方式。
Javascript 從文件加載 Svg
假設你想從本地文件系統加載一個 SVG 文件並將其解析為 XML 文檔,你可以使用以下代碼:
var fs = require('fs'),
parseString = require('xml2js').parseString;
fs.readFile('file.svg', function(err, data) {
parseString(數據,函數(錯誤,結果){
控制台目錄(結果);
});
});
是否可以在 Javascript 中使用可縮放矢量圖形 (svg)?
我如何在 javascript 中使用 svg?
事實上,SVG 圖像的樣式和腳本化表達可以在 JavaScript 中以與任何其他 DOM 元素相同的方式完成。
如何在 HTML 中插入外部 SVG?
可以使用 *svg 標籤將外部 SVG 嵌入到 HTML 中。 複製並粘貼代碼後,將代碼複製並粘貼到 HTML 文檔的 body 元素中。 如果一切正確,您應該會看到一個與下圖完全一樣的頁面。
在 C# 中獲取 SVG 的最佳方式是什麼?
要獲取 SVG,請使用對像元素的 contentDocument 屬性。 當您導航到該文檔時,您會找到包含 svg> 元素父名稱的文檔對象。 應該使用文檔對象的 documentElement 屬性來獲取文檔的根元素,即 svg。
在 Javascript 中動態創建 Svg 圖像
可以使用 javascript 動態創建 svg 圖像。 這可以通過創建一個新的 svg 元素並設置其屬性來完成。
在本教程中,我們將討論動態 SVG 元素。 根據 MDN 文檔,http://www.w3.org/2000/svg 是該文件的語法。 我們正在創建的元素——矩形、文本、圓等等——必須有一個限定名稱。 可選的選項參數對我們來說不是問題。 我被它附帶的大量屬性、CSS 和內聯樣式弄得不知所措。 我們可以使用 GreenSock 工具來定義屬性或內聯樣式。 CSS 經常用於現代瀏覽器中的 cy、cy、r 等屬性。
作為一般規則,盡可能多地使用 CSS 屬性(樣式表或內聯樣式)。 在本文中,我將使用 HTML、CSS 和一些表示屬性來構建動態元素。 我們將使用的變量決定了 sva 中需要多少個矩形、寬度和高度。 在發布新的幾何屬性之前,我不會深入探討它們; 但是,它們將包含在下一個版本的軟件中,稱為 SVG2。 當這些元素在運動時,我們可以看到它們是如何相互作用的。 使用 clip-path 工具,我們可以將動態元素添加到 SVG 的根目錄中。 在此演示中,我們將創建基色圓圈的描邊版本並將它們包含在一個組中,以便可以單擊它們。
每個裁剪矩形都從其 y%:100 級別補間,以便它位於裁剪圓下方。 當播放頭反轉時,它將保持中立。 因為我們在補間開始時單擊,所以在開始時單擊之前什麼都沒有。 然後我們將該補間插入到我們的動畫數組中。 它由一個帶內環和外環的波浪形數字表組成。 內循環和外循環都使用 makeLine() 函數創建五條垂直線,外循環使用 makeNumber() 函數在較高的刻度線上方生成一個數字。 您可以使用矢量軟件快速調整內容,而不是返回繪圖板。
Svgsvgelement.getproperty() 方法
使用 SVGSVGElement.getProperty() 方法時,您可以在 svg> 元素上指定屬性。 您可以在 SVGSVGElement.getProperty('fill') 方法中通過選擇具有填充顏色的元素或屬性來獲取填充顏色的值。
Svg 到 Javascript 轉換器
有很多方法可以將 SVG 轉換為 JS。 一種方法是使用像 D3.js 這樣的庫。 該庫有一個名為“selectAll”的內置方法,可用於選擇 SVG 中的每個元素。 選擇每個元素後,您可以使用“attr”函數為每個元素添加 JS 屬性。
我如何獲得形狀的坐標? 我的 SVG 文件當前顯示此形狀作為源。 可能只需將其拖動到 GeoJSON 編輯器中就足夠了。 可以在此鏈接中找到更多信息。 Highcharts 在 http://www.highcharts.com/mapdata/custom/world.js 上有一個 World.js 的地圖數據頁面。 因為高圖直接讀取的是GeoJSON,所以不需要轉換。 編輯工具簡單易懂。 如果您需要更多信息,請參閱 QGIS 文檔。 如果您對添加的功能(以及所做的任何編輯)感到滿意,則需要將圖層導出到 GeoJSON。