मैं एक एसवीजी ढाल का उपयोग करने के साथ खेल रहा हूं, एक d3.js चार्ट में दृष्टि से 'छंटनी' लंबे टेक्स्ट स्ट्रिंग्स के रूप में भरें।एसवीजी: बाहरी सीएसएस टेक्स्ट के लिए इनलाइन शैली को ओवरराइड क्यों करता है?
ऐसा लगता है कि भरने के लिए बाहरी सीएसएस शैली एसवीजी में इनलाइन ग्रेडियेंट भरने की शैली को ओवरराइड कर देगी ... क्या यह हमेशा मामला है? मैं उस ढाल भरने को कैसे लागू कर सकता हूं?
इस परीक्षण मामले में मैंने svg defs में एक रैखिक ढाल परिभाषित किया है, और फिर ग्रेडियेंट को टेक्स्ट के दो समूहों में भरें। http://jsfiddle.net/rolfsf/uX2kH/3/
var labelColWidth = 200;
var svg = d3.select('#test').append('svg')
.attr('width', 500)
.attr('height', 500);
var defs = svg.append('svg:defs');
var textgradient = defs.append('svg:linearGradient')
.attr('gradientUnits', 'userSpaceOnUse')
.attr('x1', 0).attr('y1', 0).attr('x2', 40).attr('y2', 0)
.attr('id', 'theGradient')
.attr('gradientTransform', 'translate(' + (labelColWidth - 40) + ')');
textgradient.append('svg:stop').attr('offset', '0%').attr('style', 'stop-color:rgb(0,0,0);stop-opacity:1')
textgradient.append('svg:stop').attr('offset', '100%').attr('style', 'stop-color:rgb(0,0,0);stop-opacity:0');
var data = [[0, "xyzzy xyzzy"], [1, "xyzzy xyzzy xyzzy xyzzy xyzzy"], [2, "xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy"], [3, "xyzzy xyzzy xyzzy"], [4, "xyzzy xyzzy"], [5, "xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy"]];
var testGroup = svg.append('g')
.attr('transform', 'translate(50, 100)');
var testGroup2 = svg.append('g')
.attr('transform', 'translate(50, 250)')
.attr('class', 'group2');
testGroup.selectAll('text').data(data)
.enter().append('svg:text')
.attr('fill', 'url(#theGradient)')
.attr('x', 0)
.attr('y', function(d, i) { return (i+1) * 20; })
.text(function(d, i) { return d[1]; });
testGroup2.selectAll('text').data(data)
.enter().append('svg:text')
.attr('fill', 'url(#theGradient)')
.attr('x', 0)
.attr('y', function(d, i) { return (i+1) * 20; })
.text(function(d, i) { return d[1]; });
तो सीएसएस में, मैं एक भरने .group2 पाठ
.group2 text {
fill: #000;
}
पहले समूह ढाल भरने है के लिए परिभाषित करते हैं, दूसरे समूह नहीं है।
इनलाइन शैली को प्राथमिकता नहीं लेनी चाहिए?
धन्यवाद!
हममम ...तो कोई एक ग्रेडियेंट भरने को कैसे लागू करता है जो किसी पूर्व-परिभाषित पाठ को ओवरराइड करता है? – rolfsf
'शैली =" भरें: यूआरएल (#myGradientId) "' चाल चलाना चाहिए। –