- 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"
我正在尝试为 border-radius 编写一个 mixin,而不是仅在变量设置的值 >= 0 时才输出。我将变量中的基值设置为 3px,所以如果我输入 -1 或不输入例如,border-radius mixin 不会在最终样式表中创建任何属性。如果我想在每个 Angular 落都具有相同的值(value),我可以让它发挥作用。但是如果我想使用速记,即 3px 3px 0 0,我无法锻炼如何让它工作。我认为这是一个问题,在这两种情况下 3px 被变量和 0 改变。我现在的代码是
.border-radius(@r) when not (@r = no), (@r = 0) {
-webkit-border-radius: @r;
-moz-border-radius: @r;
border-radius: @r;
}
.border-radius(@r) when (@r = no), (@r = 0) {}
@baseBorderRadius: 3px;
.class1 { .border-radius(@baseBorderRadius); }
// This outputs fine: 3px 3px 3px 3px
.class2 { .border-radius(@baseBorderRadius @baseBorderRadius 0 0); }
// This outputs fine 3px 3px 0 0
@baseBorderRadius: no; // If I change the variable to try and disable/not run the mixin
.class1 { .border-radius(@baseBorderRadius); }
// This does what I want and doesn't run the mixin
.class2 { .border-radius(@baseBorderRadius @baseBorderRadius 0 0); }
// THIS IS THE PROBLEM! This outputs: no no 0 0
所以我需要一种方法来禁用/不运行 mixin,如果它包含从全局变量定义的特定值或单词。我正在为一个主题变量文件执行此操作,根据品牌,公司可能需要或不需要圆 Angular ,我不希望在最终样式表中包含不必要的 0 值负载。
我真的很感激任何帮助,即使只是发现我想做的事情在 LESS 中是不可能的。谢谢
最佳答案
你可以尝试这样的事情,使用多参数混入......并分别检查每个参数的守卫,我分两步编写混入以分别执行守卫
isnumber()
和 = 0
这里是 LESS 代码(注意在守卫中使用 od 和
):
.border-r-not-0 (@a, @b, @c, @d) when not (@a = 0), not (@b = 0), not (@c = 0), not (@d = 0){
-webkit-border-radius: @a @b @c @d;
-moz-border-radius: @a @b @c @d;
border-radius: @a @b @c @d;
}
.border-radius(@a, @b, @c, @d) when (isnumber(@a)) and (isnumber(@b)) and (isnumber(@c)) and (isnumber(@d)){
.border-r-not-0(@a, @b, @c, @d);
}
.border-radius(@r) when (isnumber(@r)) and not (@r = 0) {
-webkit-border-radius: @r;
-moz-border-radius: @r;
border-radius: @r;
}
现在
@baseBorderRadius: 3px;
.class1 { .border-radius(@baseBorderRadius); }
.class2 { .border-radius(@baseBorderRadius, @baseBorderRadius, 0, 0); }
CSS 输出是:
.class1 {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
.class2 {
-webkit-border-radius: 3px 3px 0 0;
-moz-border-radius: 3px 3px 0 0;
border-radius: 3px 3px 0 0;
}
没有输出如果
@baseBorderRadius: no;
因为没有通过isnumber()
测试,
或者如果
@baseBorderRadius: 0;
因为所有参数都等于 0
。
注意:为了做更复杂的事情,比如在参数中使用斜杠 /
,你必须定义一个稍微不同的 mixin,它需要额外的属性,但我希望你能明白这一点。
关于variables - Less border-radius shorthand mixin,禁用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16080249/
有没有办法像 super 速记样式一样在 CSS 中组合 border-top,border-right,border-left,border-bottom。 例如: border: (1px sol
这个问题在这里已经有了答案: Combining border-top,border-right,border-left,border-bottom in CSS (4 个答案) 关闭 3 年前。
所以,我是那些以始终使用最新版本的浏览器而自豪的人之一(当然 Internet Explorer 除外 - 我说的不是那个浏览器)。 我遇到了 this awesome CSS3 website详细介
border-top-color 是 #9b9c9d 而 border-bottom-color 是 #f6f9fc .渐变旨在在border-left 和border-right 上将顶部颜色过渡到
我将开始开发一个新网站,并准备处理浏览器用于计算元素宽度和高度的不同方法 (box model stuff)。不知何故,我想到了:如果我只是将 box-sizing 应用于网站中的所有元素会怎么样?
这是 fiddle :http://jsfiddle.net/3Ys2d/ CSS div{ border: solid 3px blue; border-left-color: re
这个接缝很容易,但我还没有找到任何方法来做到这一点。我有 3 个 div(但解决方案必须适用于 n 个 div),如下图所示: |分区 1 ||分区 2 ||第 3 部分 | 例如: 我想要这样的普通
由于视网膜显示器具有如此高的像素密度,因此在这些显示器上 1 像素的边框看起来非常大。正如 Brad Birdsall 所建议的,CSS box-shadow属性可用于创建“0,5 px”边框,在
我可以这样写边框的样式: border: 2px solid #DDDDDD; 或者像这样: -moz-border-bottom-colors: none; -moz-border-left-col
当在已经有 1px 边框的 div 中覆盖 border-bottom 的大小时,Firefox 和 Chrome 呈现 border-left 和 border-right 不正确: HTML C
我是CSS3新手,最近在学习border-image属性,在看W3C文档的时候: http://dev.w3.org/csswg/css-backgrounds/#border-image-width
我正在尝试在使用 border-radius 属性的 div 上使用 border 属性。 这是我的 CSS: #page { border: 1px solid #beb2b2; w
我只想在已经具有顶部和底部边框(1px 纯灰色)的 div 上添加一个左边框(5px 纯蓝色)。我希望 border-left 位于 border-top 和 border-bottom 之上,但浏览
我有一个使用 border-radius 的带有圆 Angular 的流体宽度 div,以及 div 一侧的大边框,颜色不同。 当浏览器窗口足够小时,所有边框都会正常运行。但是,当我放大窗口大小时,我
导致“错误”的 Css: div { width: 100px; height: 100px; background-color: transparent; box-s
Border-bottom长度小于border-right怎么办? img { border-bottom: 5px solid #02a8d8; border-right:1px s
我是一名优秀的程序员,十分优秀!