【发布时间】:2013-04-19 06:33:37
【问题描述】:
使用以下 HTML 和 CSS3 规则,我试图确保遵守以下标准:
除了第 1 项之外,我的所有标准都有效 孩子们超过了他们父母的宽度。问题:如何让孩子留在父母身边?
- li 项不能超过其父级宽度,即 400px
- img、标签和货币内容必须在它们的范围内垂直居中
- 货币不应换行,应始终完整显示
- 货币应始终显示在尽可能靠近 标签跨度。
- 标签文本应被限制在 2 行处,并在超过 2 行的地方显示省略号。
注意:只需要在 Chrome 和 Safari 基于 webkit 的浏览器中工作。
应该是这样的:
但是,现在看起来是这样的:
有什么想法吗?
********************* JS Fiddle example *********************** *
<ul>
<li>
<span class="img"></span>
<span class="label">Acclaim</span>
<span class="currency">(USD 50)</span>
</li>
<li>
<span class="img"></span>
<span class="label">Acclaim 1 11 111 1111 11111</span>
<span class="currency">(USD 50)</span>
</li>
<li>
<span class="img"></span>
<span class="label">Acclaim 1 11 111 1111 11111 2 22222 2222 22222 3 33 333 3333 33333 4 44 444 4444 44444 5 55 555 5555 55555 6 66 666 6666 66666</span>
<span class="currency">(USD 50)</span>
</li>
</ul>
ul {
width: 400px;
background-color: yellow;
padding: 0;
margin: 0;
}
li {
display: -webkit-box;
padding-right: 50px;
}
.label {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
-webkit-line-clamp: 2;
text-overflow: ellipsis;
overflow: hidden;
white-space: normal;
word-wrap: break-word;
line-height: 1.3em;
margin-right: 0.2em;
background-color: pink;
}
.currency {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
white-space: nowrap;
background-color: lightgreen;
}
.img {
display: block;
width: 40px;
height: 40px;
margin-right: 0.1em;
background-image:url('data:image/png;base64,iVBOR...);
}
【问题讨论】:
-
这是我使用 flex 模型的另一个小提琴,但仅限于 Chrome。它仍然不适用于 Safari? jsfiddle.net/tUqvG - 然而,它有点混合了 flex 和 box 模型,因为我无法让省略号和 line-clamp 与 flex 模型一起使用。
-
Flexbox 没有替代盒子模型。这只是布局的另一种选择。
-
你不会让 line-clamp 在 Safari 中使用 box 模型或 flex 模型,因为文本溢出:省略号不适用于多行文本,你的只是 Chrome 上的幸运解决方案. :) 见quirksmode.org/css/user-interface/textoverflow.html
-
您可能会使用 :after 选择器和 content: '...' 来伪造文本溢出:省略号,但无论如何它都不会太好。
-
@DavidStorey 将此声明删除为不正确。
标签: css parent children contain