代码之家  ›  专栏  ›  技术社区  ›  dwjohnston

为什么在设置SVG样式时“x”作为CSS属性工作?

  •  2
  • dwjohnston  · 技术社区  · 6 年前

    我正试图弄清楚我可以通过CSS在SVG上控制什么。

    下面的示例显示了属性有时可以通过CSS控制,有时则不能:

    div {
     border: dashed 1px grey; 
     padding: 0.5em; 
    }
    
    rect.controlled-by-css {
     stroke: red; 
     stroke-width: 2px; 
     x: 5; 
     y: 20; 
     height: 10px; 
     width: 10px; 
    }
    
    line.controlled-by-css {
     
     x1: 25; 
     y1: 25; 
     x2: 40; 
     y2: 40; 
     
     stroke: red; 
     stroke-width: 2px; 
    }
    <div> 
    
    <svg> 
       <rect stroke ="black" x ="0" y ="0" height ="10" width ="10"/> 
       
       <line stroke ="black" x1 ="15" y1 =" 15" x2 ="25" y2 ="0"/> 
       
       <rect class ="controlled-by-css"/> 
       
       <!-- this line won't show up - x1, x2, y1, y2 are invalid property names --> 
       <line class ="controlled-by-css"/> 
    </svg> 
    </div> 

    这是怎么回事?

    我看过MDN文档,

    https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation

    上面写着:

    SVG表示属性是可以用作SVG元素属性的CSS属性。

    但是x,y并没有列为表示元素,但是仍然可以用CSS控制。

    我如何知道哪些属性可以用CSS控制,哪些不能?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Community Mr_and_Mrs_D    4 年前

    答案在以下文档中: <rect>

    注意:从SVG2开始x、y、width、height、rx和ry是几何体属性,这意味着这些属性也可以用作该元素的CSS属性。

    有关几何图形特性的详细信息,请参见 w3 documentation here .

    它看起来还可以通过CSS控制表示属性-如 documentation for the transform property .

    以下是w3关于样式的更一般的文档: https://www.w3.org/TR/SVG2/styling.html

    相关文件为:

    6.6. 演示文稿属性

    由于表示属性被解析为CSS值,而不是声明,所以!表示属性中的重要声明将导致它具有无效值。有关如何解析表示属性的详细信息,请参见属性语法。