html - CSS - 围绕一组 div 的边框
问题描述
我是后端开发人员,试图在前端方面做得更好。我想知道是否有任何方法,如果您有一组彼此相邻的 div 在它们不代表方形时在它们周围绘制边框。这是我正在尝试的示例:
#child1 {
top: 0px;
left: 0px;
background:red;
}
#child2 {
top: 50px;
left: 0px;
background:blue;
}
#child3 {
top: 0px;
left: 50px;
background:green;
}
.child {
position: absolute;
width: 48px;
height: 48px;
border: 2px black solid;
}
<div>
<div style="position: relative" class="parent">
<div id="child1" class="child">1</div>
<div id="child2" class="child">2</div>
<div id="child3" class="child">3</div>
</div>
</div>
https://jsfiddle.net/udxes0z3/
我想要你可以看到的边界,但不是“1”+“3”和“1”+“2”之间的边界。有什么办法可以通过CSS
?我想避免以编程方式计算这些边界(这就是我目前正在做的事情,这会导致性能问题)。
感谢任何提示或告诉我这是不可能的;-)
*编辑
与“真实”问题相比,该示例过于简化,实际形状可能如下所示:
解决方案
这可以通过在每个正方形上引入一个伪元素来实现。
我们绘制了初始设置,但每个正方形都有两倍的最终结果边框宽度。然后用相同颜色的正方形覆盖每个正方形,没有边框,稍微大一点,z指数更高。
然后,这覆盖了边界周围的一半。并且当正方形的边界相互重叠时,它们之间的这些重叠的正方形覆盖了内部边界并留下了外部边界宽度的一半(即您获得了所需的外部宽度)。
有皱纹。每个方块的内容也会被覆盖。对于这个测试,我将内容放入伪元素的内容中。但这可能不适合完全一般的情况,我们必须考虑在每个正方形内放置一个额外的元素及其内容,并将其显示在伪元素上方。
这是片段。请注意,尺寸和颜色已放入 CSS 变量中,以便更轻松地尝试不同的布局。
* {
margin: 0;
padding: 0;
}
#child1 {
top: 0px;
left: 0px;
--bg: red;
}
#child2 {
top: var(--w);
--bg: blue;
}
#child3 {
top: 0px;
left: var(--w);
--bg: green;
}
.child {
--w: 50px;/* width and height of each square */
--b: 2px;/* width of border */
position: absolute;
background-color: var(--bg);
width: calc(var(--w) - (2 * var(--b)));
height: calc(var(--w) - (2 * var(--b)));
border: calc(2 * var(--b)) black solid;
}
.child::after {
content: '1';
position: absolute;
background-color: var(--bg);
top: calc(var(--b) * -1);
left: calc(var(--b) * -1);
width: calc(var(--w) - var(--b));
height: calc(var(--w) - var(--b));
opacity: 1;
border: 1px transparent solid;
z-index: 9999;
}
#child1::after {
content: '1';
}
#child2::after {
content: '2';
}
#child3::after {
content: '3';
}
<div>
<div style="position: relative" class="parent">
<div id="child1" class="child"></div>
<div id="child2" class="child"></div>
<div id="child3" class="child"></div>
</div>
</div>
推荐阅读
- celery - Apache Airflow:将airflow.cfg 指向postgres 后,它仍然尝试在MySQL 上运行
- android - 应用程序退出而不是进入下一个活动
- c - 如何在C中的冒泡排序函数中保持while循环
- c# - RestSharp C# HTTP POST Oauth 1
- javascript - 试图从数字列表中提取数组值,但值返回无效的数组长度
- mongodb - 在 MongoDB 中获取 groupby 值的总和
- python - 使用 pandas 从由另一列分组的单列绘制三重条形图
- python - 如何将密钥对值添加到打开的 csv 文件中?
- matlab - 系统命令访问带空格的文件夹
- python - 使用 del 或 pop() 来简单地删除一个值是否合适?