d3js basic JavaScript&css:如何 我将字符串数组(用于图像 url)应用于现有条形图

d3js basic javascript&css: how to I apply an array of strings (for image urls) to the existing bar chart?

本文关键字:图像 用于 数组 url 条形图 应用于 字符串 amp JavaScript basic css      更新时间:2023-09-26

[D3JS]

因此,我尝试做的是制作一个与数据大小成比例的方形条形图,以及要分配的特定图像的每个基准面。

    <style type="text/css">
        div.bar {
            display: inline-block;
            width: 20px;
            height: 75px;   /* Gets overriden by D3-assigned height below */
            margin-right: 2px;
            background-image: url('http://4.bp.blogspot.com/-HWtqJNu3blk/UOhy_vj2I3I/AAAAAAAAhdY/U-krgiDfksw/s640/sydney+australia+rubber+duck+1.jpg');
            background-size: 100%;}
    </style>
        <script type="text/javascript"> 
            var dataset = [ 25, 7, 5];
            var coverset=['http://4.bp.blogspot.com/-HWtqJNu3blk/UOhy_vj2I3I/AAAAAAAAhdY/U-krgiDfksw/s640/sydney+australia+rubber+duck+1.jpg', 
            'http://fora.mtv.ca/wp-content/uploads/2012/09/catsofinstagram.jpg',
'http://www.dogbreedinfo.com/images22/NorthernInuitDogWhiteThunder10Months.jpg',
            ]
            var bar = d3.select("body").selectAll("div")
                .data(dataset)
                .enter()
                .append("div")
                .attr("class", "bar")
                .style("height", function(d) {
                    var barHeight = d * 5;
                    return barHeight + "px";
                })
                .style("width", function(d) {
                    var barWidth = d * 5;
                    return barWidth + "px";
                });
            var img = d3.select("body").selectAll("div")
                .data(coverset)
                .enter()
                .append("div")
                .attr("class", "bar")
                .style("background-img", function(d){
                    return "url(" + d +")";
                });
        </script>

有了这个代码,我明白了。所以我一半的代码都在工作,条形图与每个基准面的大小成正比,但是,每个条形都应具有"封面集"中指定的不同图像,但它仅显示默认的黄鸭图片,不会被 D3 分配的图像覆盖。

有人可以指出我在代码的图像部分做错了什么吗?谢谢!

这是实现目标的一种方法(发布在JSBIN上的代码示例的修订版本(。

http://jsbin.com/ocoyal/1/edit

.CSS

div.bar {
    display: inline-block;
    width: 20px;
    height: 75px;   /* Gets overriden by D3-assigned height below */
    margin-right: 2px;
    background-image: url('http://4.bp.blogspot.com/-HWtqJNu3blk/UOhy_vj2I3I/AAAAAAAAhdY/U-krgiDfksw/s640/sydney+australia+rubber+duck+1.jpg');
    /* https://developer.mozilla.org/en-US/docs/Web/CSS/background-size */
    background-size: cover;
    background-repeat: no-repeat;
  }

JavaScript

            var dataset = [ 25, 7, 5];
            var coverset=['http://4.bp.blogspot.com/-HWtqJNu3blk/UOhy_vj2I3I/AAAAAAAAhdY/U-krgiDfksw/s640/sydney+australia+rubber+duck+1.jpg', 
            'http://fora.mtv.ca/wp-content/uploads/2012/09/catsofinstagram.jpg',
'http://www.dogbreedinfo.com/images22/NorthernInuitDogWhiteThunder10Months.jpg',
            ]
            var bar = d3.select("body").selectAll("div")
                .data(dataset)
                .enter()
                .append("div")
                .attr("class", "bar")
                .style("height", function(d) {
                    var barHeight = d * 5;
                    return barHeight + "px";
                })
                .style("width", function(d) {
                    var barWidth = d * 5;
                    return barWidth + "px";
                })
               //  "background-image", not "background-img"
               //  using "i" for index 
               .style("background-image", function(d, i){
                    return "url(" + coverset[i] +")";
                });