根据不同高度的LI调整LI的高度
Adjust height of LI depending on LI of different height
我正在创建内联 LI,希望它们的高度相似。这里的问题是,当我的一个 LI 有一个长文本时,这个 LI 将具有更大的高度而其他的不调整。 (我正在使用 bootstrap 创建我的行)
http://jsfiddle.net/q5stk2yp/(实例)
和HTML代码:
<div class="col-md-12 col-sm-12 col-xs-12 table-custom">
<ul style="border:1px solid" class="row table-row">
<li style="width:200px" class="table-cell">title 1</li>
<li style="width:20%" class="table-cell">Name with very long description to create multiple lines and show what I would like to to.</li>
<li class="table-cell">title 3</li>
<li class="table-cell">title 4</li>
</ul>
<ul style="border:1px solid" class="row table-row">
<li class="table-cell">test 1</li>
<li class="table-cell">test 2</li>
<li class="table-cell">test 3</li>
<li class="table-cell">test 4</li>
</ul>
</div>
一种方法是使用 jQuery。
这是 jsfiddle:http://jsfiddle.net/oe4g2etw/6/
这是您需要的 JS 代码:
// During the first load...
// Find the max height of the elements...
var maxHeight = Math.max.apply(null, $(".table-custom li").map(function (){
return $(this).height();
}).get());
// And set all the list elements to that max height
$(".table-custom li").css('height', maxHeight);
如果您还想让它响应,您需要添加一个侦听器来检查 window 宽度变化,然后重新计算最高元素的高度并将其设置为所有列表项:
// When the window is resized...
$( window ).resize(function() {
// Remove the 'height' attribute...
$(".table-custom li").css("height", "");
// Find the max height of the elements...
var maxHeight = Math.max.apply(null, $(".table-custom li").map(function (){
return $(this).height();
}).get());
// And set it to all the elements
$(".table-custom li").css('height', maxHeight);
});
希望对您有所帮助!
PS:如果您还没有在 <head>
中添加 jQuery,请不要忘记添加。
您可以使用 display: table-cell
.
使元素与其最高兄弟姐妹的身高相匹配
这应该适用于 IE8+ 和所有其他浏览器:
.table-custom {
min-width: 200px;
}
.table-row {
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
.table-custom > ul > li {
text-align: left;
padding: 0px;
padding-left: 5px;
padding-top: 8px;
padding-bottom: 7px;
display: table-cell;
border: 1px solid #f00;
margin-bottom: 0px;
}
<div class="col-md-12 col-sm-12 col-xs-12 table-custom">
<ul style="border:1px solid" class="row table-row">
<li style="width:200px" class="table-cell">title 1</li>
<li style="width:20%" class="table-cell">Name with very long description to create multiple lines and show what I would like to to.</li>
<li class="table-cell">title 3</li>
<li class="table-cell">title 4</li>
</ul>
<ul style="border:1px solid" class="row table-row">
<li class="table-cell">test 1</li>
<li class="table-cell">test 2</li>
<li class="table-cell">test 3</li>
<li class="table-cell">test 4</li>
</ul>
</div>
我正在创建内联 LI,希望它们的高度相似。这里的问题是,当我的一个 LI 有一个长文本时,这个 LI 将具有更大的高度而其他的不调整。 (我正在使用 bootstrap 创建我的行)
http://jsfiddle.net/q5stk2yp/(实例)
和HTML代码:
<div class="col-md-12 col-sm-12 col-xs-12 table-custom">
<ul style="border:1px solid" class="row table-row">
<li style="width:200px" class="table-cell">title 1</li>
<li style="width:20%" class="table-cell">Name with very long description to create multiple lines and show what I would like to to.</li>
<li class="table-cell">title 3</li>
<li class="table-cell">title 4</li>
</ul>
<ul style="border:1px solid" class="row table-row">
<li class="table-cell">test 1</li>
<li class="table-cell">test 2</li>
<li class="table-cell">test 3</li>
<li class="table-cell">test 4</li>
</ul>
</div>
一种方法是使用 jQuery。
这是 jsfiddle:http://jsfiddle.net/oe4g2etw/6/
这是您需要的 JS 代码:
// During the first load...
// Find the max height of the elements...
var maxHeight = Math.max.apply(null, $(".table-custom li").map(function (){
return $(this).height();
}).get());
// And set all the list elements to that max height
$(".table-custom li").css('height', maxHeight);
如果您还想让它响应,您需要添加一个侦听器来检查 window 宽度变化,然后重新计算最高元素的高度并将其设置为所有列表项:
// When the window is resized...
$( window ).resize(function() {
// Remove the 'height' attribute...
$(".table-custom li").css("height", "");
// Find the max height of the elements...
var maxHeight = Math.max.apply(null, $(".table-custom li").map(function (){
return $(this).height();
}).get());
// And set it to all the elements
$(".table-custom li").css('height', maxHeight);
});
希望对您有所帮助!
PS:如果您还没有在 <head>
中添加 jQuery,请不要忘记添加。
您可以使用 display: table-cell
.
这应该适用于 IE8+ 和所有其他浏览器:
.table-custom {
min-width: 200px;
}
.table-row {
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
.table-custom > ul > li {
text-align: left;
padding: 0px;
padding-left: 5px;
padding-top: 8px;
padding-bottom: 7px;
display: table-cell;
border: 1px solid #f00;
margin-bottom: 0px;
}
<div class="col-md-12 col-sm-12 col-xs-12 table-custom">
<ul style="border:1px solid" class="row table-row">
<li style="width:200px" class="table-cell">title 1</li>
<li style="width:20%" class="table-cell">Name with very long description to create multiple lines and show what I would like to to.</li>
<li class="table-cell">title 3</li>
<li class="table-cell">title 4</li>
</ul>
<ul style="border:1px solid" class="row table-row">
<li class="table-cell">test 1</li>
<li class="table-cell">test 2</li>
<li class="table-cell">test 3</li>
<li class="table-cell">test 4</li>
</ul>
</div>