html - 使 div 的宽度为其内容宽度的两倍
问题描述
例如,HTML:
<div style="top:0;">January</div>
<div style="top:30px;">February</div>
<div style="top:60px;">March</div>
CSS:
div{
position:absolute;
border-bottom: 1px solid black;
}
我想在内容之前和之后添加原始内容宽度的一半,这样我就可以将每个 div 的宽度加倍。
效果是这样的,解决方法是手动一一插入内联块: https ://jsfiddle.net/vj25udLy/13/
如果我可以直接将宽度设置为其内容宽度的 200% 或其他比例,那么这项工作似乎更简单、更灵活。
如果没有纯 CSS 解决方案,欢迎使用 JS/jQuery 解决方案。
解决方案
一个技巧是对内容使用数据属性,然后将其添加到两个伪元素中(现在您有 2 倍的内容),然后隐藏一个并将另一个居中:
.element {
display:inline-block;
margin:20px;
border-bottom:1px solid;
}
.element:before,
.element:after {
content:attr(data-text);
}
.element:before {
visibility:hidden;
}
.element:after {
display:inline-block;
transform:translate(-50%);
}
<div class="element" data-text="January"></div>
<div class="element" data-text="February"></div>
<div class="element" data-text="March"></div>
<div class="element" data-text="aaaaaaaaaaaaaaaa"></div>
<div class="element" data-text="bb"></div>
如果您只想实现边框,另一个想法是使用伪元素并使其宽度为 200%(或left:-50%
和right:-50%
):
body {
text-align:center;
}
.element {
display:inline-block;
margin:20px;
position:relative;
}
.element:after {
content:"";
position:absolute;
left:-50%;
right:-50%;
bottom:0;
height:1px;
background:#000;
}
<div class="element">January</div>
<br>
<div class="element">February</div>
<br>
<div class="element">March</div>
<br>
<div class="element">aaaaaaaaaaaaaaaa</div>
<br>
<div class="element">bb</div>
推荐阅读
- reactjs - 带有 React Hook 的 D3 面积图
- javascript - 为什么我的冒泡排序不对重复项进行排序而只触发一次?
- javascript - 是否可以在 javascript 中构造动态布尔函数?
- visual-studio - 如何在 VSPackage 中检测 XAML 设计器窗口
- node.js - 如何将 Angular Universal 10 Prerender 部署到 Azure 应用服务?
- php - LRAVEL 8 分页不存在,我需要按 region_id 选择数据并对其进行分页
- amazon-web-services - 无法从 aws s3 存储桶中删除图像
- laravel - InvalidArgumentException - 安装旧版本的 Laravel
- date - 将日期类型添加到 prisma2 模式
- python - 在 Python 中后处理 subprocess.run 的输出信息