css - 在 SASS 中提取部分边界属性

标签 css split sass border

在 SASS 变量(scss 语法中的代码)中给定一个有效的 CSS 边框属性值,我需要知道给定边框的宽度和颜色。

这可以使用 @function 来完成,因为我多次需要此功能。

输入可能如下所示(如果缺少边框属性之一也没关系,因为这仍然是有效的 CSS):

  • 2px 白色虚线
  • 1px #333
  • 纯黑色

不幸的是,我什至不知道从哪里开始。 我想拆分列表然后返回相应的值,但我不知道如何确定不同的类型,例如我怎么知道它的边框宽度值?


这就是我目前卡住的地方:

@function getBorderWidth($border) {
    @each $part in $border {
        @if(WHAT IS THE CONDITION?) {
            return $part;
        }
    }
}

非常感谢您的帮助!

最佳答案

您正在寻找type-of($part):

@if type-of($part) == number { @return $part; }
@if type-of($part) == string { @return $part; }
@if type-of($part) == color  { @return $part; }

例子:

// Note! the null return will not be rendered 
@function get-border-width($input){
  @each $part in $input { @if type-of($part) == number { @return $part; } }   
  @return null;
}
@function get-border-style($input){
  @each $part in $input { @if type-of($part) == string { @return $part; } }   
  @return null;    
}
@function get-border-color($input){
  @each $part in $input { @if type-of($part) == color { @return $part; } }   
  @return null;    
}

测试:

$border-1: 2px dashed white;
$border-2: 1px #333;
$border-3: solid black;

test-1 {
  border-width: get-border-width($border-1);
  border-style: get-border-style($border-1);    
  border-color: get-border-color($border-1);    
}

test-2 {
  border-width: get-border-width($border-2);
  border-style: get-border-style($border-2);    
  border-color: get-border-color($border-2);    
}

test-3 {
  border-width: get-border-width($border-3);
  border-style: get-border-style($border-3);    
  border-color: get-border-color($border-3);    
}

输出:

test-1 {
  border-width: 2px;
  border-style: dashed;
  border-color: white;
}

test-2 {
  border-width: 1px;
  border-color: #333;
}

test-3 {
  border-style: solid;
  border-color: black;
}

关于css - 在 SASS 中提取部分边界属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42274449/

相关文章:

css - 有什么方法可以在SASS函数中使用CSS变量吗?

css - 使用 sass 解除绑定(bind)变量

css - p :nth-child(2) and p:nth-of-type(2)?有什么区别

jquery - 如何获取创建段落的外宽

Java:尝试拆分 ", but string.split(""") 不被接受...这该怎么办?

javascript - 如何将复杂的字符串分成几部分?

java - 在 java 中使用正则表达式进行分割

javascript - 无法突出显示菜单列表的第一个元素

html - 如何为表格单元格中的文本提供不同的对齐方式?

webpack - 如何防止Vue全局CSS多次覆盖自身