将单位类型附加到 Sass 中的计算结果

2024-03-27

我最近一直在将 CSS 重构为 SASS 样式表。我正在使用Mindscape Web 工作台扩展 http://visualstudiogallery.msdn.microsoft.com/2b96d16a-c986-4501-8f97-8008f9db141a对于 VS2012,每次保存 SCSS 时都会重新生成 CSS。我从类似这样的代码开始:

/* Starting point: */
h1 { font-size: 1.5em; /* 24px ÷ 16px */ }

然后我尝试先将其重构为:

/* Recfator: */
h1 { font-size: (24px / 16px)em; }

但这不幸地产生了:

/* Result: */
h1 { font-size: 1.5 em; }              /* doesn't work, gives "1.5 em" */

注意额外的空间,我不想在那里。我尝试了几种替代方案,这里有一些:

h1 { font-size: (24/16)em; }           /* doesn't work, gives "1.5 em" */
h2 { font-size: 24 / 16em; }           /* doesn't work, gives "24/16em" */
h3 { font-size: (24px / 16px) * 1em; } /* works but "* 1 em" feels unnecessary */
h4 { font-size: (24em) / 16; }         /* works, but without "px" it's not 
                                          really conveying what I mean to say */

我还尝试了这些带有变量的变体(因为无论如何我都想要这些),但这并没有改变情况太多。为了使这个问题中的示例保持简洁,我省略了变量。但是,我很乐意接受依赖于使用变量(以干净的方式)的解决方案。

我已经经历了'/' 上的相关 SASS 文档 http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#division-and-slash,并认识到这对于 SASS 来说是一项艰巨的任务,因为“/”字符在基本 CSS 中已经具有含义。无论哪种方式,我都希望有一个干净的解决方案。我在这里错过了什么吗?

PS. 这篇博文 http://erskinelabs.com/calculating-ems-scss/确实提供了一种解决方案,使用用户定义的函数。不过,这似乎有点沉重,所以我很感兴趣是否有符合我上述尝试的“更干净”的解决方案。如果有人可以解释“函数方法”是更好的(甚至是唯一的)解决方案,那么我也会接受它作为答案。

PS. 这个相关问题 https://stackoverflow.com/q/15513395/419956似乎是同一件事,尽管人们特别想做进一步的计算。那里接受的答案 https://stackoverflow.com/a/15514279/419956是我的第三个解决方法(乘以1em),但如果我愿意放弃进行进一步计算的能力,我很想知道是否有不同的(更干净的)方法。也许上述问题(“插值”)中提到的方法对我有用?


底线:如何干净地附加单位类型(例如em) 到 SASS 中的计算结果?


将单位添加到数字的唯一方法是通过算术.

执行连接等操作(例如1 + px)或插值(例如#{1}px)只会创建一个string that looks就像一个数字。即使您绝对 100% 确定您永远不会在其他算术运算中使用您的值,您不应该这样做.

比无法执行算术运算更重要的是,您将无法将它们与需要数字的其他函数一起使用:

$foo: 1; // a number
$foo-percent: $foo + '%'; // a string

.bar {
    color: darken(blue, $foo-percent); //Error: "1%" is not a number!
}

$amount:“1%”不是“变暗”的数字

将数字转换为字符串不会获得任何好处。始终使用算术(乘以 1,或加以 0)来添加单位:

$foo: 1; // a number
$foo-percent: $foo * 1%; // still a number! //or: $foo + 0%

.bar {
    color: darken(blue, $foo-percent); //works!
}

Output:

.bar {
  color: #0000fa;
}

这是我编写的一个 mixin,作为 Flexbox mixin 库的一部分,如果你传入一个字符串,它就会阻塞(对于那些不熟悉 Flexbox 的人来说,原始规范只允许使用整数作为box-flex财产。flex: auto or flex: 30em无法与同类产品兼容box-flex属性,所以 mixin 不需要尝试)

@mixin flex($value: 0 1 auto, $wrap: $flex-wrap-required, $legacy: $flex-legacy-enabled) {
    @if $legacy and unitless(nth($value, 1)) {
        @include legacy-flex(nth($value, 1));
    }

    @include experimental(flex, $value, flex-support-common()...);
}

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

将单位类型附加到 Sass 中的计算结果 的相关文章

  • Javascript 可折叠面板默认打开

    我正在关注这个代码示例在这里找到 https www w3schools com howto howto js collapsible asp使用 css html javascript 创建可折叠面板 function toggleCol
  • 上传时自动缩小 CSS 和 Javascript

    有谁知道通过上传处理 脚本自动运行某些文件类型的好方法 当我将 CSS 和 Javascript 上传到服务器时 我试图自动缩小它们 在本地保留一个漂亮的 人类可读的版本 同时在服务器上保留一个缩小的版本 我目前在 Windows 上使用
  • 在模态上自动滚动引导模态('show')

    我有一个用于评论的引导模式 评论表格附加在评论列表的底部 我希望此模式在打开时滚动到列表底部 如果有超过 2 或 3 条评论 我已经安装了这个幻灯片插件 http jesseprice com jquery slide to plugin
  • 本机反应:“order”不是有效的样式属性

    顺序是 Flex 中一个有用的属性 我在互联网上搜索这个 概括 CSS order 属性指定用于在 Flex 容器中布置 Flex 项目的顺序 元素按顺序值的升序排列 具有相同 order 值的元素按照它们在源代码中出现的顺序排列
  • 防止文本环绕浮动图像

    我目前有一个向左浮动的图像 以及位于其右侧的一段文本 该文本块当前不是浮动的 它只是位于 HTML 中的图像之后 因此 当它变得更长时 它最终会踢到图像下方的左侧以继续 如何才能使文本块始终保持在图像的右侧 以便图像和文本的行为就像两个并排
  • 如何将 Bootstrap 3 轮播标题移动到图像下方?

    我有这个 html 使用 bootstrap 3 显示幻灯片图像 div class col sm 8 div class carousel slide ol class carousel indicators li class activ
  • 猫头鹰轮播,制作自定义导航

    所以我有一个包含三张图像的猫头鹰旋转木马 我还在左侧和右侧添加了自定义导航箭头 png 图像 然而 这些箭头目前是无用的 因为我找不到一种方法来真正让它们在我的猫头鹰旋转木马的图像之间切换 我无休止地寻找 找不到解决方案 有任何想法吗 您需
  • 如何强制ipad上出现滚动条? (移动 Safari)[重复]

    这个问题在这里已经有答案了 我无法在移动 Safari 中显示滚动条 因为当存在可滚动内容时 overflow auto 不起作用 我发现这个CSS属性 webkit overflow scrolling 触摸 正如一些人建议的那样 这是针
  • 如何允许点击穿过 div 但仍然对悬停做出反应?

    说我有divA部分重叠的divB 我怎样才能允许点击divA穿过去divB但仍然有hover悬停时触发divA 我知道pointer events none 这使得点击通过 但也阻止了悬停 我也尝试过以下方法 但它不允许点击失败 docum
  • 防止拖动不可拖动元素时出现重影?

    我正在创建一个利用 HTML5 拖放 API 的网站 但是 为了增加用户体验 我想在用户拖动不可拖动元素时防止出现重影 这可能吗 此外 几乎每个元素似乎 可拖动的 默认情况下 人们可以单击然后快速拖动浏览器中的几乎任何元素 这会创建一个重影
  • 从第三方网站为 iframe 设置 CSS

    我正在尝试设计风格snapwidget Instagram feed http snapwidget com getstarted 我想让边框变成白色 这不是小部件的设置 所以我尝试添加 css 看来我的 css 没有被检测到 因为内容位于
  • 使用 CSS3 反转进度条

    我有这个EXAMPLE http jsfiddle net Mils fmaGZ 1 我想将进度条反转 180 度 从右向左进行 要获得这样的东西 我试图改变过渡属性但没有结果 Code progress bar span display
  • iOS 中输入字段显示不同大小

    我有一个带有背景和固定宽度 高度的输入字段 它在我桌面上的所有浏览器中看起来都很好 但由于某种原因 它看起来更大iPad and iPhone 我在 CSS 中尝试了一些技巧 但到目前为止没有任何效果 width 120px importa
  • SVG 图标像素对齐?

    在此图像中 左侧 黑色 垃圾桶是图标字体 它的字体大小是 16px 这使得图标在 100 的时间里看起来都很清晰 两个蓝色垃圾桶是 SVG 它们具有完全相同的标记 其中之一happened一个是像素对齐的 另一个不是 我怎样才能强制我的 S
  • 在设置后用 Javascript 替换 'var' css 属性

    我有一个元素 其上设置了 var 属性 如下所示 div class divwithbackground div CSS divwithbackground after background image var page header se
  • 浮动标签和占位符重叠

    div class form group form default form spacing div
  • 使用 css 变换在其父对象的宽度上对对象进行动画处理

    我正在尝试使用 css 转换来转换 100 宽度包装器内元素的位置来提高动画性能 因此 它从左侧进入屏幕并从右侧退出 然后重复动画 我想我可以在这个动画中使用百分比 我发现翻译与您正在制作动画的对象相关 因此 如果您有一个 100px 宽的
  • 需要一个正则表达式将 css 类添加到第一个和最后一个列表项

    更新 谢谢大家的意见 一些附加信息 它实际上只是我正在使用的一小部分标记 20 行 目的是利用正则表达式来完成工作 我还能够修改脚本 电子商务脚本 以在构建导航时插入类 我想限制我所采用的黑客数量 以便在更新到软件的最新版本时让事情变得更容
  • 半流体布局 CSS/Html

    我有一个两列布局 其中右列的静态宽度为 350px 左列的宽度应填充页面的其余部分 或者至少这是我想要发生的事情 但不幸的是事实并非如此 看一下我的 css html http jsfiddle net CmJ7P http jsfiddl
  • 如何使用 javascript 将我的域名字母大写?

    假设我的域名是www hello com 如何使用 jQuery JavaScript 使浏览器的 URL 栏看起来像 www HELLO com 您无法更改浏览器地址栏中显示的内容 这是一项基本的安全功能 您可以使您的域名全部大写 并将页

随机推荐

  • 检测两个图像之间的像素碰撞/重叠

    我有两个 UIImageView 其中包含具有某些透明区域的图像 有什么方法可以检查两个图像之间的非透明区域是否发生碰撞 Thanks 更新 这就是我到目前为止所拥有的 不幸的是它仍然不起作用 但我不明白为什么 if CGRectInter
  • 在什么情况下会调用类型到自身的转换运算符?

    考虑一个类型bar其中具有用户定义的类型引用转换运算符bar struct bar operator bar operator const bar const 何时应用这些转换 此外 如果这些运算符是deleted 这两个功能有什么有趣的用
  • 释放宝石时 rake 释放挂起

    我正在尝试将我的第一个宝石发布到 Ruby Gems 该宝石在本地运行良好 我使用以下方式释放它 rake release 这在控制台中给了我这个 example gem 0 0 3 built to pkg example gem 0 0
  • 命名空间、argparse 和用法

    这确实是几个问题 argparse 使用名称空间而不是字典有原因吗 假设我有一个班级 init self init method args The init method参数告诉 init function 我想用哪种方式初始化类 而arg
  • 用 java 中的 Apache Tar 保存结构的目录

    我怎么能够tar一个目录并使用以下命令保留目录结构org apache commons compress图书馆 通过我在下面所做的事情 我只是得到一个所有东西都被压平的包裹 Thanks 这是我一直在尝试的方法 但它不起作用 public
  • 为什么 macOS 会杀死由 clang 创建的静态可执行文件?

    我有一个用于 m1 arm cpu 的最小 c 程序 返回 42 void start asm mov x0 42 asm mov x16 1 asm svc 0x80 此代码在告诉 clang 使用 start 符号后进行编译并返回正确的
  • 如何使用带有面部特征的 openCV 训练支持向量机(svm)分类器?

    我想使用svm分类器进行面部表情检测 我知道 opencv 有一个 svm api 但我不知道训练分类器的输入应该是什么 到目前为止我读了很多论文 他们都说在面部特征检测之后训练分类器 到目前为止我所做的 人脸检测 每帧计算16个面部点 下
  • 在 d3 中堆叠矩阵而不重新映射到 json

    The docs https github com d3 d3 shape blob master README md stacks对于d3的堆叠功能d3 stack显示一个包含对象数组的示例 每个 json 对象代表 x 轴测量的点的集合
  • FOPEN_MAX 和 _SC_OPEN_MAX

    在我的系统 Ubuntu 13 10 上 值为FOPEN MAX为 16 值为 POSIX OPEN MAX是 20 其值为 SC OPEN MAX 我已经通过了sysconf 是 4096 我知道 POSIX OPEN MAX是最小值OP
  • 如何将减少实现的序列转回惰性向量序列

    当我将 221 行 csv 文件 使用 clojure csv 解析 运行到此函数中时 defn test key inclusion Accepts csv data param and an index a second csv dat
  • iOS 上的 Cordova 状态栏黑底黑字

    我有一个 Cordova iPhone 应用程序 它使用状态栏插件 状态栏的背景设置为黑色 文本为白色 但自从将插件从版本 0 1 3 升级到 0 1 8 后 文本现在是黑色的 是否可以恢复旧的行为 或者指定文本颜色 调试信息 使用 Cor
  • 有人可以向我解释逻辑回归中成本函数和梯度下降方程之间的区别吗?

    我正在学习 Coursera 上关于逻辑回归的 ML 课程 以及 Manning 的 机器学习实践 一书 我正在尝试通过用 Python 实现所有内容来学习 我无法理解成本函数和梯度之间的区别 网上有一些例子 人们计算成本函数 但有些地方他
  • 使用导入模块时 tsconfig.js 排除属性不起作用

    我现在很抓狂 为什么我的打字稿编译 tsc 总是尝试编译node modules文件 即使我已经指定排除这个文件夹 tl dr 这是因为我有导入 但我不知道如何从编译中排除导入 我正在使用 Visual Studio Code 但直接从命令
  • C++ 中未设置布尔值的默认值? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 C bool var 默认为 true https stackoverflow com questions 2043823 why is a c bool var true by defaul
  • URL 构造函数不适用于某些字符

    我正在尝试使用 URLRequest 从我的应用程序调用 php 脚本 Url 路径在 String Variable 中生成query对于请求我将其转换为这样 guard let url URL string query else pri
  • Python/Numpy 内存错误

    基本上 当我尝试在 numpy 矩阵上执行代数运算时 我在 python 中遇到内存错误 变量u 是一个大的双精度矩阵 在失败的情况下 它是一个 288x288x156 双精度矩阵 我只在这个巨大的情况下得到这个错误 但我可以在其他大矩阵上
  • 我可以在正则表达式中使用 OR 而不捕获所包含的内容吗?

    我在用着rubular com https rubular com构建我的正则表达式 他们的文档描述了以下内容 Capture everything enclosed a b a or b 如何使用 OR 表达式而不捕获其中的内容 例如 假
  • 如何从直播视频网址获取视频缩略图(帧)

    我已将视频上传到服务器上 这是电影的预告片 我可以借助实时网址直接在我的 videoView 上播放该视频 我的问题 android 中有没有任何方法可以帮助我从 url 获取视频帧而不需要download视频到本地存储 我知道一种方法名称
  • C# Java HashMap 等效项

    从 Java 世界进入 C 世界 是否有一个 HashMap 等价物 如果不是你会推荐什么 Dictionary https learn microsoft com en us dotnet api system collections g
  • 将单位类型附加到 Sass 中的计算结果

    我最近一直在将 CSS 重构为 SASS 样式表 我正在使用Mindscape Web 工作台扩展 http visualstudiogallery msdn microsoft com 2b96d16a c986 4501 8f97 80