gpt4 book ai didi

html - 我如何设置 ul/ols 的样式以便能够灵活地环绕 float 内容?

转载 作者:太空狗 更新时间:2023-10-29 15:18:14 24 4
gpt4 key购买 nike

我觉得应该是一组相对简单的约束,但我似乎找不到解决方案。我正在尝试构建一组 WYSIWYG 组件样式,这些样式可以灵活地协同工作,并且无法获得元素符号/编号列表的组合以可预测地环绕 float 数字而不丢失缩进或导致内容重叠:

限制:

  • 嵌套列表应该在每一层嵌套中缩进更多
  • float 内容可以 float 到右侧或左侧
  • 列表可以是任意长的并且应该可预测地环绕 float 内容

这是设置为“float: left”的内容右侧列表的默认样式。元素符号与 float 内容重叠,缩进丢失。

.pull-left {
background: #3333ff;
color: white;
float: left;
width: 50%;
height: 80px;
}
<div class="pull-left">Floating content</div>

<ul>
<li>First Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
<li>Second Item</li>
<li>Third Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
</ul>

将值设置为 overflow (即 overflow: hidden )在 <ul> 上元素修复了元素符号格式 + 缩进,但不允许内容换行:

.pull-left {
background: #3333ff;
color: white;
float: left;
width: 50%;
height: 80px;
}

ul {
overflow: hidden;
}
<div class="pull-left">Floating content</div>

<ul>
<li>First Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
<li>Second Item</li>
<li>Third Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
</ul>

我能想到的唯一其他解决方案是使用嵌套 transform s 和偏移 padding让它工作:

.pull-left {
background: #3333ff;
color: white;
float: left;
width: 50%;
height: 80px;
}

ul {
padding: 0;
}

li {
list-style-position: inside;
transform: translateX(30px);
padding-right: 30px;
}
<div class="pull-left">Floating content</div>

<ul>
<li>First Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
<li>Second Item</li>
<li>Third Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
</ul>

但是,当 float 内容向右浮动时,此解决方案不起作用:

.pull-right {
background: #3333ff;
color: white;
float: right;
width: 50%;
height: 80px;
}

ul {
padding: 0;
}

li {
list-style-position: inside;
transform: translateX(30px);
padding-right: 30px;
}
<div class="pull-right">Floating content</div>

<ul>
<li>First Item
<ul>
<li>Nested Item with long enough text that it overlaps the floating content</li>
<li>Nested Item</li>
</ul>
</li>
<li>Second Item</li>
<li>Third Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
</ul>

我已经在互联网上搜索了一个灵活的解决方案,但在任何地方都找不到任何东西。难道这一套(相当合理的)限制就不是可以做到的吗?还是我遗漏了什么?

最佳答案

我认为您已经接近 transform 解决方案,但您可以将其更改为使用 text-indent 并调整每个级别的缩进。

.pull-left {
background: #3333ff;
color: white;
float: left;
width: 50%;
height: 80px;
}

ul {
padding: 0;
}

li {
list-style-position: inside;
text-indent: 10px;
padding-right: 30px;
}

ul ul>li {
text-indent: 20px;
}

ul ul ul>li {
text-indent: 30px;
}

ul ul ul ul>li {
text-indent: 40px;
}
<div class="pull-left">Floating content</div>

<ul>
<li>First Item
<ul>
<li>Nested Item</li>
<li>Nested Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
</ul>
</li>
<li>Second Item</li>
<li>Third Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
</ul>

右浮动也可以:

.pull-right {
background: #3333ff;
color: white;
float: right;
width: 50%;
height: 80px;
}

ul {
padding: 0;
}

li {
list-style-position: inside;
text-indent: 10px;
padding-right: 30px;
}

ul ul>li {
text-indent: 20px;
}

ul ul ul>li {
text-indent: 30px;
}

ul ul ul ul>li {
text-indent: 40px;
}
<div class="pull-right">Floating content</div>

<ul>
<li>First Item
<ul>
<li>Nested Item long long long long long long long long long text</li>
<li>Nested Item
<ul>
<li>Nested Item with long long long long long long long long long text</li>
<li>Nested Item</li>
</ul>
</li>
</ul>
</li>
<li>Second Item</li>
<li>Third Item
<ul>
<li>Nested Item</li>
<li>Nested Item</li>
</ul>
</li>
</ul>

关于html - 我如何设置 ul/ols 的样式以便能够灵活地环绕 float 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52508559/

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