我有一个固定宽度的“搜索”容器。它有两个孩子:
我设法让它几乎正常工作,但是有一个边缘情况,当“breadcrumbs”是一定长度时,来自两个子容器的文本重叠。
下面是它应该如何看的一些例子以及它当前如何被破坏的一个例子:
这是HTML / CSS代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<style type="text/css">
.search {
border: 1px solid blue;
width: 600px;
position: relative;
}
.breadcrumbs {
border: 1px solid green;
}
.quantity {
border: 1px solid red;
position: absolute;
right: 0;
bottom: 0;
}
</style>
</head>
<body>
<b>Sample 1</b>
<div class="search">
<div class="breadcrumbs">Search Criteria: Blah Search Filter 1 > Blah Search Filter 2 > Blah Search Filter 3</div>
<div class="quantity">51-100 of 5000</div>
</div>
<b>Sample 2</b>
<div class="search">
<div class="breadcrumbs">Search Criteria: Blah Search Filter 1 > Blah Search Filter 2 > Blah Search Filter 3 > Blah Search Filter 4</div>
<div class="quantity">51-100 of 5000</div>
</div>
<b>Broken Sample</b>
<div class="search">
<div class="breadcrumbs">Search Criteria: Blah Search Filter 1 > Blah Search Filter 2 > Blah Search Filter 3 > Uh Oh!</div>
<div class="quantity">51-100 of 5000</div>
</div>
</body>
</html>
注意:如果无法完全按照要求执行操作,则下面是一个可能的选择:
感谢您的帮助。
答案 0 :(得分:2)
无需更改标记,此CSS将起作用:
.search {
border: 1px solid blue;
width: 600px;
overflow: hidden;
}
.breadcrumbs {
border: 1px solid green;
display: inline;
}
.quantity {
border: 1px solid red;
float: right;
}
http://jsfiddle.net/mC5QG/(小修改,以便您可以看到完整效果)
http://jsfiddle.net/mC5QG/2/(已将margin-top: -1px
添加到.quantity
)
将绝对定位更改为float并将第一个子元素设置为display: inline
。无论元素的宽度是多少都应该有效。
替代替代外观的替代解决方案:
.search {
border: 1px solid blue;
display: table-row;
}
.breadcrumbs, .quantity {
display: table-cell;
}
.breadcrumbs {
border: 1px solid green;
}
.quantity {
border: 1px solid red;
white-space: pre;
vertical-align: bottom;
}