【问题标题】:CSS is not getting applied to SVGCSS 未应用于 SVG
【发布时间】:2016-12-04 01:18:48
【问题描述】:

我通过 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链接

【问题讨论】:

  • 在 Firefox 上似乎可以正常工作。
  • 你能分享这张照片吗?我期待一个 svg 块在另一个不平行的 svg 块下
  • 这就是我看到的一个块在另一个块下,麻烦的是绿色背景,块之间有一些分离。
  • 您使用的是哪个版本。我猜可能是版本支持
  • 我正在使用 Firefox 47。如果小提琴有效,那么我们将无法为您提供帮助。您需要创建一些实际显示您的问题的内容。

标签: jquery css d3.js svg


【解决方案1】:

您的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多