首頁 > web前端 > css教學 > 當直接 CSS 樣式受到限制時,如何有效地設定嵌入式 SVG 樣式?

當直接 CSS 樣式受到限制時,如何有效地設定嵌入式 SVG 樣式?

Barbara Streisand
發布: 2024-12-23 03:16:17
原創
346 人瀏覽過

How Can I Effectively Style Embedded SVGs When Direct CSS Styling Is Limited?

設計嵌入式SVG:CSS 限制和替代方法

概述

與直接包含的SVG 相比,設計嵌入式SVG(可縮放向量圖形)可能會帶來挑戰在一個文件中。了解限制並探索替代方法對於有效的樣式至關重要。

嵌入式 SVG 的直接 CSS 樣式

當使用 嵌入 SVG 時,標籤,CSS 樣式不能直接從文件的樣式表套用。這是因為 CSS 樣式不會跨越文檔邊界。

object svg {
    fill: #fff;
}
登入後複製

使用腳本注入樣式

由於嵌入的 SVG 是單獨的文檔,因此可以使用腳本將樣式註入到其中。以下方法假設是已完全載入:

var svgDoc = yourObjectElement.contentDocument;
var styleElement = svgDoc.createElementNS("http://www.w3.org/2000/svg", "style");
styleElement.textContent = "svg { fill: #fff }";
svgDoc.getElementById("where-to-insert").appendChild(styleElement);
登入後複製

或者,可以使用 連結外部樣式表元素:

var svgDoc = yourObjectElement.contentDocument;
var linkElm = svgDoc.createElementNS("http://www.w3.org/1999/xhtml", "link");
linkElm.setAttribute("href", "my-style.css");
linkElm.setAttribute("type", "text/css");
linkElm.setAttribute("rel", "stylesheet");
svgDoc.getElementById("where-to-insert").appendChild(linkElm);
登入後複製

從SVG 檔案直接設定樣式

或者,樣式可以直接連結或包含在SVG文件中:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="my-style.css" type="text/css"?>
<svg xmlns="http://www.w3.org/2000/svg">
  ... rest of document here ...
</svg>
登入後複製

<svg xmlns="http://www.w3.org/2000/svg">
  <defs>
    <link href="my-style.css" type="text/css" rel="stylesheet" 
          xmlns="http://www.w3.org/1999/xhtml"/>
  </defs>
  ... rest of document here ...
</svg>
登入後複製

附加選項:jquery-svg外掛程式

為了進一步提高靈活性,jquery-svg 外掛程式提供了將CSS 樣式和JavaScript 腳本應用於嵌入式SVG 的方法。

以上是當直接 CSS 樣式受到限制時,如何有效地設定嵌入式 SVG 樣式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板