是否可以对特定于浏览器的 CSS 使用 mixin

2024-01-19

我正在寻找一种使用 mixin 进行特定于浏览器的 CSS hack 的解决方案。 我正在使用 JavaScript 在 HTML 类中添加浏览器标签。喜欢.ie .ie7 .ie8 .ie9

我想使用 mixin 像:

.box-test {
margin: 10px;
@include browser(ie7) {
    margin: 20px;
    }
}

期望的输出:

.box-test {
margin: 10px;
}
.ie7 .box-test {
    margin: 20px;
    }

我尝试制作的mixin:

@mixin browser($browserVar) {
    @if $browserVar == ie7 {
    .ie7 { @content }
    }
    @else if $browserVar == ie8 {
    .ie8 { @content; }
         }
    @else if $browserVar == ie9 {
    .ie9 { @content; }
    }
}

问题是输出是:

.box-test {
    margin: 10px; }
.box-test .ie7 {
      margin: 20px; }

最简单的 mixin 是这样的:

@mixin legacy-ie($ver: 7) {
    .ie#{$ver} & {
        @content;
    }
}

Output:

.baz {
    background: #CCC;

    @include legacy-ie {
        background: black;
    }
}

如果您想发出同时适用于多个 IE 版本而不重复的样式,那么这将是一种方法:

$default-legacy-ie: 7 8 9 !default;

@mixin legacy-ie($versions: $default-legacy-ie) {
    $sel: ();
    @each $v in $versions {
        $sel: append($sel, unquote('.ie#{$v} &'), comma);
    }

    #{$sel} {
        @content;
    }
}

.foo {
    background: red;

    @include legacy-ie {
        background: green;
    }
}

.bar {
    background: yellow;

    @include legacy-ie(7 8) {
        background: orange;
    }
}

Output:

.foo {
  background: red;
}
.ie7 .foo, .ie8 .foo, .ie9 .foo {
  background: green;
}

.bar {
  background: yellow;
}
.ie7 .bar, .ie8 .bar {
  background: orange;
}

如果你希望能够抑制所有的 IE 混杂,你需要添加的是一个变量和一个@if block:

$enable-legacy-ie: true !default;

@mixin legacy-ie($ver: 7) {
    @if $enable-legacy-ie {
        .ie#{$ver} & {
            @content;
        }
    }
}

Set $enable-legacy-ie to false在文件顶部,如果您不想使用 IE 特定样式,请将其设置为true如果您确实想要包含样式。您可以轻松地编写一个反向 mixin 来隐藏旧 IE 无法使用的样式,以便 IE 特定文件保持良好且较小的状态。

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

是否可以对特定于浏览器的 CSS 使用 mixin 的相关文章

  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • 使用 webpack 导入目录中的所有 sass 文件

    我目前正在尝试使用 Webpack 捆绑我的所有文件 但我不知道在处理多个文件夹和 scss files 我曾经使用 grunt 来完成这些任务 这是我的文件夹结构的示例 functions mixin scss function scss
  • scss bootstrap 4 覆盖地图

    我正在尝试使用 Bootstrap 4 进行 scss 但我不知道如何正确地覆盖变量 使用映射 自定义 scss Your variable overrides primary rgb 40 167 36 spacer 1 spacers
  • 能够在 WPF 网络浏览器中支持 Html5

    我的WPF浏览器不支持网页上的html5元素 我不知道如何实现对它的支持 我确实安装了 IE9 并且可以看到使用 IE 浏览的 html5 元素 非常感谢任何关于如何添加对 html5 支持的帮助 我实际上自己找到了解决方案 一切都在这个页
  • 创建由线连接的 CSS3 圆圈

    我必须在 CSS 中实现以下圆形和线条组合 并且我正在寻找有关如何有效实现此功能的指示 圆圈和线条应如下所示 我能够这样实现圆圈 span step background ccc border radius 0 8em moz border
  • Sass 与 BEM,继承选择器

    我正在使用 Sass 3 4 1 和 BEM 所以我的 scss 是 photo of the day title font size 16px 我希望每次将鼠标悬停在 photo of the day标题发生了一些事情 这很常见 所以通常
  • Express.js“app.use()需要中间件功能”

    我正在学习 Express js 4 和 Node 但遇到了一个我无法弄清楚的错误 我正在尝试使用 node sass 包来编译我的 sass 代码 但我无法启动并运行它 这是我的主文件的精简版本 var express require e
  • JS中函数声明速度差异

    我运行了一个简单的 jsperf 测试 在 Firefox 中运行时一切都按预期进行 但当我在 Google Chrome 中运行测试时却感到困惑 该测试正在测试在 JavaScript 中声明函数然后调用它们的不同方式 我的猜测是 Chr
  • Rails 上的 SASS 无效 CSS 错误

    我正在尝试使用http startbootstrap com stylish portfolio http startbootstrap com stylish portfolio但是 在我的 Rails 应用程序中 我在 vintage
  • Sass mixin 将背景透明度恢复到 IE8

    我是 Sass 新手 并为此苦苦挣扎 我无法在两者中渲染颜色hex 对于 IE 和rgba 每一个小片段都让我感到沮丧 因为我还没有掌握语法 而且 Sass 的 Google 结果仍然很少 这是混合 mixin transparent he
  • Angular 7 CLI 生成的项目抛出“ERROR in multi ./src/styles.sass”

    我使用生成了一个新的 Angular 项目ng new dragonfly具有以下参数 角 v7 2Angular CLI v 7 3NPM 6 7 0Windows 10 我选择包含路由和 SCSS 当我尝试使用启动项目时npm star
  • 如何使用 jQuery 禁用 Firefox 对所有图像的默认拖放行为?

    Firefox 有一个恼人的行为 它默认允许用户拖放任何图像元素 如何使用 jQuery 彻底禁用此默认行为 以下将在 Firefox 3 及更高版本中执行此操作 document on dragstart function return
  • CSS3 - 性能最佳实践是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 多个应用程序中的 Angular 共享资产

    我正在开发多个小型应用程序 这些应用程序将共享公共和共享模块以及资产 关于如何创建项目结构的部分已在这里回答 https stackoverflow com a 61254557 1351452 https stackoverflow co
  • Bootstrap - 为反向行模式创建移动自适应

    我想用 Bootstrap 创建一个反向效果 第一行 左边是文字 右边是图像 第二行 左边是图片 右边是文字 第三行 左边是文字 右边是图片 第四行 左边是图片 右边是文字 而且这种情况一直持续下去 它在大型设备上看起来非常漂亮 但当它在设
  • 在 WP7 中,当页面上存在 WebBrowser 控件时,TextBox.Focus() 不起作用

    我需要将焦点设置在文本框上 问题是 当页面上存在 WebBrowser 控件时 SIP 会显示为就像选择了文本框一样 但光标在文本框中不可见 并且输入不会转到文本框 如果我注释掉 WebBrowser 控件 则行为如预期 加载页面时光标在文
  • 如何监控浏览器中发出的所有自定义事件?

    我想监视网络浏览器中触发的所有自定义事件 任何标准浏览器都可以 需要明确的是 我知道您可以附加事件处理程序来查看何时触发 通常 事件 但如何可靠地检测嵌入对象或 jQuery 脚本是否触发自定义事件 我可以重构浏览器源代码来挂钩事件循环 但
  • 关闭 选择文件对话框和 onchange 事件之间存在大量延迟。浏览器有点冻结

    有时我会遇到浏览器本机选择文件对话框的非常奇怪的行为 我有一个
  • 有什么方法可以安全地在浏览器中显示视频

    有什么方法可以安全地在浏览器中显示视频 就像他的安全措施之一 视频无法下载 谢谢 我想您的意思是您不希望您的视频被下载或复制 如果是这样 那么阻止人们下载视频或多或少是不可能的 甚至有很多工具可以从 YouTube 等大型提供商那里下载 因
  • 将全局样式表与故事书和角度结合使用 - SassError:SassError:预期“{”

    几天来 我一直在尝试将全局样式表集成到故事书中 我已经从 sass 支持文档中集成了 webpackFinal 配置 在 storybook 目录中 我创建了一个 scss loader scss 文件 该文件应该加载全局样式表 在 pre

随机推荐

  • 关于对齐存储和普通可复制/可破坏类型

    我与一个比我聪明的人进行了一次有趣的讨论 并且我仍然对对齐存储和简单可复制 可破坏类型有一个悬而未决的问题 考虑以下示例 include
  • 致命错误:内存不足,但我有足够的内存(PHP)

    由于我的问题越来越长 我决定重写整个问题 使其更好 更短 我在 8GB 内存的专用服务器上运行我的网站 我完全意识到我需要提高 php ini 设置的内存限制 我已将其从 128M 设置为 256M 然后设置为 1 但问题仍然在于坚持 致命
  • Java Pattern.matcher() 在匹配包含 \n 的行时冻结

    我遇到了一个我觉得很有趣的问题 我主要通过正则表达式对文本文件进行一些基本解析 并且在匹配此行时它总是冻结 ftrect 0 7031 57 0313 9 8561 55 5313 FREIGABE nQ09 SV01 没有抛出异常 程序只
  • mysql(几乎)完成审计

    我正在寻找一种为我的表制作简单事件日志的方法 我有几个表可以由不同的用户更改 我想跟踪 who made the change when what was before update what is the new value which
  • 将 HTTP 请求映射到 HTTP 响应

    如果我向同一服务器发出多个 HTTP Get 请求 并且每个请求都获得 HTTP 200 OK 响应 我如何使用 Wireshark 判断哪个请求映射到哪个响应 目前看起来好像发出了一个 http 请求 并且很快收到了下一个 HTTP 20
  • PDO 函数 setFetchMode

    你好 我试图用 PDO 来实现函数 但出现错误 PDO 新手 这是我的代码 function mail id mail global host dbname user pass DBH new PDO mysql host host dbn
  • 通过 Bower 安装 jQuery-Mobile

    在我的项目中 我想通过 Bower 使用 jquery mobile 在我可以使用它之前我必须运行npm install and grunt随后在bower components jquery mobile在我可以使用缩小版之前 js an
  • 解析显式数组

    我正在尝试解析来自服务器的此类响应 1 a b 2 000000 1 2 3 1 2 3 x y z 1 2 3 1 2 3 除了为这种类型的消息编写我自己的 hack ish 解析器之外 还有一种我不知道的标准方法来解释它吗 您的输入是J
  • JQuery UI,单页上多个日期选择器

    我正在为房地产创建一个 PHP 网站 我是 jQuery 和 jQuery UI 的新手 但似乎无法在其他地方找到答案 请看这个屏幕截图 全尺寸 https i stack imgur com b3yQX png 对于每个 已收到 和 到期
  • Angular UI Router:abstract:true不会显示页面

    我正在尝试使用嵌套导航来围绕 Angular UI Router 进行思考 我的应用程序有多个页面 我已经设置了 StateProvider 并且页面之间的基本路由可以正常工作 但是 我现在尝试在这些页面之一中实现选项卡式视图 我就是无法让
  • Jquery序列化和serializeArray不适用于谷歌浏览器

    我有以下 html fieldset fieldset
  • 如何在 VBA (Excel) 中获取以毫秒为单位的 DateDiff-Value?

    我需要计算两个时间戳之间的差异 以毫秒为单位 不幸的是 VBA 的 DateDiff 函数不提供这种精度 有什么解决方法吗 您可以使用描述的方法here http www tek tips com faqs cfm fid 2292如下 创
  • 如何在集群中为一个节点和所有节点运行计划方法?

    我有一个在集群中运行的 Glassfish 3 1 2 和一个 EJB 3 1 应用程序 我的应用程序中需要两种预定方 法 一种每天只运行一次 在单个节点上 以及其他在所有节点上运行的类型 每 1 2 分钟 它们不需要运行同步方式 要求只是
  • 如何递归地将项目添加到列表中?

    目前 我正在解决一个问题 我得到一个列表 其元素可能包含其他列表 列表的列表或整数 例如 我可能会收到 1 2 3 4 5 6 7 9 我的目标是解析数组并附加仅整数到一个新列表 这是我到目前为止所做的 def fun a if a ret
  • Django Admin:列表中的分组数据

    我可以在 Django Admin 中显示分组结果吗 默认情况下 它们显示所有行 我想根据某些字段对这些行进行分组并显示它 像 GROUP BY username 之类的东西 我尝试过搜索但没有成功 使用怎么样list filter my
  • IMFMediSource 不支持 IKsPropertySet 接口

    我正在将基于 Direct Show 相机的 SDK 移植到 MFT 在我的旧代码中 我有 KSProxy 接口 如 IksTopolgy IKsControl 和 IKsProperty IksTopolgy IKsControl 用于枚
  • 如何在 JavaScript 中将值从一个 html 页面传递到另一个页面?

    我知道这个问题问了很多次 但我的问题有所不同 我有 3 个 html 页面 例如apply html personal info html resume info html 在 apply html 页面中 我使用一个 LinkedIn 按
  • 从 android init.rc 执行静态程序

    我想在以下位置启动一个自定义程序init过程 我静态编译了这个程序 它可以在我启动的 android stock ROM 中正常运行 来自安卓init rc我读到的文档exec命令是我需要的 顺便说一句 我能看到的都是dmesg我的程序退出
  • 如何在Azure功能上安装apt-get包

    在 Linux 消费计划上运行 python Azure 函数 我已经能够使用 VS Code 成功将该函数部署到 Azure requirements txt 中的所有包都可以顺利安装 但现在我需要安装tesseract 它只能通过apt
  • 是否可以对特定于浏览器的 CSS 使用 mixin

    我正在寻找一种使用 mixin 进行特定于浏览器的 CSS hack 的解决方案 我正在使用 JavaScript 在 HTML 类中添加浏览器标签 喜欢 ie ie7 ie8 ie9 我想使用 mixin 像 box test margi