如何不根据真实的内容而根据未显示的ghost内容调整<div>
的大小?
示例:这里,内容为“A”的框的大小应设置为其内容为“BCD”:
.container { display: flex; width: 10em; }
.item { flex-grow: 1; text-align: center; padding: 0.5rem 1rem;
border: solid black 1px; }
<div class="container">
<div class="item" data-ghost-content="BCD">A</div>
<div class="item">B</div>
<div class="item">C</div>
</div>
注意:容器是一个flexbox。
5条答案
按热度按时间k5ifujac1#
这取决于你的页面是如何创建的,手动还是使用JS。但是如果你可以设法添加一个带有
--char-count
自定义属性的内联样式,你可以使用flex
简写来获得一个通用的解决方案:不要使用
flex-grow
,因为对于此解决方案,flex-basis
实际上需要是0%
flexbox的有趣之处在于,当使用不同的
flex-grow
值(如flex
)时,该机制将使用各种定义的flex-grow
值来分配可用空间。顺便说一句:在CSS var(..,fallback)中,如果需要,fallback 值也可以是
0
,导致flexbox默认值flex-grow: 0
用于'unset'项目。piztneat2#
是的,您可以使附加内容
visibility: hidden;
,它将占用空间但不会显示:在这种方法中,“ghost content”将不包括元素中已经存在的实际可见内容,因此它只是“BC”。
如果希望结果居中,可以为“:before”和“:after”设置“ghost”数据属性。
tquggr8v3#
不知道你能不能稍微调整一下你的结构?
kq0g1dla4#
如何添加一个
.wrapper
,像这样:...然后是一个包含ghost内容的隐藏伪元素。实际内容将被
absolute
-ly定位,以便不占用任何空间:要保留
text-align
ing,请制作.item
flexbox:试试看:
oalqel3c5#
假设你能够调整HTML,为可见内容包含一个
<span>
标签,那么我建议使用CSS网格,因为这允许元素在从背景到前景的空间中相互堆叠,如下所示(在代码中有解释性注解):JS Fiddle demo。
参考文献:
content
。display
。grid-column
。grid-row
。place-content
.user-select
。visibility
。z-index
。