1

I would like to use logic in my CSS. Styles need to be applied only if a product ID is higher than a specific number, e.g:

if (data-product-id > 25) {
  padding: 50px;
}

Is this possible with CSS?

2 Answers2

0

No, it isn't. Attribute selectors are based on simple string matching. There is no provision for less than / greater than numerical comparisons.

The closest you could get with CSS itself would be something like:

[data-product-id="25"],
[data-product-id="26"],
[data-product-id="27"],
/* etc */

This sort of thing is better handled with JS or server-side code which adds classes to elements.

Quentin
  • 914,110
  • 126
  • 1,211
  • 1,335
0

You can apply some limited logic of the like you were asking about in CSS, but I advise against it. Nevertheless, the answer below is an answer, it's better to implement your logic in Javascript.

Assuming that you have a class called data-product for all your data products, you can create this rule:

.data-product {
    padding: 50px;
}

.data-product[data-product-id="1"],
.data-product[data-product-id="2"],
.data-product[data-product-id="3"],
.data-product[data-product-id="4"],
.data-product[data-product-id="5"],
.data-product[data-product-id="6"],
.data-product[data-product-id="7"],
.data-product[data-product-id="8"],
.data-product[data-product-id="9"],
.data-product[data-product-id="10"],
.data-product[data-product-id="11"],
.data-product[data-product-id="12"],
.data-product[data-product-id="13"],
.data-product[data-product-id="14"],
.data-product[data-product-id="15"],
.data-product[data-product-id="16"],
.data-product[data-product-id="17"],
.data-product[data-product-id="18"],
.data-product[data-product-id="19"],
.data-product[data-product-id="20"],
.data-product[data-product-id="21"],
.data-product[data-product-id="22"],
.data-product[data-product-id="23"],
.data-product[data-product-id="24"],
.data-product[data-product-id="25"] {
    padding: 25px;
}
Lajos Arpad
  • 64,414
  • 37
  • 100
  • 175