javascript - 如何在不使用 position: absolute 的情况下强制 div 保持在同一行?
问题描述
我正在尝试将图像元素与li
. 如果锚元素的文本很长,它应该换行并从与锚的第一行相同的水平偏移开始。
我的第一次尝试:
<h2>Related</h2>
<ul class="list-unstyled owner-list">
@foreach (var package in Model.RecommendedPackages)
{
<li>
<a href="@Url.Package(package)" title="@package.Id" target="_blank">
<img class="owner-image" aria-hidden="true" alt="" width="32" height="32"
src="@(PackageHelper.ShouldRenderUrl(package.IconUrl) ? package.IconUrl : Url.Absolute("~/Content/gallery/img/default-package-icon.svg"))"
@ViewHelpers.ImageFallback(Url.Absolute("~/Content/gallery/img/default-package-icon-256x256.png"))
/>
</a>
<a href="@Url.Package(package)" title="@package.Id" target="_blank">@package.Id</a>
</li>
}
</ul>
结果是:
因为我希望锚文本从同一行开始,所以我在这里使用了修复并应用于position: absolute;
第二个锚:
<li style="position: relative;">
...
<a href="@Url.Package(package)" title="@package.Id" target="_blank" style="position: absolute;">@package.Id</a>
</li>
结果是:
然后我添加了自动换行:
<li style="position: relative; word-break: break-all;">
结果是:
现在这仍然不能令人满意,因为它没有调整 s 的高度li
以响应换行的文本,因此如上所示, margin-bottom
between li
s 无法正常工作。有关更多信息,请参阅此答案。
一方面,我需要position: absolute;
将图像上的文本保持在同一行。另一方面,我不能拥有 ,position: absolute;
因为它导致div
不占用文档流中的任何空间,导致li
无法扩展,导致margin-bottom
sli
无法正常工作。我该如何处理?
解决方案
对于每个需要水平对齐的子元素,将 css 设置为:
position: relative;
display: inline-block;
如果需要调整子元素的垂直对齐方式,可以使用该vertical-align
属性。
您还可以display: flex
在父元素上使用作为更简单的修复。
推荐阅读
- c# - 从序列化中排除整个类型(类)
- excel - VBA - 根据用户表单标准插入两个新行,并复制单元格范围的 excel 公式
- macos - 运行 Ansible 命令时的 Python 版本
- javascript - 地方在 React 中的 x,y 坐标处
- git - 无法从远程存储库读取 413 错误
- c# - .NET Core 无法连接到远程 SQL Server 数据库
- c# - 使用 SAME Textbox 在 dataGridView 中搜索和插入数据
- javascript - 如何在单页网站上添加整页视差滚动
- facebook - 阻止 Facebook/其他应用程序通过私有共享链接抓取我的网络应用程序
- python - 获取数据框中每个特定行的操作结果