检查变量是否在 SASS 中定义

2024-01-11

正如标题所说,我正在尝试检查 SASS 中是否定义了变量。 (如果这有什么不同的话,我正在使用指南针)

我发现 Ruby 的等价物是:

defined? foo

在黑暗中尝试了一下,但它只是给了我错误:

defined": expected "{", was "?

我找到了一个解决方法(显然只是在所有情况下定义变量,在这种情况下它实际上更有意义)但我真的很想知道这在未来是否可能


对于 Sass 3.3 及更高版本

从 Sass 3.3 开始,有一个variable-exists()功能。从变更日志 http://sass-lang.com/documentation/file.SASS_CHANGELOG.html:

  • It is now possible to determine the existence of different Sass constructs using these new functions:
    • variable-exists($name)检查变量是否在当前范围内解析。
    • global-variable-exists($name)检查给定名称的全局变量是否存在。 ...

用法示例:

$some_variable: 5;
@if variable-exists(some_variable) {
    /* I get output to the CSS file */
}
@if variable-exists(nonexistent_variable) {
    /* But I don't */
}

对于 Sass 3.2.x 及更早版本(我原来的答案)

我今天遇到了同样的问题:尝试检查是否设置了变量,如果设置了,则添加样式、使用 mixin 等。

读完之后isset()功能不会被添加到 sass 中 https://github.com/nex3/sass/issues/47,我找到了一个简单的解决方法,使用!default http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#variable_defaults_关键词:

@mixin my_mixin() {
  // Set the variable to false only if it's not already set.
  $base-color: false !default;

  // Check the guaranteed-existing variable. If it didn't exist 
  // before calling this mixin/function/whatever, this will 
  // return false.
  @if $base-color {
     color: $base-color;
  }
}

If false是变量的有效值,您可以使用:

@mixin my_mixin() {
  $base-color: null !default;

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

检查变量是否在 SASS 中定义 的相关文章

  • Sass:@use 出错,未定义变量

    我正在使用 Sass 并且想要使用 use关键字而不是 import 因为 import有很多问题 另外只有dart sass支持这个功能 我将node sass改为dart sass 然而 问题出现了 我原来的代码 import carb
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • ||= 是什么意思? [复制]

    这个问题在这里已经有答案了 我的应用程序控制器中有一个受保护的方法 def current user current user User find by id session user id end 我想知道什么 方法 我一直在努力寻找和找
  • 回形针不支持 .doc 文件

    在 Rails 4 0 2 中 我使用回形针 gem 上传文件 但它不支持 doc 文件 在文件上传字段下方 显示一条错误消息 扩展名与其内容不匹配 在模型中 检查内容类型的验证如下 validates attachment content
  • class_eval、class_exec、module_eval 和 module_exec 之间有什么区别?

    我正在读Module文档 但似乎无法理解它们的差异以及应该在哪里使用 怎么样eval不同于exec 我将回答比你的问题更多的内容 包括instance eval exec 在你的问题中 所有变体 instance module class
  • 在 Mac OS X 10.6.8 中手动编译 Ruby 时,GEM 在哪里?

    我在 Snow Leopard 上手动构建了 Ruby 1 9 2 现在我找不到我的旧 GEM 文件了 我猜他们现在正走在不同的道路上 所以我有三个问题 什么是 旧 宝石路径 在哪里gem install sinatra把西纳特拉宝石 当我
  • 为什么我可以像调用实例方法一样调用类方法?

    我正在查看这个例子 class SQLObject def self columns return columns if columns columns DBConnection execute2 lt lt SQL first SELEC
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid
  • 升级到 Rails 6 时是否有一种编程方法可以检测 Zeitwerk::NameError?

    我目前正在将旧的 Rails 应用程序迁移到 Rails 6 好像项目中有些文件和里面定义的类不一致 运行应用程序测试时我没有看到此错误 但部署后我收到如下错误 Zeitwerk NameError expected file app my
  • ruby 2.0.0p247 的分段错误导致 Rails 服务器崩溃

    在 OS X Mavericks 1 9 上运行 Rails 4 0 Ruby 2 0 0p247 我今天遇到了一个我从未遇到过的错误 我不明白 当尝试在我的项目中启动 Rails 服务器时 服务器崩溃了 我确实尝试重新安装并重新编译一次
  • 回形针:样式取决于模型(has_many 多态图像)

    我已将模型设置为使用多态图像模型 这工作正常 但是我想知道是否可以更改每个模型的 styles 设置 找到了一些使用 STI 模型 Art has many images as gt imageable Image belongs to i
  • 如何使用 Rails 4 和 Ruby 2.0 应用程序进行实时重新加载?

    如果我在 Rails 4 Ruby 2 0 项目的文本编辑器中编辑 scss 或 erb 文件 我希望在浏览器中看到实时更改 我尝试了 Guard 和 Guard live reload 但它抛出以下错误 22 58 04 ERROR Co
  • Chef - 使用动态变量创建模板?

    我在厨师食谱上遇到了一些挑战 我是厨师新手 所以请耐心等待 第 1 步 我的厨师食谱安装 Ruby Passenger 然后与 Nginx 一起编译 Passenger nginx 模块 Install passenger and ngin
  • 使用 node-sass 监视整个目录时指定输出文件名

    目前 我可以在查看单个 SCSS 文件时使用 package json 文件中的 node sass build 命令指定文件名 sass build node sass src scss main scss dist css main m
  • HMC SHA1 哈希 - C# 生成与 Ruby 不同的哈希输出

    我正在尝试为我正在使用的第三方服务快速获取一个有缺陷的 Net 客户端库 原始库 可以运行 是用 Ruby 编写的 但 DotNet 的等效库会向 Ruby 库生成不同的哈希输出 Ruby加密代码如下 def self encrypt st
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • 通过 SO_RCVTIMEO 套接字选项在 Ruby 中设置套接字超时

    我试图通过 SO RCVTIMEO 套接字选项在 Ruby 中设置套接字超时 但它似乎对任何最近的 nix 操作系统都没有影响 使用 Ruby 的 Timeout 模块不是一个选择 因为它需要为每个超时生成和连接线程 这可能会变得昂贵 在需
  • 未知属性:user_id

    我在执行 current user stories build 期间收到错误未知属性 user id class User lt ActiveRecord Base has many stories class name Story for
  • 为 Rails 上的 postgresql 创建用户

    我选择 postgresql 作为我的 Rails 数据库 但当我尝试运行 rake db create all 时 我遇到了一个明显常见的错误 即 致命 角色 app 不存在 我找到了两种解决方案 但我不确定哪一种是正确的 有一个网站说
  • Cucumber / Savon 省略或删除日志输出

    在运行黄瓜测试时 我得到 除了测试结果之外 许多与调试 日志相关的输出 格式如下 D 2013 03 06T12 21 38 911829 49031 DEBUG SOAP request D 2013 03 06T12 21 38 911

随机推荐

  • ORDER BY 日期,过去的日期在即将到来的日期之后

    我需要对 MySql 数据库中的表执行查询 其中结果行的顺序如下所示 如果今天是 2012 年 10 月 9 日 11 09 12 12 09 12 15 09 12 08 09 12 lt here start the past date
  • 在 Swift 中初始化闭包

    我知道如何初始化一个不带参数的闭包 如下所示 class testClass var myClosure gt init myClosure 但是 我不知道如何像这样初始化闭包 var myClosure Int gt 我怎么做 简单的例子
  • 使用 jQuery 提交后清除表单

    刷新后清除此表单的最简单方法是什么 我尝试过的方法将清除表单但不会提交到数据库 其他人可以向我解释执行此操作的最佳方法吗
  • 如何制作一个简单的基于视图的 NSOutlineView?

    出于学习目的 我想将基于单元格的 NSOutlineView 转换为基于视图的 NSOutlineView 基本上我想要以下内容 我想要一个 图像和文本表格单元格视图 而不是普通的单元格 图像可以是库存 NSApplicationIcon
  • 在 ECMAScript 中检查空字符串时,为什么应该使用 string.length == 0 而不是 string == "" ?

    我当前项目中的大多数开发人员都使用一种 对我来说 奇怪的方式来检查 ECMAScript 中的空字符串 if theString length 0 string is empty 我通常会这样写 if theString string is
  • 如何屏蔽IE8及以下版本?

    我们刚刚完成 Web 应用程序的开发 我们想要阻止 Internet Explorer 8 及以下版本 实现这一目标的最佳方法是什么 我找到了一种阻止 IE6 的方法 但是教程 http css tricks com ie 6 blocke
  • 如何左对齐 pandas `to_string()` 中的列值?

    我想将 pandas 数据框保存到文件中to string 但想要左对齐列值 和to string justify left 只有列标签左对齐 例如与 pd DataFrame col1 123 1234 col2 1 444441234
  • WooCommerce:检查产品是否缺货且不允许缺货

    如何检查产品是否缺货 库存数量为 0 并且不允许延期交货 由于某种原因 以下代码不起作用 add action woocommerce before add to cart button show stock single function
  • 如何将元数据添加到 Firebase 身份验证

    我需要在使用 firebase 身份验证的 google 登录期间传递自定义值 device id 随后通过侦听身份验证事件触发器从云函数获取该值 然后将该值添加到 Firestore 据我所知 您可以将值作为 http 触发器的查询参数传
  • Microsoft Edge 中的像素化图像缩小尺寸

    我最近为我的网站制作了一个分辨率为 400x400 的徽标 在我测试过的任何其他浏览器中 它可以缩小到 40x40 但在 Edge 中表现得很奇怪 每次刷新页面时 它都会在瞬间正确呈现 然后在页面完成加载后变为丑陋的像素化外观 页面完全加载
  • 如何使用 matplotlib 自定义甘特图并在图表上显示指示当前时间的垂直线?

    这是我的 Python 代码 它基本上绘制了甘特图 import pandas as pd import random from datetime import datetime import matplotlib dates as mda
  • 使用 Swift 结构和 id 时,SwiftUI 让 ScrollViewReader 滚动

    我有几个简单的 Swift UI 屏幕 全部运行在一个结构中 该结构定义了小部件的视图 名称及其进入的顺序 我试图创建一个水平列表 其中每个按钮在按下时都会在滚动视图中居中 这就是我想做的 我遇到的问题是我无法让 ScrollViewRea
  • Mac 上的 Podman 在运行 podman machine init 时抛出错误

    使用brew安装了podman brew install podman 尝试使用启动VMpodman machine init但收到以下错误 Extracting compressed file Error cannot overwrite
  • Liferay 日志记录级别

    有没有办法设置Liferay的global日志记录级别 我知道它是服务器管理中的控制台 但我想将全局级别设置为包级别 Thanks 由于 log4j 的配置方式 任何全局设置都可以被包级别设置覆盖 您可以删除任何配置单独的包 如果有 然后设
  • 从文件上传读取 url 时图像自动旋转(当它是大图像时)?

    下面这段代码 function readURL input if input files input files 0 var reader new FileReader reader onload function e img attr s
  • ASP.Net @符号

    我正在尝试遵循 ASP Net 的一些教程 但在我的一生中 我只是不明白 当符号位于变量之前时 它会执行此操作 我认为这只是会话变量或 request form 的快捷方式 但我在几个地方尝试过 但没有任何运气 当我将它随机放在某个地方时
  • IntelliJ、Java 格式化:强制空块位于一行

    是否可以告诉 IntelliJ 在格式化 Java 文件时将空块放在一行上 我想要这个 Override public void onClickPositive int tag Object payload 自动变成这样 Override
  • 添加/删除视觉/逻辑子项时收到通知

    我目前正在寻找一种在将孩子添加到视觉或逻辑孩子中时收到通知的方法 我知道 Visual OnVisualChildrenChanged 方法 但它不适用于我 因为我不能总是继承和重写此函数 我正在寻找一个活动 那么 有没有办法在添加子项时通
  • 删除/隐藏 Total_sales WooCommerce 自定义字段

    有没有办法去除total sales显示时自定义字段the meta对于一个产品 我可以将编辑器中的条目更改为其他名称和值 但它会神奇地再次出现并且不会被删除 我会为此使用 the meta key 过滤器 您有几种选择 当然您可以将它们组
  • 检查变量是否在 SASS 中定义

    正如标题所说 我正在尝试检查 SASS 中是否定义了变量 如果这有什么不同的话 我正在使用指南针 我发现 Ruby 的等价物是 defined foo 在黑暗中尝试了一下 但它只是给了我错误 defined expected was 我找到