Home  >  Article  >  Web Front-end  >  How to Use Variables in Property Names in LESS: Dynamic Properties or Property Name Interpolation?

How to Use Variables in Property Names in LESS: Dynamic Properties or Property Name Interpolation?

Linda Hamilton
Linda HamiltonOriginal
2024-11-08 10:44:01717browse

How to Use Variables in Property Names in LESS: Dynamic Properties or Property Name Interpolation?

Using Variables in Property Names in LESS (Dynamic Properties / Property Name Interpolation)

When working with LESS, customizing CSS property names based on dynamic values can be a challenge. This question explores the limitations and workarounds for replicating a vendor-specific CSS mixin that accepts dynamic properties and values. In Sass, such a mixin would utilize property name interpolation.

Limitation in LESS:

Currently, LESS lacks built-in support for dynamic property name generation. This makes it impossible to replicate the vendor prefix mixin directly in LESS.

Workarounds:

Despite this limitation, the following workarounds offer alternative methods:

1. Inject Dynamically Generated Properties into Property Values:

Wrap dynamic properties and values into a generic property, such as "vendor," and inject them into the value of another property.

Example:

.vendors(@property, @value) {
  -inj: "~"@{property}: @{value}"";
}
.test {
  .vendors(transform, matrix(1, 0, 0, 1, 20, 20));
}

2. Inject Dynamically Generated Properties into the Name of the Following Class:

Extend the vendor mixin concept. Create multiple classes where the later classes inject vendor rules into their names.

Example:

.vendors(@property, @value, @rest: """") {
  @inject: "~"@{rest} -webkit-@{property}: @{value}; -moz-@{property}: @{value}; -ms-@{property}: @{value}; -o-@{property}: @{value}; @{property}: @{value}"";
}

.test(@nextclass) {
  .vendors(transform, "matrix(2, 0, 0, 2, 20, 20)");
  .vendors(transform-origin, "10px 10px", @inject);
  (~"{@{inject}} .@{nextclass}"): {};
}
.this-class {
  .test(next-class);
}

Upgraded Workaround for LESS v1.4.0:

@nl: `"\n\t"`;
.multi(@props, @vals, @i, @inj) {
  // extract property and value from lists
  @property: extract(@props, 1);
  @value: extract(@vals, 1);

The above is the detailed content of How to Use Variables in Property Names in LESS: Dynamic Properties or Property Name Interpolation?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn