- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
一段时间以来,我一直在减少使用,主要是为了让我的日常琐事变得更轻松一些。我今天为了好玩而少玩,并尝试做一些我以前没有做过的事情。我发现与我类似的问题只是不够准确,我无法得出总体结论。
我总共有 3 个 div,一个包含 2 个 child 的 div。我想将容器的总宽度分配给两个 child 加在一起的大小。我已经尝试了很多不同的东西,看起来它们会起作用,但由于 undefined variable 错误,它们不会起作用,无论我如何尝试传递它们。我在这里读到在 mixin 中定义的变量保持私有(private),我假设这是我的问题,但我看到其他人做了类似的事情并使其工作。
无论如何,这是我试图完成的一个视觉示例,而不是实际尝试。
.divOne {
@widthOne: 20px;
width: @widthOne;
}
.divTwo {
@widthTwo: 50px;
width: @widthTwo;
}
.containgDiv {
width: @widthOne + @widthTwo;
}
如果这里有与我直接相关的问题,我很抱歉发布这个问题;我只是找不到任何太明确的东西。谢谢!
最佳答案
您的问题与 the variable's scope 有关.您的两个变量在 .divOne
和 .divTwo
的包含 block 中定义,这使得它们在这些代码块的本地范围内。要解决这个问题,您需要使它们更具全局范围(即在要使用它们的包含 block 之外定义,但不在另一个包含 block 内定义),或者将它们在本地范围内定义为 .containgDiv
block .
请注意,在以下选项中,#3 是唯一与您的问题标题“将变量从一个 mixin 传递到另一个”直接匹配的选项。但是,提供获取变量的其他方法是为了展示可以做的事情的灵 active ,以及让人们意识到要做出的关于什么对可访问性很重要的决定。
1) 完整的全局范围
任何代码块都可以访问它。这在 LESS 中很常用。
@widthOne: 20px;
@widthTwo: 50px;
.divOne {
width: @widthOne;
}
.divTwo {
width: @widthTwo;
}
.containgDiv {
width: @widthOne + @widthTwo;
}
2) 命名空间范围(较大代码块中的“全局”)
命名空间中的任何代码块都可以直接访问它,其他代码块可以间接访问(参见#3 中的方法)。请注意,这实际上是为那些共享变量的元素创建一个大型的主混合。它使变量对其余代码隐藏。
#someNameSpaceName() {
@widthOne: 20px;
@widthTwo: 50px;
.divOne {
width: @widthOne;
}
.divTwo {
width: @widthTwo;
}
.containgDiv {
width: @widthOne + @widthTwo;
}
}
#someNameSpaceName();
3) 使用嵌套的本地访问混合设置变量
这允许您在一个代码块的本地范围内设置和使用它(并且它对所有其他代码块都是隐藏的),但仍然可以在其他范围内访问(通过代码块的命名空间和嵌套的混合)。
.divOne {
.setWidth() {
@widthOne: 20px;
}
.setWidth();
width: @widthOne;
}
.divTwo {
.setWidth() {
@widthTwo: 50px;
}
.setWidth();
width: @widthTwo;
}
.containgDiv {
.divOne > .setWidth();
.divTwo > .setWidth();
width: @widthOne + @widthTwo;
}
4) 使用全局可访问的 Mixin 为所有本地设置变量
这允许您在一个地方设置变量,并使这些变量在全局范围内隐藏,但根据需要在局部范围内使用它们。
.setWidths() {
@widthOne: 20px;
@widthTwo: 50px;
}
.divOne {
.setWidths();
width: @widthOne;
}
.divTwo {
.setWidths();
width: @widthTwo;
}
.containgDiv {
.setWidths();
width: @widthOne + @widthTwo;
}
无论使用以上哪种技术,都会输出如下CSS。
.divOne {
width: 20px;
}
.divTwo {
width: 50px;
}
.containgDiv {
width: 70px;
}
关于css - 在 LESS CSS 中将变量从一个 mixin 传递到另一个 mixin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17495692/
乐 mixins具有两个(或更多)性质,在同一个容器中组合多个值,或者值与角色一起。但是,据我所知,没有一种直接的方法可以检查不是由您创建的变量中的“混合性”。 这可能是个伎俩 my $foo = 3
我对 sass 比较陌生,但是当我学习它时,Sass 网站说要开始使用 @use 而不是 import,所以经过大量的反复试验,我终于弄清楚了如何使用它与导入相同。 注意:我使用 Prepros 进行
给定一个看起来像这样的代码片段,我如何编写一个函数来检查给定对象是否实现了某个混合?我尝试使用指针转换,但由于它们具有相同的基础,因此每个结果都是非空的,但我猜测有一个模板化的解决方案,但找不到我可以
我正在使用 Typescript 2.2 的 mixin,并且想使用另一个 mixin 的属性。 文档显示可以将 mixins 限制为仅混合到某些类中...... const WithLocation
我如何创建一个将嵌套的 mixin 属性用作参数的 mixin? 我用下一个例子来解释自己。 我有一个“过渡属性”mixin: .transition-property (@props){ -we
我浏览了language documentation而且 Google Dart 似乎不支持 mixins(接口(interface)中没有方法主体,没有多重继承,没有类似 Ruby 的模块)。我对此
我想编写返回混合的函数/混合。例如我有这个 mixin: @mixin generate-offsets-from-map($class-slug,$type,$from, $to, $step) {
所有 Less 文档和教程都使用 #namespace > .mixin()当它进入命名空间时的语法。但是我发现自己更习惯于 .namespace.mixin()语法,即: .namespace()
我正在努力实现以下目标: class A { def foo() { "foo" } } class B { def bar() { "bar" } } A.mixin B def a = n
出于本问题的目的,将“mixin”视为 https://www.typescriptlang.org/docs/handbook/mixins.html 中所述的函数。 .在这种情况下,mixin 扩
如何在 vue mixins 中组合两个函数? Vue.mixin({ methods: { functionOne: () => { console.log(1)
我需要重写 mixin 添加的一些成员函数来自第三方库。问题是:mixin 立即在多个第 3 方类定义中使用,在定义 mixin 的同一个脚本文件中。我只能在此脚本之前或之后插入自定义代码,而不能在两
我有一些基本的 mixin,它们使用媒体查询应用一些规则 .on-small(@rules) { @media (@minWidthSmall) { @rules(); } } .on-mediu
我尝试安装 npm 包。所有软件包都安装正确。 但是当我尝试使用 npm start 运行应用程序时当时发生以下错误: ERROR in ./node_modules/css-loader?{"sou
这里有两个mixin @mixin parent { .parent & { @content; } } @mixin child($child) { .#{$child} & {
我在另一个 mixins 中有一个 mixins .background(@url: @base-url , @repeat: repeat, @pos1: left, @pos2: center
我有这个: 如您所见,我目前有一个包含按钮样式混合宏的条件,无论如何我可以自动包含一个吗?例如: @mixin button($color) @include button-#{$color} 最
我有以下代码,可以很好地将各种 std::tuples 转发到我的“BaseSensor”主机类的各种 mixin。 #include // std::cout std::endl #include
我按照概述的方式组织我的 sass (scss) 文件 here ... stylesheets/ | |-- modules/ # Common modules | |
所以,这是我的第一个 mixin .3transitions (@value1,@value2,@value3,@duration){ @value: ~"@{value1},@{value2}
我是一名优秀的程序员,十分优秀!