Tôi đang phát bằng cách sử dụng gradient SVG làm cách để trực quan 'cắt ngắn' chuỗi văn bản dài trong biểu đồ d3.js.SVG: tại sao css bên ngoài ghi đè kiểu nội dòng cho văn bản?
Dường như một kiểu css bên ngoài để lấp đầy sẽ ghi đè kiểu tô màu tô trong dòng trong SVG ... luôn luôn như vậy? Làm thế nào tôi có thể thực thi tô màu gradient đó?
Trong trường hợp thử nghiệm này, tôi đã xác định một dốc tuyến tính trong các số svg defs, và sau đó áp dụng tô màu gradient cho hai nhóm văn bản. 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]; });
sau đó trong CSS, tôi xác định một điền cho .group2 văn bản
.group2 text {
fill: #000;
}
nhóm đầu tiên có các điền gradient, nhóm thứ hai thì không.
Không nên kiểu nội tuyến được ưu tiên?
Cảm ơn!
Hmmm ...Vậy làm thế nào để áp dụng một tô màu tô đậm mà ghi đè lên bất kỳ điền văn bản được xác định trước? – rolfsf
'style =" fill: url (#myGradientId) "' nên thực hiện thủ thuật. –