gpt4 book ai didi

css - 我可以使用带背景色的 SVG 图案吗?

转载 作者:技术小花猫 更新时间:2023-10-29 11:06:43 25 4
gpt4 key购买 nike

我有 SVG 多边形,对于某些多边形,我使用图案作为填充。但我想要那个图案的背景颜色。就像背景颜色上的图案。

var pattern = me.canvas.append('defs')
.append('pattern')
.attr('id', 'diagonalHatch')
.attr('patternUnits', 'userSpaceOnUse')
.attr('width', 4)
.attr('height', 4)
.append('path')
.attr('d', 'M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2')
.attr('stroke', '#010101')
.attr('stroke-width', 1)
.attr("opacity",0.5);


var polyObj = polygonLayer.append("polygon")
.attr('stroke','black')
.attr('stroke-width','2')
.style('fill','url(#diagonalHatch)');

我有这个fiddle .我想要这个图案背后的颜色。

请帮忙。

最佳答案

正如我在评论中提到的,一种方法是在 pattern 中(在 path 之前)添加一个 4x4 rect 并且然后给 rect 所需的填充。

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

<head>
<div id='myDiv'></div>

<script type="text/javascript">
var canvas = d3.select('#myDiv')
.append('svg')
.attr('width', '400px')
.attr('height', '400px');

canvas.append('defs')
.append('pattern')
.attr('id', 'diagonalHatch')
.attr('patternUnits', 'userSpaceOnUse')
.attr('width', 4)
.attr('height', 4)
.append('rect')
.attr('width', 4)
.attr('height', 4)
.attr('x', 0)
.attr('x', 0)
.attr('fill', 'blue');

d3.select('#myDiv svg pattern#diagonalHatch').append('path')
.attr('d', 'M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2')
.attr('stroke', '#010101')
.attr('stroke-width', 1)
.attr("opacity", 0.5);



var polygon = canvas.append('polygon')
.attr('fill', 'none').attr('points', '282.0000915527344,104,280.0001220703125,165.00009155273438,349,174.99998474121094,345.00006103515625,105.99999237060547,282.0000915527344,104')
.attr('stroke', 'black')
.attr('stroke-width', '2')
.style('fill', 'url(#diagonalHatch)')
</script>
</head>

<body>

</body>


下面是一个带有实际代码的演示:

/* map menu controls */

.ui-active rect {
fill: #212121
}
.ui-active text {
fill: #fff
}
.ui-default rect {
fill: #e6e6e6
}
.ui-default text {
fill: #000
}
.map-controls {
display: none;
}
/* heatmap colors (courtesy of colorbrewer2.org) */

.RdYlBu .d6-6 {
fill: #D73027;
background: #D73027;
color: #121212
}
.RdYlBu .d6-5 {
fill: #FC8D59;
background: #FC8D59;
color: #121212
}
.RdYlBu .d6-4 {
fill: #FEE090;
background: #FEE090;
color: #121212
}
.RdYlBu .d6-3 {
fill: #E0F3F8;
background: #E0F3F8;
color: #121212
}
.RdYlBu .d6-2 {
fill: #91BFDB;
background: #91BFDB;
color: #121212
}
.RdYlBu .d6-1 {
fill: #4575B4;
background: #4575B4;
color: #121212
}
/* overlays */

.polygon {
stroke: white;
stroke-width: 2px;
fill-opacity: 0.2
}
.vertex {
stroke: lime;
stroke-width: 2px;
fill: none
}
/* vector field */

.vector {
stroke-width: 1px;
stroke: lightsteelblue
}
/* path plot */

.pathplot path {
stroke-width: 2px;
stroke: steelblue;
fill: #E0E0E0;
opacity: 0.4;
}
.planned {
stroke-dasharray: 9, 5
}
/* Grid lines*/

.grid .tick line {
stroke: #e3e3e3;
opacity: 1;
}
.pathplot line {
stroke-width: 2px;
stroke: steelblue;
stroke-dasharray: 15, 5;
}
.overlays line {
stroke-width: 4px;
stroke: steelblue
}
.overlays path {
stroke-width: 2px;
stroke: steelblue;
fill: none
}
.heatmap .d0 {
fill: #D73027;
stroke: null;
opacity: 0.5;
}
.heatmap .d1 {
fill: #FC8D59;
stroke: null;
opacity: 0.5;
}
.heatmap .d2 {
fill: #FEE090;
;
stroke: null;
opacity: 0.5;
}
.heatmap .d3 {
fill: #E0F3F8;
;
stroke: null;
opacity: 0.5;
}
.heatmap .d4 {
fill: #91BFDB;
;
stroke: null;
opacity: 0.5;
}
.heatmap .d5 {
fill: #4575B4;
;
stroke: null;
opacity: 0.5;
}
.overlays .PERIMETER {
stroke-width: 2px;
stroke: steelblue;
stroke-dasharray: 10, 2;
}
/*wall types*/

.overlays .cubicle {
stroke-width: 2px;
stroke: #2F6299
}
.overlays .bookshelf {
stroke-width: 2px;
stroke: #86471E
}
.overlays .brickwall {
stroke-width: 4px;
stroke: #FF0000;
}
.overlays .drywall {
stroke-width: 2px;
stroke: #948A54;
}
.overlays .thindoor {
stroke-width: 2px;
stroke: #E36C0A;
}
.overlays .thickdoor {
stroke-width: 3px;
stroke: #E36C0A;
}
.overlays .concrete {
stroke-width: 4px;
stroke: #A9ABAA;
}
.overlays .elevatorshaft {
stroke-width: 6px;
stroke: #262626;
}
.overlays .thinwindow {
stroke-width: 2px;
stroke: #FFC000;
}
.overlays .thickwindow {
stroke-width: 3px;
stroke: #FFC000;
}
.overlays .wrap {
stroke-width: 10px;
stroke-opacity: 0;
}
.hmbands {} .hideBands {
display: none !important;
}
.selector_radius {
fill: transparent;
}
.selector_radius.selected {
stroke-width: 5px;
stroke: red;
stroke-dasharray: 3, 2;
}
.coverage_radius {
stroke-width: 1px;
stroke: black;
stroke-dasharray: 3, 2
}
.coverage_radius.selected {
stroke-width: 3px;
stroke: red;
stroke-dasharray: 5, 4;
}
.background-floorplan {
opacity: 0.15;
}
.heatmap {
opacity: 0.25
}
svg {
cursor: pointer;
}
svg .grid .tick {
opacity: 0.3;
}
svg text {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mainDrawingPage {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
svg text::selection {
background: none;
}
.axis path {
stroke: black;
fill: none;
}
.axis line {
fill: none;
stroke: black;
}
.axis .axis-line {
fill: solid;
stroke: black;
}
/* Tooltip */

.nvtooltip,
.nvtooltip * {
font-family: tahoma, arial, verdana, sans-serif;
font-size: 10px;
}
.nvtooltip .missing {
color: #FF0000;
}
.nvtooltip {
position: absolute;
background-color: rgba(255, 255, 255, 1);
padding: 5px;
border: 1px solid #ddd;
z-index: 100000;
-moz-box-shadow: 4px 4px 8px rgba(0, 0, 0, .5);
-webkit-box-shadow: 4px 4px 8px rgba(0, 0, 0, .5);
box-shadow: 4px 4px 8px rgba(0, 0, 0, .5);
-moz-border-radius: 5px;
border-radius: 5px;
pointer-events: none;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background: rgba(255, 255, 255, 0.6);
}
.nvtooltip h3 {
margin: 0;
padding: 0;
text-align: center;
display: inline;
}
.nvtooltip p {
margin: 0;
padding: 0;
text-align: center;
}
.apLabelText {
/*font-weight: bold !important; */
font-size: 10px;
}
.xAxesDivCls {
max-height: 350px;
max-width: 500px;
overflow: hidden
}
.yAxesDivCls {
max-height: 350px;
max-width: 500px;
/* overflow:hidden; */
position: relative;
top: -352px
}
.canvasDivCls {
/* max-height:370px; */
/* max-width:480px; */
/* overflow:auto; */
position: relative;
top: -702px
}
.addImageBtnCls {
position: relative;
top: -700px;
left: 250px;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script type="text/javascript">
function appendPolygon() {
debugger;
var canvas = d3.select('.fp-overlays-1419951398667');

canvas.append('defs')
.append('pattern')
.attr('id', 'diagonalHatch')
.attr('patternUnits', 'userSpaceOnUse')
.attr('width', 4)
.attr('height', 4)
.append('rect')
.attr('width', 4)
.attr('height', 4)
.attr('x', 0)
.attr('x', 0)
.attr('fill', 'white');

d3.select('svg pattern#diagonalHatch').append('path')
.attr('d', 'M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2')
.attr('stroke', '#010101')
.attr('stroke-width', 1)
.attr("opacity", 0.5);



var polygon = canvas.append('polygon')
.attr('fill', 'none').attr('points', '282.0000915527344,104,280.0001220703125,165.00009155273438,349,174.99998474121094,345.00006103515625,105.99999237060547,282.0000915527344,104')
.attr('stroke', 'black')
.attr('stroke-width', '2')
.style('fill', 'url(#diagonalHatch)')
}
</script>

<body>
<div id='xAxesDiv' class="xAxesDivCls">
<svg height="500px" width="700px">
<g class="x axis" transform="translate(100,50)">
<g class="tick" transform="translate(0,0)" style="opacity: 1;">
<line y2="-6" x2="0"></line>
<text y="-9" x="0" dy="0em" style="text-anchor: middle;">0</text>
</g>
<g class="tick" transform="translate(72.60000000000001,0)" style="opacity: 1;">
<line y2="-6" x2="0"></line>
<text y="-9" x="0" dy="0em" style="text-anchor: middle;">100</text>
</g>
<g class="tick" transform="translate(145.20000000000002,0)" style="opacity: 1;">
<line y2="-6" x2="0"></line>
<text y="-9" x="0" dy="0em" style="text-anchor: middle;">200</text>
</g>
<g class="tick" transform="translate(217.79999999999998,0)" style="opacity: 1;">
<line y2="-6" x2="0"></line>
<text y="-9" x="0" dy="0em" style="text-anchor: middle;">300</text>
</g>
<g class="tick" transform="translate(290.40000000000003,0)" style="opacity: 1;">
<line y2="-6" x2="0"></line>
<text y="-9" x="0" dy="0em" style="text-anchor: middle;">400</text>
</g>
<g class="tick" transform="translate(363,0)" style="opacity: 1;">
<line y2="-6" x2="0"></line>
<text y="-9" x="0" dy="0em" style="text-anchor: middle;">500</text>
</g>
<path class="domain" d="M0,-6V0H363V-6"></path>
<line x1="-70" class="axis-line" y1="0" x2="0" y2="0"></line>
</g>
</svg>
</div>
<div id='yAxesDiv' class="yAxesDivCls">
<svg height="500px" width="700px">
<g class="y axis" transform="translate(50,100)">
<g class="tick" transform="translate(0,0)" style="opacity: 1;">
<line x2="-6" y2="0"></line>
<text x="-9" y="0" dy=".32em" style="text-anchor: end;">0</text>
</g>
<g class="tick" transform="translate(0,72)" style="opacity: 1;">
<line x2="-6" y2="0"></line>
<text x="-9" y="0" dy=".32em" style="text-anchor: end;">100</text>
</g>
<g class="tick" transform="translate(0,144)" style="opacity: 1;">
<line x2="-6" y2="0"></line>
<text x="-9" y="0" dy=".32em" style="text-anchor: end;">200</text>
</g>
<g class="tick" transform="translate(0,216)" style="opacity: 1;">
<line x2="-6" y2="0"></line>
<text x="-9" y="0" dy=".32em" style="text-anchor: end;">300</text>
</g>
<g class="tick" transform="translate(0,288)" style="opacity: 1;">
<line x2="-6" y2="0"></line>
<text x="-9" y="0" dy=".32em" style="text-anchor: end;">400</text>
</g>
<g class="tick" transform="translate(0,360)" style="opacity: 1;">
<line x2="-6" y2="0"></line>
<text x="-9" y="0" dy=".32em" style="text-anchor: end;">500</text>
</g>
<path class="domain" d="M-6,0H0V360H-6"></path>
<text x="-25" y="-60" style="font-size: 12px; font-family: Helvetica, Arial, sans-serif; text-anchor: middle;">F</text>
<line x1="0" class="axis-line" y1="-70" x2="0" y2="0"></line>
</g>
</svg>
</div>
<div id='canvasDiv' class="canvasDivCls">
<svg height="500px" width="650px">
<g class="map-layers" width="363" height="360" x="0" y="0">
<rect class="canvas" pointer-events="all" style="opacity: 0;"></rect>
<g class="maplayer gridAxisLayer">
<g class="fp-gridAxisLayer-1419951398667">
<g class="grid" transform="translate(100,100)">
<g class="tick" transform="translate(0,0)" style="opacity: 1;">
<line y2="360" x2="0"></line>
<text y="-3" x="0" dy="0em" style="text-anchor: middle;"></text>
</g>
<g class="tick" transform="translate(72.60000000000001,0)" style="opacity: 1;">
<line y2="360" x2="0"></line>
<text y="-3" x="0" dy="0em" style="text-anchor: middle;"></text>
</g>
<g class="tick" transform="translate(145.20000000000002,0)" style="opacity: 1;">
<line y2="360" x2="0"></line>
<text y="-3" x="0" dy="0em" style="text-anchor: middle;"></text>
</g>
<g class="tick" transform="translate(217.79999999999998,0)" style="opacity: 1;">
<line y2="360" x2="0"></line>
<text y="-3" x="0" dy="0em" style="text-anchor: middle;"></text>
</g>
<g class="tick" transform="translate(290.40000000000003,0)" style="opacity: 1;">
<line y2="360" x2="0"></line>
<text y="-3" x="0" dy="0em" style="text-anchor: middle;"></text>
</g>
<g class="tick" transform="translate(363,0)" style="opacity: 1;">
<line y2="360" x2="0"></line>
<text y="-3" x="0" dy="0em" style="text-anchor: middle;"></text>
</g>
<path class="domain" d="M0,0V0H363V0"></path>
</g>
<g class="grid" transform="translate(100,100)">
<g class="tick" transform="translate(0,0)" style="opacity: 1;">
<line x2="363" y2="0"></line>
<text x="-3" y="0" dy=".32em" style="text-anchor: end;"></text>
</g>
<g class="tick" transform="translate(0,72)" style="opacity: 1;">
<line x2="363" y2="0"></line>
<text x="-3" y="0" dy=".32em" style="text-anchor: end;"></text>
</g>
<g class="tick" transform="translate(0,144)" style="opacity: 1;">
<line x2="363" y2="0"></line>
<text x="-3" y="0" dy=".32em" style="text-anchor: end;"></text>
</g>
<g class="tick" transform="translate(0,216)" style="opacity: 1;">
<line x2="363" y2="0"></line>
<text x="-3" y="0" dy=".32em" style="text-anchor: end;"></text>
</g>
<g class="tick" transform="translate(0,288)" style="opacity: 1;">
<line x2="363" y2="0"></line>
<text x="-3" y="0" dy=".32em" style="text-anchor: end;"></text>
</g>
<g class="tick" transform="translate(0,360)" style="opacity: 1;">
<line x2="363" y2="0"></line>
<text x="-3" y="0" dy=".32em" style="text-anchor: end;"></text>
</g>
<path class="domain" d="M0,0H0V360H0"></path>
</g>
</g>
</g>

<g class="maplayer overlays">
<g class="fp-overlays-1419951398667">
<g id="perimeterLayerId">
</g>

</g>
</g>
</g>
</svg>
</div>
<div>

</div>
<script>
appendPolygon();
</script>
</body>

关于css - 我可以使用带背景色的 SVG 图案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37429608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com