我有一个设置,我在页面上有一个无序列表x <li><a href="#">Link text</a></li>.
它们通过 CSS 设置为每个 50% 的宽度,所以我每行有 2 个项目。我的问题是一行上有 2 个链接,因为它们有不同的链接文本,所以它们的高度可能会有所不同。我的问题是;我如何通过 jQuery 在同一行上为每个设置相同的高度(a 是带有边框底部的样式,所以如果它们对齐会看起来最好)?但并非所有部分都应具有相同的高度,仅在“公关线”的基础上。
希望它有意义:)
您要实现的称为具有可变行高的网格布局。在 HTML 中做到这一点的唯一方法是 table 元素。
如果你真的想这样做,你将不得不牺牲你的标记的语义在结果之美的祭坛上。
你应该做的是创建一个两列的表,并将你以前li
元素的内容放在td
表的元素中。使用 td 的 vertical-align 属性及其样式属性来满足您的设计需求。
这是小提琴:http: //jsfiddle.net/aSJSm/1/
这是代码:
<html>
:
<ul>
<li><a href="javascript:void(0)">Item1 bla bla bla</a></li>
<li><a href="javascript:void(0)">Item2</a></li>
<li><a href="javascript:void(0)">Item3</a></li>
<li><a href="javascript:void(0)">Item4 ala bala bala</a></li>
<li><a href="javascript:void(0)">Item5</a></li>
<li><a href="javascript:void(0)">Item6</a></li>
<li><a href="javascript:void(0)">Item7</a></li>
<li><a href="javascript:void(0)">Item8</a></li>
</ul>
<css>
:
ul{
width: 200px;
float:none;
}
ul li a{
width: 50%;
float: left;
border-bottom: 1px solid black;
}
<javascript>
:
var setList = function(){
var listItems = $('ul').children();
$.each(listItems, function(index){
if (index % 2 == 0){
var leftElementHeight = $(this).children('a').height();
var rightElementHeight = $(this).next().children('a').height();
if (leftElementHeight < rightElementHeight)
$(this).children('a').css("height", rightElementHeight);
else
$(this).next().children('a').css("height", leftElementHeight);
}
});
}
setList();
确保您包含在 $(document).ready(function(){}) 中并且您拥有最新的 jquery。
如果你真的想在 jQuery 中这样做,你可以这样做:
$('li:even').each(function(){
var leftHeight = $(this).height();
var rightHeight = $(this).next().height();
var newHeight = (leftHeight <= rightHeight) ? rightHeight : leftHeight;
$(this).next().andSelf().height(newHeight);
});
JSFiddle:http: //jsfiddle.net/svenhanssen/VEnXp/
为 2 个链接设置一个 ID 或类。并使用以下方法设置高度。
$("#id").css("height", '100px');