Hug*_*lpz 15 css svg border d3.js
由于D3js,我将SVG元素注入网页.由于语法类似,我很难设计这些元素的样式
path { border: 3px solid green; }
Run Code Online (Sandbox Code Playgroud)
不起作用.
如何使用CSS为网页中的SVG元素添加边框/轮廓/笔划?
Hug*_*lpz 23
在CSS中,类似于:
path {
fill: none;
stroke: #646464;
stroke-width: 1px;
stroke-dasharray: 2,2;
stroke-linejoin: round;
}
Run Code Online (Sandbox Code Playgroud)
编辑:错字
Sou*_*ste 16
尝试添加CSS filter() dropshadow或SVG <filter> <feDropShadow>
svg {
fill: #fff;
}
#example_1 {
filter: drop-shadow(1px 1px 0px #3e68ff) drop-shadow(-1px 1px 0px #3e68ff) drop-shadow(1px -1px 0px #3e68ff) drop-shadow(-1px -1px 0px #3e68ff);
}
Run Code Online (Sandbox Code Playgroud)
<svg id="example_1" width="100" height="100" viewBox="0 0 288 288">
<g>
<path class="st0" d="M144.17,77.84c-37.65,0-68.18,30.52-68.18,68.18c0,37.65,30.52,68.18,68.18,68.18
c37.65,0,68.18-30.52,68.18-68.18C212.35,108.37,181.83,77.84,144.17,77.84z M166.37,117.02c10.77,0.03,15.31,15.39,15.58,20.03
c0.15,2.47-2.95,3.15-4.21,1.21c-0.89-1.37-1.44-2.48-2.56-4.65c-1.51-2.93-4.99-6.08-8.71-6.15c-3.72-0.06-7.31,2.95-8.9,5.9
c-1.23,2.28-1.86,3.4-2.66,4.89c-0.68,1.26-4.16,1.16-4.21-1.26C150.6,132.3,155.61,116.99,166.37,117.02z M121.71,117.02
c10.81-0.05,15.63,15.43,15.73,20.03c0.05,2.33-3.05,3.44-4.4,1.11c-0.82-1.41-1.39-2.45-2.47-4.55c-1.55-3.03-5.16-6.06-8.85-6.05
c-3.7,0.01-7.18,3.08-8.76,5.9c-1.24,2.22-2.18,3.19-2.81,4.74c-0.92,2.27-3.92,1.24-3.97-1.26
C106.09,132.32,111,117.06,121.71,117.02z M184.23,169.45c-1.91,8.19-18.66,26.11-40.26,26.03c-21.44-0.07-38.37-17.77-39.87-26.03
c-0.58-3.19,2.81-5.81,5.61-4.84c11.86,4.09,18.31,4.74,34.29,4.74c15.98,0,22.02-1.48,34.32-4.84
C181.52,163.65,184.9,166.55,184.23,169.45z"></path>
</g>
</svg>
<svg id="example_2" width="100" height="100" viewBox="0 0 288 288">
<defs>
<filter id="shadow">
<feDropShadow dx="-2" dy="-2" stdDeviation="1" flood-color="#3e68ff"></feDropShadow>
<feDropShadow dx="2" dy="-2" stdDeviation="1" flood-color="#3e68ff"></feDropShadow>
<feDropShadow dx="2" dy="2" stdDeviation="1" flood-color="#3e68ff"></feDropShadow>
<feDropShadow dx="-2" dy="2" stdDeviation="1" flood-color="#3e68ff"></feDropShadow>
</filter>
</defs>
<g>
<path filter="url(#shadow)" d="M144.17,77.84c-37.65,0-68.18,30.52-68.18,68.18c0,37.65,30.52,68.18,68.18,68.18
c37.65,0,68.18-30.52,68.18-68.18C212.35,108.37,181.83,77.84,144.17,77.84z M166.37,117.02c10.77,0.03,15.31,15.39,15.58,20.03
c0.15,2.47-2.95,3.15-4.21,1.21c-0.89-1.37-1.44-2.48-2.56-4.65c-1.51-2.93-4.99-6.08-8.71-6.15c-3.72-0.06-7.31,2.95-8.9,5.9
c-1.23,2.28-1.86,3.4-2.66,4.89c-0.68,1.26-4.16,1.16-4.21-1.26C150.6,132.3,155.61,116.99,166.37,117.02z M121.71,117.02
c10.81-0.05,15.63,15.43,15.73,20.03c0.05,2.33-3.05,3.44-4.4,1.11c-0.82-1.41-1.39-2.45-2.47-4.55c-1.55-3.03-5.16-6.06-8.85-6.05
c-3.7,0.01-7.18,3.08-8.76,5.9c-1.24,2.22-2.18,3.19-2.81,4.74c-0.92,2.27-3.92,1.24-3.97-1.26
C106.09,132.32,111,117.06,121.71,117.02z M184.23,169.45c-1.91,8.19-18.66,26.11-40.26,26.03c-21.44-0.07-38.37-17.77-39.87-26.03
c-0.58-3.19,2.81-5.81,5.61-4.84c11.86,4.09,18.31,4.74,34.29,4.74c15.98,0,22.02-1.48,34.32-4.84
C181.52,163.65,184.9,166.55,184.23,169.45z"></path>
</g>
</svg>
Run Code Online (Sandbox Code Playgroud)
对于问题:如何使用 CSS 为网页中的 SVG 元素添加边框/轮廓/描边?
你可以在 CSS 中做:
path { outline: 3px solid green; }
Run Code Online (Sandbox Code Playgroud)
请注意,截至 2018 年,chrome 和 safari 都支持它,但可能不适用于所有现代浏览器。请参阅下面的示例:
我通过 CSS 将大纲应用到一个<g>
包含路径的组中。在静态它看起来不错。在动态(拖动)中,我可以定期看到这些工件(向左)
更新:
<g>
元素的轮廓...