stroke-opacity

Baseline 已廣泛支援

該特性已非常成熟,可在多種裝置和瀏覽器版本上使用。自 2017 年 4 月以來,它已在各大瀏覽器上可用。

stroke-opacity CSS 屬性定義了 SVG 形狀描邊的不透明度。其效果與 opacity 相同,但僅應用於描邊,不應用於整個元素。如果存在,它會覆蓋元素的 stroke-opacity 屬性。

此屬性適用於 SVG 形狀和文字內容元素(完整列表請參閱 stroke-opacity),但作為繼承屬性,它也可以應用於 <g> 等元素,並仍對子元素的描邊產生預期效果。

請注意,形狀的描邊會部分覆蓋該形狀的填充,因此不透明度小於 1 的描邊將會在重疊處顯示填充與描邊混合的效果。為避免此效果,可以使用 opacity 屬性應用全域性不透明度,或使用 paint-order 屬性將描邊置於填充之後。

語法

css
/* numeric and percentage values */
stroke-opacity: 1;
stroke-opacity: 0.3;
stroke-opacity: 50%;

/* Global values */
stroke-opacity: inherit;
stroke-opacity: initial;
stroke-opacity: revert;
stroke-opacity: revert-layer;
stroke-opacity: unset;

<number>

任何介於 0 到 1 之間(包括 0 和 1)的實數。值為 0 使描邊完全透明,值為 1 使其完全不透明。超出 0 – 1 範圍的值將被裁剪到該範圍的最近端;因此,負值將被裁剪為 0

<percentage>

<number> 相同(見上文),但允許範圍為 0% 到 100%,並且裁剪是根據該範圍進行的。

正式定義

初始值1
應用於svg 中的 <circle><ellipse><line><path><polygon><polyline><rect> 元素
繼承性
計算值指定值,裁剪到範圍 [0,1]
動畫型別按計算值型別

正式語法

stroke-opacity = 
<'opacity'>

<opacity> =
<opacity-value>

<opacity-value> =
<number> |
<percentage>

示例

各種描邊不透明度

本示例演示了 stroke-opacity 屬性的基本用法,以及形狀的描邊如何部分覆蓋其填充,不透明度小於 1 的描邊如何在重疊處與填充混合。

HTML

首先,我們設定了五個多段路徑,所有路徑都使用寬度為一的黑色描邊,以及子路徑的 dodgerblue 填充。每個路徑建立一系列山峰符號,從左(淺角)到右(極角)。

html
<svg viewBox="0 0 39 36" xmlns="http://www.w3.org/2000/svg">
  <g stroke="black" stroke-width="1" fill="dodgerblue">
    <path
      d="M1,5 l7   ,-3 l7   ,3
         m2,0 l3.5 ,-3 l3.5 ,3
         m2,0 l2   ,-3 l2   ,3
         m2,0 l0.75,-3 l0.75,3
         m2,0 l0.5 ,-3 l0.5 ,3" />
    <path
      d="M1,12 l7,-3 l7,3 m2,0 l3.5,-3 l3.5,3 m2,0 l2,-3 l2,3 m2,0 l0.75,-3 l0.75,3 m2,0 l0.5,-3 l0.5,3" />
    <path
      d="M1,19 l7,-3 l7,3 m2,0 l3.5,-3 l3.5,3 m2,0 l2,-3 l2,3 m2,0 l0.75,-3 l0.75,3 m2,0 l0.5,-3 l0.5,3" />
    <path
      d="M1,26 l7,-3 l7,3 m2,0 l3.5,-3 l3.5,3 m2,0 l2,-3 l2,3 m2,0 l0.75,-3 l0.75,3 m2,0 l0.5,-3 l0.5,3" />
    <path
      d="M1,33 l7,-3 l7,3 m2,0 l3.5,-3 l3.5,3 m2,0 l2,-3 l2,3 m2,0 l0.75,-3 l0.75,3 m2,0 l0.5,-3 l0.5,3" />
  </g>
</svg>

CSS

我們對這些路徑應用了逐漸增高的描邊不透明度值。對於前四個路徑,可以透過描邊路徑的內部一半看到填充,儘管對於第四個路徑可能難以辨別。對於第五個也是最後一個路徑,描邊完全不透明,因此無法透過描邊看到填充。

css
g path:nth-child(1) {
  stroke-opacity: 0.2;
} /* equiv. 20% */
g path:nth-child(2) {
  stroke-opacity: 0.4;
} /* equiv. 40% */
g path:nth-child(3) {
  stroke-opacity: 0.6;
} /* equiv. 60% */
g path:nth-child(4) {
  stroke-opacity: 0.8;
} /* equiv. 80% */
g path:nth-child(5) {
  stroke-opacity: 1;
} /* equiv. 100% */

結果

規範

規範
CSS 填充與描邊模組 Level 3
# stroke-opacity

瀏覽器相容性

另見