【发布时间】:2017-07-26 20:07:22
【问题描述】:
我如何将这个圆圈与 css(或 js/jquery)连接起来,以便在屏幕较小时它可以响应并且线条不会重叠。我也尝试过在整个容器后面排线,但由于我的圆圈需要透明,所以线总是在圆圈后面:
这是线不在每个圆圈后面的唯一方法。但我不知道如何使它不重叠,我需要我的线从一个边界到另一个边界。 此外,当我减小宽度时,线条重叠并在圆圈后面。
演示:http://codepen.io/riogrande/pen/jqVKBb
css:
.flex-container {
padding: 0;
margin: 0;
list-style: none;
-ms-box-orient: horizontal;
display: -webkit-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
-webkit-box-pack: justify;
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
justify-content: space-between;
}
.flex-container .flex-item {
background: transparent;
width: 50px;
height: 50px;
margin: 5px;
line-height: 50px;
color: #ffefbd;
font-weight: bold;
font-size: 22px;
text-align: center;
border: 6px solid #ffefbd;
border-radius: 50%;
position: relative;
}
.flex-container .flex-item:after {
width: 100%;
border-top: 6px solid #ffefbd;
content: '';
display: block;
position: absolute;
left: 100%;
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.flex-container .flex-item:before {
width: 100%;
border-top: 6px solid #ffefbd;
content: '';
display: block;
position: absolute;
right: 100%;
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.flex-container .flex-item:last-child:after {
display: none;
}
.flex-container .flex-item:first-child:before {
display: none;
}
html:
<ul class="flex-container space-between">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
<li class="flex-item">6</li>
<li class="flex-item">7</li>
</ul>
【问题讨论】:
-
因为您使用的是伪元素(::before 和::after),所以在加载 DOM 时没有可用于 JS/JQ 的元素。我能看到让这些行响应式行为的唯一方法是在页面操作期间手动将样式添加到样式表(请参阅stackoverflow.com/questions/5041494/…)。
-
但我怎么连圈子?
-
由于您需要它们的背景透明并且不能使用 CSS,我建议您重写其中的线条是单独的元素。这将允许您使用 JQ/JS 执行基本的数学运算,允许您将它们连接到圆的边缘。不幸的是,由于我的工作量,我无法帮助重写:/ 有很多不同的解决方案 (stackoverflow.com/questions/19382872/…),还有一些 GitHub 项目可能会让你觉得这很简单 (github.com/jfmdev/jqSimpleConnect, jfmdev.github.io/jqSimpleConnect/demo2.html)
-
啊,那对不起。不过,它绝对可以使用 JS/JQ。很久以前,我以这种方式为游戏 PowerGrid 的在线版本制作了一个节点/边图生成器,但该代码丢失了。祝你好运,希望我能有所帮助。
-
不知道如何用 CSS 来做这件事,编写代码来计算每行的位置和宽度以在浏览器调整大小时呈现可能需要做很多工作。但是如果你必须坚持使用 img 和 css,那就这样吧。但是,在表格中应该很简单。
标签: javascript jquery html css