CSS动态类

CSS动态类,css,Css,假设我有一个flex包装容器,其属性数据列如下: <div class="grid" data-columns="2"></div> 其思想是.grid类元素的子元素的宽度为1/grid.data-columns。现在我当然可以写一堆,但我想知道是否有一种更具活力的方式来做到这一点?css真的可以从其父元素获取列数并在计算中使用它来确定宽度吗?完全不理解css真的可以从其父元素获取列数并在计算中使用它来确定宽度吗?但是如果,如何说2个孩子和你可以做的网格中的网格中的子类

假设我有一个flex包装容器,其属性数据列如下:

<div class="grid" data-columns="2"></div>

其思想是.grid类元素的子元素的宽度为1/grid.data-columns。现在我当然可以写一堆,但我想知道是否有一种更具活力的方式来做到这一点?css真的可以从其父元素获取列数并在计算中使用它来确定宽度吗?

完全不理解css真的可以从其父元素获取列数并在计算中使用它来确定宽度吗?但是如果,如何说2个孩子和你可以做的网格中的网格中的子类

.grid_child{width:calc(100% / 2);}
这将使.grid_子类的所有元素都有50%

我不明白你的问题,但我告诉你这是因为我看到了1/.grid


使用预处理器是一个不错的选择,就像有人告诉你的那样。

我完全不理解css是否可以从其父元素中提取列数,并在计算中使用它来确定宽度?但是如果你得到了,如何说2个child和类grids\u child在grid中你可以做到

.grid_child{width:calc(100% / 2);}
这将使.grid_子类的所有元素都有50%

我不明白你的问题,但我告诉你这是因为我看到了1/.grid


正如Marc在评论中所说,使用预处理器是一个不错的选择

CSS3具有attr函数,该函数可以工作,但它只能获取所选元素的属性值,而不能获取父元素的属性值

而且目前还没有支持CSS3的attr的浏览器。因此,必须使用诸如和之类的外部工具来完成

下面是一个用LESS编写的示例:

@max: 10;
.col(@index) when (@index =< @max) { // iterate
    .grid[data-columns=@{index}] > * {
        width: percentage(1 / @index);
    }
    .col((@index + 1));
}
.col(@index) when (@index > @max) {} // terminal
.col(1); // kickstart it

正如马克在评论中所说

CSS3具有attr函数,该函数可以工作,但它只能获取所选元素的属性值,而不能获取父元素的属性值

而且目前还没有支持CSS3的attr的浏览器。因此,必须使用诸如和之类的外部工具来完成

下面是一个用LESS编写的示例:

@max: 10;
.col(@index) when (@index =< @max) { // iterate
    .grid[data-columns=@{index}] > * {
        width: percentage(1 / @index);
    }
    .col((@index + 1));
}
.col(@index) when (@index > @max) {} // terminal
.col(1); // kickstart it

一个解决方案是您可以使用css预处理器为您生成它。退房我想这就是您通常要寻找的。CSS3具有attr函数,该函数可能可以工作,但它只能获取所选元素的属性值,而不能获取父元素的属性值。参考:您可以使用jQuery/JavaScriptOne来实现这一点,解决方案是您可以使用css预处理器为您生成它。退房我想这就是您通常要寻找的。CSS3具有attr函数,该函数可能可以工作,但它只能获取所选元素的属性值,而不能获取父元素的属性值。参考:您可以使用jQuery/JavaScript实现这一点