【发布时间】:2017-12-27 12:56:06
【问题描述】:
我正在尝试使用 Bootstrap 元素制作交互式标签云。结果没问题,但我使用绝对定位从周围div 的顶部和左侧定位了不同的标签。它粘贴在下面,但因为它是相当多的代码,我也用代码制作了this fiddle(注意:sn-p 旨在以全桌面屏幕宽度查看)。
但是,因为我使用了绝对定位,所以我失去了 Bootstrap 列提供的响应能力。相反,多词标签会分成多行,标签最终相互重叠,以及其他不受欢迎的行为。
我也想让标签云响应,但我不太确定该怎么做。似乎要对媒体查询执行此操作,我需要非常频繁地对宽度进行采样。另一个想法是使用 JQuery 根据窗口宽度调整位置(可能还有字体大小),但这也不能解决问题。
我的最终目标是在屏幕尺寸发生变化时保持内部 div(即标签)的相同相对位置。在某些时候,列可以堆叠,但在列堆叠之前,我希望能够保持相同的标签布局,即使这意味着减少标签之间的空白空间,甚至减少标签的字体大小。在这两种情况下,我都希望使更改与屏幕尺寸的变化成比例。
那么,我怎样才能让这个标签云响应屏幕大小的变化,同时保持内部 div“标签”的布局?
.tmp{
background-color: #000;
height: 600px;
}
.tagcloud{
font: "Arial Bold";
font-weight: bolder;
height: 600px;
background-color: #202020;
position: relative;
text-align: center;
min-width: 700px;
}
.tagcloud div{
position: absolute;
}
.tagcloud a{
text-decoration: none;
color: inherit;
}
.tagcloud a:hover{
text-decoration: underline;
}
.tagcloud .l1{
font-size: 80px;
cursor: pointer;
}
.tagcloud .l2{
font-size: 68px;
cursor: pointer;
}
.tagcloud .l3{
font-size: 56px;
cursor: pointer;
}
.tagcloud .l4{
font-size: 44px;
cursor: pointer;
}
.tagcloud .l5{
font-size: 38px;
cursor: pointer;
}
#item1{
color: #c9d35f;
top: 10px;
left: 150px;
}
#item2{
color: #09c9b9;
top: 210px;
left: 440px;
}
#item3{
color: #ba612e;
top: 410px;
left: 310px;
}
#item4{
color: #4b7711;
top: 275px;
left: 130px;
}
#item5{
color: #1bb1fc;
top: 130px;
left: 560px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container-fluid">
<div class="row">
<div class="col-sm-6 tmp"></div>
<div class="col-sm-6 col-centered tagcloud">
<div class="l1" id="item1">
<a data-container="body" data-toggle="popover" data-trigger="hover" data-placement="top" data-content="Some text">
First Item</a>
</div>
<div class="l2" id="item2">
<a data-container="body" data-toggle="popover" data-trigger="hover" data-placement="top" data-content="Some text">
Another Item
</a>
</div>
<div class="l3" id="item3">
<a data-container="body" data-toggle="popover" data-trigger="hover" data-placement="top" data-content="Some text">
Item3
</a>
</div>
<div class="l4" id="item4">
<a data-container="body" data-toggle="popover" data-trigger="hover" data-placement="top" data-content="Some text">
Item4
</a>
</div>
<div class="l5" id="item5">
<a data-container="body" data-toggle="popover" data-trigger="hover" data-placement="top" data-content="Some text">
Item5
</a>
</div>
</div>
</div>
</div>
【问题讨论】:
-
仅仅声明您希望它“响应”是不够的。您需要描述您希望标签云如何针对不同大小和形状的视口表现,特别是您希望如何解决重叠标签。我不认为这个问题是基于意见的,但它确实缺乏明确性,而且就目前而言,它太宽泛了。
-
@Alohci:感谢您的留言。我已经更新了 OP 以明确我想要达到的效果
标签: html css twitter-bootstrap responsive-design