我需要一些帮助来了解如何解决这个问题。我有多个列表元素,每个元素都有未知长度的文本。在本文的每一侧,都会有一个小图像/图标。以下是HTML的示例:
.truncate>img {
width: 25px;
height: 25px;
}
.truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
<div class="container-fluid">
<div class="row">
<div class="col-sm-4">
Content
</div>
<div class="col-sm-4">
<ul id="myList" class="list-group">
<li class="list-group-item" value="">
<div class="truncate">
<img src="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Close_Box_Red.png">A long text string that is about this length
<img src="http://www.clker.com/cliparts/1/5/4/b/11949892282132520602led_circle_green.svg.med.png">
</div>
</li>
<li class="list-group-item" value="">
<div class="truncate">
<img src="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Close_Box_Red.png">A long text string that is about this length
<img src="http://www.clker.com/cliparts/1/5/4/b/11949892282132520602led_circle_green.svg.med.png">
</div>
</li>
<li class="list-group-item" value="">
<div class="truncate">
<img src="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Close_Box_Red.png">A long text string that is about this length
<img src="http://www.clker.com/cliparts/1/5/4/b/11949892282132520602led_circle_green.svg.med.png">
</div>
</li>
</ul>
</div>
<div class="col-sm-4">
Content
</div>
</div>
</div>
如果文本长于可用宽度,我希望文本末尾有省略号。我知道如何使用文本溢出:省略号,我可以让文本有一个省略号,但只有在正确的图像下降到文本下方之后。
我尝试过的一些事情:
我尝试在div中使用包围整个li元素 display:inline-block
同样,我试过只围绕图像标签和文本 带有内联块的单个div,它最接近所需的结果。
我尝试将文本放在span元素和各种CSS样式中。
每次正确的图像仍然跳到文本下方。
期望的结果:
实际结果:
如果我应该包含任何其他信息,请告诉我。提前感谢任何建议。
答案 0 :(得分:1)
一个技巧可能是左右手动定位图像,然后将文本放在一个绝对定位的div中:
.left { position: absolute;
left: 0px;
}
.right { position: absolute;
right: 0px;
}
.text { position: absolute;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
left: 24px;
right: 24px;
}
.container { display: inline-block;
width: 100%;
position: relative;
height: 24px;
}
&#13;
<ul>
<li>
<div class="container">
<img class="left" src="http://raksy.dyndns.org/cross.png">
<div class="text">
This is a text
</div>
<img class="right" src="http://raksy.dyndns.org/disc.png">
</div>
</li>
<li>
<div class="container">
<img class="left" src="http://raksy.dyndns.org/cross.png">
<div class="text">
This is a much longer text that most probably will have to be truncated
</div>
<img class="right" src="http://raksy.dyndns.org/disc.png">
</div>
</li>
<li>
<div class="container">
<img class="left" src="http://raksy.dyndns.org/cross.png">
<div class="text">
This is a text (somewhat longer but not huge)
</div>
<img class="right" src="http://raksy.dyndns.org/disc.png">
</div>
</li>
</ul>
&#13;
答案 1 :(得分:0)
我尝试使用div包装器,包括display: inline-block
,并且效果很好:
http://jsfiddle.net/nozimica/y3oy723v/
关键是:
display: inline-block;
答案 2 :(得分:0)
可能不是100%你想要什么,但可能会让你完成其余的工作: Fiddle
.truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
width: 50%;
}
.list-group-item{
background-color:transparent;
border:none;
padding:0px 15px;
cursor: pointer;
white-space: nowrap;
}
答案 3 :(得分:0)
漂浮工作,绝对定位也是如此:
.truncate>img {
width: 25px;
height: 25px;
position: absolute;
left: 8px;
}
.truncate img:first-child {
right: 8px;
left: auto;
}
.truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 0 30px;
}
<li class="list-group-item" value="">
<div class="truncate">
<img src="...">
<img src="..."> A long text string that is about this length
</div>
</li>
<强> Demo 强>