html - 如何在 CSS 中使用不同于 'content' 的属性的数据属性

标签 html css

我有以下 HTML 代码:

<ul data-links="6">
    <li><a href="settings/_users.php">Users</a></li>
    <li><a href="settings/_flows.php">Flows</a></li>
    <li><a href="settings/_file_syncing.php">File syncing</a></li>
    <li><a href="settings/_profile.php">Profile</a></li>
    <li><a href="settings/_billings.php">Billings</a></li>
    <li><a href="settings/_notifications.php">Notifications</a></li>
</ul>

和 CSS 的简化版本:

ul { 
    width: 600px; 
    height: 100px;
    list-style: none;
    padding: 0; margin: 0;
    border: 1px solid #000;
}

li {
    float: left;
    width: calc(600px / 6); /* yes, it gives 100px */
    height: 100px;
}
li:nth-child(2n) {
    background: rgba(0,0,0,0.25);
}

这是demo

根据用户的角色,我仅显示 <li> 中的一些此列表中的元素,因此并不总是其中 6 个。我可以显示“数据链接”属性以及向用户显示的列表元素的实际数量。 不管怎样,问题是我想让它变得灵活,这就是我使用 calc() 的原因。用于设置<li>宽度。所以你可能已经知道我想要什么:我不想显示数字,而是想做这样的事情:

width: calc(600px / attr(data-links));

是的,我知道这是错误的,因为如果我曾经想使用 attr()在 CSS 中,它将从这个特定元素获取此属性,而不是像上面的示例那样从父元素获取。不过,我只是想向您展示我想要实现的目标。显然我可以有data-links每个 <li> 上的属性元素而不是 <ul>但这显然是不太干净的解决方案(顺便说一句,也不起作用)

最佳答案

好吧,您甚至不必使用 calc(); 与我的以下方法,请参阅更新的 DEMO HERE

ul {
    width: 600px;
    height: 100px;
    list-style: none;
    padding: 0;
    margin: 0;
    border: 1px solid #000;
    display: table;
    table-layout: fixed;
    /* this ensure equal width */
}
ul > li {
    display: table-cell;
    border: 1px dashed red;
    text-align: center
}

关于html - 如何在 CSS 中使用不同于 'content' 的属性的数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23707721/

相关文章:

css - 属性形状不存在?

jquery - 如何给滚动条,高度自动完成显示列表?

javascript - 打开弹出窗口时在 Javascript 中使用媒体查询

javascript - Accordion jQuery - 一次打开一个元素并关闭其他元素

html - 为什么使用 translateY 使 div 居中可以在桌面浏览器上工作,而不能在 iOS Safari 上工作?

HTML Canvas 并将数据保存在服务器上

jquery - 使用jquery在排序中隐藏所有内容

从溢出 :hidden 过渡时的 iOS Safari 渲染错误

php - 从查询中得不到结果

html - 显示无不适用于 Angular 导航栏(但适用于其他组件)