首页 > web前端 > css教程 > 如何在 LESS 中使用属性名称中的变量:动态属性或属性名称插值?

如何在 LESS 中使用属性名称中的变量:动态属性或属性名称插值?

Linda Hamilton
发布: 2024-11-08 10:44:01
原创
755 人浏览过

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

在 LESS 中的属性名称中使用变量(动态属性/属性名称插值)

使用 LESS 时,根据动态值自定义 CSS 属性名称可能是一个挑战。此问题探讨了复制接受动态属性和值的特定于供应商的 CSS mixin 的限制和解决方法。在 Sass 中,这样的 mixin 将利用属性名称插值。

LESS 中的限制:

目前,LESS 缺乏对动态属性名称生成的内置支持。这使得无法直接在 LESS 中复制供应商前缀 mixin。

解决方法:

尽管有此限制,以下解决方法提供了替代方法:

1.将动态生成的属性注入到属性值中:

将动态属性和值包装到通用属性(例如“供应商”)中,并将它们注入到另一个属性的值中。

示例:

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

2.将动态生成的属性注入以下类的名称中:

扩展供应商混合概念。创建多个类,其中后面的类将供应商规则注入其名称中。

示例:

.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);
}
登录后复制

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);
登录后复制

以上是如何在 LESS 中使用属性名称中的变量:动态属性或属性名称插值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板