2014-12-13 133 views
2

我正在为学校作业进行数据可视化。我有很多不同大小的圆圈div元素。是否有可能让他们相邻?现在我用float:left;但是div元素在1行,如果一个更大,则有一个空白区域。彼此相邻的圆DIV元素

页面

http://i290808.iris.fhict.nl/dv3/

1圈HTML:

<div class="circle" style="height: 200px; width: 200px; border: 15px solid rgb(255, 141, 0); background-image: url('http://zapp.trakt.us/images/episodes/9635-4-11.jpg?17'); background-size: cover;"> 
    <div class="circle" style="height: 100%; background-color:rgba(255, 146, 0, 0.4)"> 
     <h2 style="font-size: 25px">New Girl</h2> 
    </div> 
</div> 

(有这个HTML元素的风格元素,因为我需要在我的PHP文件,以更改此信息)

CSS文件:

.circle { 
    border-radius: 100%; 
    display: table; 
    float: left; 
} 

h2 { 
    color: #FFF; 
    text-align: center; 
    vertical-align: middle; 
    display: table-cell; 
} 
+2

请不要链接到您的网页,因为它可能在将来被移除,rendereing链接一个死一个:) – Martijn 2014-12-13 17:00:12

+0

另外,为什么是你的头'显示:表cell'?除了block,inline和inline-block之外的任何内容只应在真正需要时使用,而不是作为快速修复:) – Martijn 2014-12-13 17:00:50

+0

@Ruben请在下面找到答案并将其标记为已接受,以解决您的问题。 – 2014-12-13 20:19:26

回答

1

更改以下规则。

h2 { 
    color: #FFF; 
    text-align: center; 
    vertical-align: middle; 
    transform: translateY(-50%); 
    margin-top: 50%; 
    word-wrap: break-word; 
} 
.circle { 
    border-radius: 100%; 
    display: inline-block; 
    vertical-align: middle; 
} 

此外,居中的.circles horiontally包装所有.circles#container DIV,并给它下面的规则。

#container { 
    width: 95%; 
    margin: 0px auto; 
    text-align: center; 
} 

这是结果。

enter image description here

+0

伟大的解决方案,但标题不在Mac中的Safari浏览器中,Chrome浏览器效果很好。我希望有一个简单的解决方案。 – Ruben 2014-12-13 23:26:23

0

使用d3.js wil的气泡图我最适合你的需求。

这里的一个工作的代码片断:

var data = { 
 
    "name": "animate", 
 
    "children": [ 
 
    {"name": "Easing", "size": 17010}, 
 
    {"name": "FunctionSequence", "size": 5842}, 
 
    { 
 
     "name": "interpolate", 
 
     "children": [ 
 
     {"name": "ArrayInterpolator", "size": 1983}, 
 
     {"name": "ColorInterpolator", "size": 2047}, 
 
     {"name": "DateInterpolator", "size": 1375}, 
 
     {"name": "Interpolator", "size": 8746}, 
 
     {"name": "MatrixInterpolator", "size": 2202}, 
 
     {"name": "NumberInterpolator", "size": 1382}, 
 
     {"name": "ObjectInterpolator", "size": 1629}, 
 
     {"name": "PointInterpolator", "size": 1675}, 
 
     {"name": "RectangleInterpolator", "size": 2042} 
 
     ] 
 
    }, 
 
    {"name": "ISchedulable", "size": 1041}, 
 
    {"name": "Parallel", "size": 5176}, 
 
    {"name": "Pause", "size": 449}, 
 
    {"name": "Scheduler", "size": 5593}, 
 
    {"name": "Sequence", "size": 5534}, 
 
    {"name": "Transition", "size": 9201}, 
 
    {"name": "Transitioner", "size": 19975}, 
 
    {"name": "TransitionEvent", "size": 1116}, 
 
    {"name": "Tween", "size": 6006} 
 
    ] 
 
}; 
 

 

 
var diameter = 960, 
 
    format = d3.format(",d"), 
 
    color = d3.scale.category20c(); 
 

 
var bubble = d3.layout.pack() 
 
.sort(null) 
 
.size([diameter, diameter]) 
 
.padding(1.5); 
 

 
var svg = d3.select("body").append("svg") 
 
.attr("width", diameter) 
 
.attr("height", diameter) 
 
.attr("class", "bubble"); 
 

 
//d3.json("flare.json", function(error, root) { 
 
var node = svg.selectAll(".node") 
 
.data(bubble.nodes(classes(data)) 
 
     .filter(function(d) { return !d.children; })) 
 
.enter().append("g") 
 
.attr("class", "node") 
 
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; }); 
 

 
node.append("title") 
 
.text(function(d) { return d.className + ": " + format(d.value); }); 
 

 
node.append("circle") 
 
.attr("r", function(d) { return d.r; }) 
 
.style("fill", function(d) { return color(d.packageName); }); 
 

 
node.append("text") 
 
.attr("dy", ".3em") 
 
.style("text-anchor", "middle") 
 
.text(function(d) { return d.className.substring(0, d.r/3); }); 
 
//}); 
 

 
// Returns a flattened hierarchy containing all leaf nodes under the root. 
 
function classes(data) { 
 
    var classes = []; 
 

 
    function recurse(name, node) { 
 
    if (node.children) node.children.forEach(function(child) { recurse(node.name, child); }); 
 
    else classes.push({packageName: name, className: node.name, value: node.size}); 
 
    } 
 

 
    recurse(null, data); 
 
    return {children: classes}; 
 
} 
 

 
d3.select(self.frameElement).style("height", diameter + "px");
text { 
 
    font: 10px sans-serif; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

关于添加的背景图像的每个气泡,可以在输入数据中的各条路径添加到每个儿童,然后应用它使用d3.js

Various D3.js Bubble Chart tutorials | Google

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – 2014-12-13 17:26:03

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – jproffitt 2014-12-13 19:15:06

+0

@ZachSaucier感谢您指出。以摘录和相关内容中的示例更新我的答案。 – 2014-12-13 20:17:01