LESS CSS 使用不同的前缀转义整个 CSS 规则?

2023-12-12

我如何避免以下情况:

.prefix(@rule, @prop) {
  -webkit-@{rule}: @{prop};
  -moz-@{rule}: @{prop};
  -o-@{rule}: @{prop};
  -ms-@{rule}: @{prop};
  @{rule}: @{prop};
}

我尝试了很多不同的方法,将其包装在~"stuff",将变量包装在@{var},反斜杠-的……没有成功!

Edit:Github 上有一个 pull req:https://github.com/cloudhead/less.js/pull/698


LESS 1.6+ 更新

你原来的计划几乎可以用LESS 1.6 更新。这是所需的语法:

LESS

.prefix(@rule, @prop) {
  -webkit-@{rule}: @prop;
  -moz-@{rule}: @prop;
  -o-@{rule}: @prop;
  -ms-@{rule}: @prop;
  @{rule}: @prop;
}

.test {
  .prefix(box-sizing, border-box);
}

CSS 输出

.test {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -o-box-sizing: border-box;
  -ms-box-sizing: border-box;
  box-sizing: border-box;
}

尽管如此我关于属性值的其他预处理的原始答案仍然有效。

原始答案(1.6 之前)

LESS 不允许动态属性(是的,我相信 SASS 允许)。

However,这并不完全是一件坏事模式匹配需要用于 LESS,因为它迫使人们思考差异这可能是模式匹配所需要的,并在代码中适应这些差异。

以下面为例。它需要两个变量,并且(目前)允许另外两个变量(此处为带有背景图像的渐变)。如果需要的话,它可以扩展以允许更多额外的变量。

请注意每个嵌套 mixin 如何期望将不同类型的事物传递给第二个及后面的变量,并且每个嵌套 mixin 都可以以不同的方式预处理这些变量。下面的例子允许opacity作为十进制值或数字整数传递(尽管值1将假定十进制值为1.0(即 100%)不0.01。它允许padding in the box-sizing属性,但会针对非 Mozilla 浏览器(其中根据此页面,其他浏览器不支持)。因此,您可以看到,“思考”每个属性可能需要什么是有益的,因此必须为每个属性设置不同的模式匹配 mixins 可能很有价值。

LESS

.prefix(@prop, @v1, @v2:~'', @v3:~'') {
  .prop(opacity) {
    @decValue: `(@{v1} > 1 ? @{v1}/100 : @{v1})`;
    @intValue: `(@{v1} <= 1 ? @{v1}*100 : @{v1})`;
    filter: alpha(opacity=@intValue);
    -webkit-opacity: @decValue;
    -moz-opacity: @decValue;
    opacity: @decValue;
  }
  .prop(boxSize) {
    @filteredSupport: ~`("@{v1}" == "padding" ? "border" : "@{v1}")`;
    -webkit-box-sizing: (~"@{filteredSupport}-box");
    -moz-box-sizing: (~"@{v1}-box"); 
    box-sizing: (~"@{filteredSupport}-box");
  }
  .prop(bkgGradient) {
    .filterFirstTwoArgs(@type, @color, @gradient) {
      background-color: @color; 
      background-image: ~"-webkit-@{type}-gradient(@{gradient})";
      background-image: ~"   -moz-@{type}-gradient(@{gradient})";
      background-image: ~"    -ms-@{type}-gradient(@{gradient})";
      background-image: ~"     -o-@{type}-gradient(@{gradient})";
      background-image: ~"        @{type}-gradient(@{gradient})";
    }
    .filterFirstTwoArgs(@v1, @v2, @v3);
  }
  .prop(@prop);
}

Use it:

.myClass {
  .prefix(opacity, 10);
  .prefix(boxSize, padding);
  .prefix(bkgGradient, linear, #F07575, "top, hsl(0, 80%, 70%), #bada55"); 
}

CSS 输出

.myClass {
  filter: alpha(opacity=10);
  -webkit-opacity: 0.1;
  -moz-opacity: 0.1;
  opacity: 0.1;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: padding-box;
  box-sizing: border-box;
  background-color: #f07575;
  background-image: -webkit-linear-gradient(top, hsl(0, 80%, 70%), #bada55);
  background-image:    -moz-linear-gradient(top, hsl(0, 80%, 70%), #bada55);
  background-image:     -ms-linear-gradient(top, hsl(0, 80%, 70%), #bada55);
  background-image:      -o-linear-gradient(top, hsl(0, 80%, 70%), #bada55);
  background-image:         linear-gradient(top, hsl(0, 80%, 70%), #bada55);
}

梯度输出示例取自示例在这里找到.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LESS CSS 使用不同的前缀转义整个 CSS 规则? 的相关文章

  • 单击导航项锚链接时如何关闭切换菜单

    请看我的FIDDLE http jsfiddle net ayhpp8ax 我有一个带有 响应式 导航菜单 带有指向页面上元素的锚链接 的 1 页网站 当浏览器视口小于特定宽度 在我的情况下为 767px 时 使用此 javascript
  • 如何在其他div id的悬停中使用div显示块

    如何打开div悬停时标记href tag 这是我在悬停 href 标签上显示 div 标签的代码 Services is id of href tag Services is id of div tag Service hover Serv
  • 如何在Yii框架中向Form添加类?

    我在 Yii 中有一个表单 我想向该表单添加一个类
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • 如何在模态打开时防止主体滚动

    我在用着W3schools 模态脚本 https www w3schools com howto tryit asp filename tryhow css modal我想添加一个功能 防止模型打开时整个主体滚动 我根据我的需要对原始脚本做
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • jQuery 生成 div 和碰撞检测

    所以我的学校作业项目快要结束了 我只是错过了两件我似乎无法弄清楚的主要事情 1 如何生成具有随机位置的间隙的管道障碍物 以便鸟可以飞过 尝试使用一个函数来更改间隙位置的管道 div 的 css right attr 并在以下情况下移除管道它
  • 使用反增量更改 z-index

    我尝试制作一个图像滑块 当鼠标悬停在一个点上时 它将显示图片 我也尝试使用在图像之间切换z index但什么也没动 slider counter reset index 1000 slider input name slide switch
  • 引导导航栏菜单与文本重叠

    我使用最新版本的引导程序 当我调整屏幕浏览器的大小时 使用小切换按钮下拉导航栏时 导航栏会重叠页面上的文本 而不是向下推页面内容 我已经多次研究过这个问题 我尝试将 padding bottom 放在导航栏上 将 padding top 放
  • 在 React 中切换 css 类

    如何使用布尔值切换 React 中元素上 css 类的存在 在 Angular 2 中我可以这样做 class red isRed 如何在 React 中做熟悉的事情 在 React 中 元素使用如下语法获取它们的类 div div 但请注
  • 当共享相同的行和列时,将网格项设置为不重叠

    现在 当两个网格项共享相同的行和列时 它们会相互重叠 div class some grid container div Item 1 div div Item 2 div div 我如何让它们不重叠 当共享相同的行和列时 其行为可能类似于
  • 先按行再按列布局 div

    我有一个容器div and 3 div里面如下 div div 1 div div 2 div div 3 div div 不知道每一个的内容div内部 但它们的高度和宽度是可变的 集装箱的高度由最高的决定div inside 我想展示这些
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 将图像作为框架放置在 iframe 周围?

    我有一个网站尝试以移动格式显示 但在宽屏幕上 我确信 iframe 是正确的选择 我正在尝试将 iframe 加载到 iPhone 的图像中 你可以看一个例子here http webfro gs south tour iframe tes
  • Angular - CSS - 自定义类型=文件输入,如何使用按钮而不是标签?

    我制作了一个类型为 file 的自定义输入字段 因为我不喜欢默认的输入字段 为了实现这一目标 我做了
  • 为什么 IE8 在我的图像锚标记上添加底部边框?

    我知道 这很可悲 但今天早上 IT 刚刚在我的机器上安装了 IE8 我立刻遇到了一个明显的问题 尽管我知道答案就在我面前 但我已经把它搞砸了太久了 首先 这是网站 www mchenry edu http www mchenry edu 在
  • CSS 类命名约定

    在网页上 有两个控件块 主要和次要 大多数人会使用什么类名 选择一 div class primary controls div
  • 表格行未扩展到全宽

    我有一个表格 当我将表格的宽度设置为 100 并将表格行的宽度设置为 100 时 没有任何反应或宽度发生变化 Table Normal position relative display block margin 10px auto pad

随机推荐

  • 当锁持有非最终对象时,该对象的引用是否仍然可以被另一个线程更改?

    当一个对象需要同步时 如果它没有设置为非最终的 IDE 会抱怨 因为它的引用不是持久的 private static Object myTable synchronized myTable IDE complains access myTa
  • 使用 GDB Python API 从符号名称获取全局符号的地址

    如果我知道 GDB Python API 的名称 是否可以通过某种方式获取二进制文件中全局符号的地址 Is python print gdb parse and eval symbol address 获得这个值的正确方法是什么 好吧 你自
  • 使用ajax自动完成

    也许你可以帮助解决一些ajax问题 我有自动完成代码 我输入城市名称 代码会自动为我完成它 并且还获取城市 ID 并应该将其放入隐藏输入字段 名称 cityID 但它没有 不要那样做 你能告诉我为什么吗 html代码 p p
  • 将字符连接到字符串数组时获取“null”

    public static void main String args char charArr a b c d e f g h i String stringA charToString charArr for int i 0 i lt
  • 如何在我的连接类中使用“using”

    我想使用 using forSqlConnection在我的代码中是这样的 using SqlConnection Con new SqlConnection 但我用过dictionary对于一个内的多个连接Connections班级 这是
  • 自定义 Finder“获取信息”窗口?

    操作系统 在查找器中 如果您选择 获取信息 您会看到一个 属性窗口 引用当前选定的文件 文件夹 卷 默认情况下 该窗口包含 聚光灯评论 一般的 更多信息 名称和扩展名 预览 共享与权限 有人知道是否可以向该窗口添加分段吗 比如说我想添加一个
  • 比较两个相同大小的位图以确定它们是否相同的最快方法是什么?

    我正在尝试编写一个函数来确定两个相同大小的位图是否相同 我现在拥有的函数只是一次比较每个位图中的一个像素 在第一个不相等的像素处返回 false 虽然这很有效 并且适用于小位图 但在生产中我将在紧密循环中和更大的图像上使用它 所以我需要一种
  • 从 Java 字符串中删除行尾字符

    我有这样的字符串 hello java book 我要删除 r and n from String hello r njava r nbook 我想要的结果是 hellojavabook 我怎样才能做到这一点 带replaceAll 的正则
  • 在 listView 内的 listItem 内的 textView 上使用 setSelected

    我试图让滚动文本 选取框 发生在列表视图中 但从我之前的阅读来看 我似乎需要在文本视图上使用 setSelected true 因为textview位于listitem而不是listview内部 所以我似乎无法在该textView上使用ge
  • R 记录链接标识

    我正在 R 中使用 RecordLinkage 库 我有一个包含 id 姓名 电话 邮件的数据框 我的代码如下所示 ids data id pairs compare dedup data identity ids blockfld as
  • 当我发布 Web 应用程序时,我对隐藏代码所做的更改未更新

    我有一个在 VS2010 中构建的 ASP net 在 iis7 中运行 但是当我返回 VS 并更新文件后面的代码并重新发布该应用程序时 该应用程序的行为仍然与我进行更改之前一样 我已尝试删除并重新发布所有文件并重新启动应用程序池 但它仍然
  • Python TCP socket.recv() 一旦建立连接就什么也不返回

    我正在尝试实现最基本的 python TCP 服务器 Windows 8 Python 2 7 防火墙已关闭 代码来自这里 https wiki python org moin TcpCommunication 如果我做客户的事情 sock
  • 如何在 Chrome 中配置工作区?

    我正在尝试为我的本地项目激活工作区工具 当我在浏览器中编辑代码时 我想对代码应用 CSS 更改 我已将项目的文件夹 前缀 url 和路径添加到 Chrome 如下所示 但是当我将其更改为浏览器时 我的代码仍然没有任何变化 这是怎么回事 以下
  • NSURLSession/NSURLConnection HTTP 加载在子域上失败(kCFStreamErrorDomainSSL,-9802)?

    我们的应用程序在生产和开发环境中都运行良好 但在临时环境中我们遇到常见错误 NSURLSession NSURLConnection HTTP load failed kCFStreamErrorDomainSSL 9802 据我了解 当您
  • 返回按钮非常慢

    我有一个 Android 应用程序 其中 TabActivity 包含 4 个选项卡 一个列表视图 一个地图视图 另一个列表和一个 Web 视图 从列表视图中 我可以点击一个项目 它会启动另一个活动 按 返回 返回到选项卡活动 但是 访问地
  • 在 Android 上安装 Pocketsphinx

    我对在 Android 手机上安装 Pocketsphinx 有一些疑问 并且我无法在 CMUSphinx 的支持论坛 IRC 现有的 StackOverflow 帖子或大量的 Google 搜索上找到答案 如果这里有人愿意花一分钟时间并愿
  • 使用 Web API 时没有结果

    我正在尝试使用 PHP 从美国邮政服务 USPS 费率计算器中提取 XML 页面 这是我正在使用的代码 当然替换了我的 API 登录名和密码
  • 垂直自动滚动文本视图

    我只是想设置一个简单的 TextView 包裹在 ScrollView 中 它将自动向下滚动显示 TextView 的内容 就像电影显示片尾字幕一样 我不希望用户必须与滚动条交互 屏幕上没有我正在使用的按钮或其他布局 因此制作人员名单填满了
  • 尝试将文件上传到 CKAN 时出错:“无法获取存储上传凭据。上传无法继续”

    当尝试将文件上传到 CKAN 中的数据集时 我在 Web 界面中收到此错误 Failed to get credentials for storage upload Upload cannot proceed 此错误通常是由于 CKAN 的
  • LESS CSS 使用不同的前缀转义整个 CSS 规则?

    我如何避免以下情况 prefix rule prop webkit rule prop moz rule prop o rule prop ms rule prop rule prop 我尝试了很多不同的方法 将其包装在 stuff 将变量