gpt4 book ai didi

html - 如何对齐绝对定位 HTML 元素的基线

转载 作者:行者123 更新时间:2023-12-03 08:17:03 25 4
gpt4 key购买 nike

我正在尝试使用 CSS 在 HTML 段落的边距内编写一个短标签,其方式与 HTML 列表项的标记方式类似。我认为这样做的方法是使标签成为一个绝对定位的内联 block ,该 block 在边距内移动(请参见下面的 HTML+CSS 代码)。这正如我预期的那样,只是我找不到将标签文本的基线与相应段落的第一行对齐的方法。

HTML+CSS 代码:

.labeled {
margin-left: 40px;
position: relative;
}

.labeled::before {
display: inline-block;
content: attr(data-label);
position: absolute;
width: 40px;
left: -40px;
/* How to vertically position so paragraph and label have same baseline? */
}
<p class="labeled" data-label="L">Lorem ipsum<sup>SUPERSCRIPT</sup> dolor sit amet, consectetur adipiscing elit. Ut cursus sem in nisl pulvinar porta. Praesent laoreet nisl sit amet sagittis mollis. Aliquam sit amet erat vitae enim ullamcorper dapibus ut vel lectus. Maecenas facilisis
accumsan diam ut maximus. Suspendisse potenti. Donec sapien sem, lacinia eu eros vitae, tincidunt congue leo.
</p>

The same code in JSFiddle

问题是标签与顶部段落的第一行垂直对齐,而不是像我希望的那样与基线对齐:

screenshot of HTML code output

如果不是上标使第一行更高,上图中的两个“L”将会垂直对齐。

如何实现相同的结果但垂直对齐正确? (我愿意以不同的方式做事,并且我愿意假设标签永远不会总是适合边距的一行内;我也同意标签在边距内右对齐而不是左对齐-对齐,如果这有任何帮助的话。另一方面,我不想使用任何类型的 JavaScript,并且我想避免丑陋的黑客行为。我的要求是否太多了?)

最佳答案

摆脱position:absolute并使用负边距

.labeled {
margin-left: 40px;
position: relative;
}

.labeled::before {
display: inline-block;
content: attr(data-label);
width: 40px;
margin-left:-40px;
}
<p class="labeled" data-label="L">Lorem ipsum<sup>SUPERSCRIPT</sup> dolor sit amet, consectetur adipiscing elit. Ut cursus sem in nisl pulvinar porta. Praesent laoreet nisl sit amet sagittis mollis. Aliquam sit amet erat vitae enim ullamcorper dapibus ut vel lectus. Maecenas facilisis
accumsan diam ut maximus. Suspendisse potenti. Donec sapien sem, lacinia eu eros vitae, tincidunt congue leo.
</p>

关于html - 如何对齐绝对定位 HTML 元素的基线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69037561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com