CSS没有应用于SVG

时间:2016-07-29 10:44:53

标签: jquery css d3.js svg

我已经通过D3创建了一个svg但是CSS没有得到正确应用

我正在寻找两个svg一个低于另一个,所以我给了margin-left和margin-top但没有运气

我正在尝试使用Chrome无法正常工作,但在小提琴中工作正常

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>D3 Test</title>
    <script type="text/javascript" src="D3lib/d3.js"></script>
    <style type="text/css">
        .svg_class {
            margin-left:0px;margin-top:70px;background-color:green;
        }
        .svg_class1 {
            margin-left:0px;margin-top:0px;background-color:green;
        }
    </style> 
</head>
<body>

    <script type="text/javascript">

        // One way
        var width = 500,
            height = 50;

        var dataset = [5,10,15,20,25];

        var svg = d3.select("body")
                    .append("svg")
                    .attr("id","svg_1")
                    .attr("width",width)
                    .attr("height",height)
                    .attr("class","svg_class1");

        var circle = d3.select("#svg_1")
                        .selectAll("circle")
                        .data(dataset)
                        .enter()
                        .append("circle");  


        circle.attr("cx",function(d,i){
                    return (i * 50) + 25;
                })
                .attr("cy",height/2)
                .attr("r",function(d){
                    return d;
                });

        // Other way
        var w = 500, h = 50;

        var data = [5,10,15,20,25,30];

        d3.select("body")
            .append("svg")
            .attr("id","svg_2")
            .attr("width",w)
            .attr("height",h)
            .attr("class","svg_class");

        d3.select("#svg_2")
            .selectAll("circle")
            .data(data)
            .enter()
            .append("circle")
            .attr("cx",function(d,i){
                return (i * 50) + 25;
            })
            .attr("cy",h/2)
            .attr("r",function(d){
                return d;
            });


    </script>

</body>

这里是fiddle链接

1 个答案:

答案 0 :(得分:0)

您的SVG正在显示inline(就像图片一样)。如果你display:block他们,他们将会堆叠并确认margin-top

svg {
  display:block;
}

.svg_class {
  margin-left:0px;
  margin-top:100px;
  background-color:blue;
  position: relative;           
}
.svg_class1 {
  margin-left:0px;
  margin-top:0px;
  background-color:green;
  position: relative;
}

这是一个小提琴:https://jsfiddle.net/zw43esrh/1/

编辑:检查一下:https://stackoverflow.com/a/10324608/5385381

特别是这一位vertical margins will not have any effect on non-replaced inline elements