javascript - 是否可以在不更改 HTML 的情况下像使用 CSS 表格一样对齐元素的宽度?

标签 javascript jquery html css

我整理了一个 demo当前菜单。 改变 HTML 结构是不可行的。

HTML

<ul class="menu row1">
    <li>item</li>
    <li>varied item</li>
    <li>item</li>
    <li>item</li>
</ul>
<ul class="menu row2">
    <li>longer item</li>
    <li>item</li>
    <li>longer item</li>
</ul>

CSS

.menu li {
    display: inline-block; border-right: 1px solid; 
    padding: 0 10px; margin: 0; line-height: 32px;
}
.menu {border: 1px solid; margin: 10px 10px 0;}
.menu.row2 {margin-top: 0; border-top: 0;}
.menu li, .menu {border-color: #888;}

JS

var $row0 = $('.menu.row1 > li');
var $row1 = $('.menu.row2 > li');

for (x=0; x < $row0.length; x++) {
    if (typeof $row1[x] != 'undefined') {
        var w1 = $($row0[x]).width();
        var w2 = $($row1[x]).width();
        var w3 = Math.max(w1, w2);

        $($row0[x]).add($row1[x]).width(w3);
    }
}

是否可以只用 CSS 获得与当前 JS 相同的效果?谢谢。

更新:

感谢Big00d回答这个问题。我更新了 demo .

新 CSS

.menu li {
    display: table-cell; border: 1px solid #888; 
    padding: 0 10px; margin: 0; line-height: 32px;
    border-left: 0;
}
.menu {margin: 10px 10px 0; display: table-row;}
.menu.row2 {margin-top: 0;}
.menu.row2 li {border-top: 0;}

Supported通过 IE8 及更高版本。

最佳答案

添加display:table-row;.menudisplay:table-cell.menu > li ,这应该可以解决问题

关于javascript - 是否可以在不更改 HTML 的情况下像使用 CSS 表格一样对齐元素的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14936080/

相关文章:

Javascript 空字段验证 - 无法读取未定义的属性 'value'

javascript - 使用 Ajax Get 方法将数据显示到特定元素

php - 在 php 代码中首先发送 "SetCookie"的问题

javascript - 在导出中定义路由与在其之上定义路由 Node.js

javascript - 如何从 Mathquill Matheditor 输出为 LaTeX?

jquery - Bootstrap 数据表样式

php-jquery 自动完成数据库中的文本框

php - 使用 PHP-PDO->Prepare Statement 将 HTML 代码插入 MySQL 数据库

jquery - 为什么在 <li> 中具有相同高度和行高的 <a> 在 Safari 中看起来比在其他浏览器中更高,尽管使用了重置?

javascript - 在 html 页面上显示大图像后,如何获取大图像的宽度和高度?