以下是我当前的解决方案,但它看起来并不是最优的,因为如果$Slice的元素少于四个,它将产生错误.我在想,有没有更好的办法来处理这件事.

@mixin nine-border-slice($imagePath, $slice) {
    $width: nth($slice, 1)+0px nth($slice, 2)+0px nth($slice, 3)+0px nth($slice, 4)+0px;
    border-image-source: url($imagePath);
    border-image-slice: $slice fill;
    border-width: $width;
    border-style: solid;
}

@include nine-border-slice('../stories/assets/speech_bubble.png', 19 44 95 25);

// border-image-source: url('../stories/assets/speech_bubble.png');
// border-image-slice: 19 44 95 25 fill;
// border-width: 19px 44px 95px 25px;
// border-style: solid;
@include nine-border-slice('../stories/assets/speech_bubble.png', 19 44 95 );

// border-image-source: url('../stories/assets/speech_bubble.png');
// border-image-slice: 19 44 95 fill;
// border-width: 19px 44px 95px;
// border-style: solid;

推荐答案

更好的解决方案是遍历$slice数组,并将px附加到该数组的每个值,您可以使用@for循环,以实现以下目的:

@mixin nine-border-slice($imagePath, $slice) {
  $width: ();
  @for $i from 1 through length($slice) {
    $width: append($width, nth($slice, $i) + px);
  }
  border-image-source: url($imagePath);
  border-image-slice: $slice fill;
  border-width: $width;
  border-style: solid;
}

Css相关问答推荐

如何将bslib::card()中的扩展按钮移到右上方,其中full_screen = TRUE?

使用背景滤镜时,伪元素出现在div之前

此css Select 器的总体特性是什么?按钮:不是(#mainBtn,.cta)

在css网格中用一个锚标签(顶部/底部边距)包装图像?

react native 容器样式

如何使用DirectusImage标签作为背景?

将鼠标悬停在具有效果的元素上

如何使背景出现在具有自己背景 colored颜色 的子元素上

Prettier/VS Code 在 CSS 中的 !important 之前添加一个空格,导致它在 WordPress 中崩溃

如何按列垂直对齐项目,但不在列内水平对齐

对 CSS 容器查询使用多个条件

如何让 Firefox 在文件更改时自动刷新?

iPhone X / 8 / 8 Plus CSS 媒体查询

如何在 javascript 中获取 HTML 元素的样式值?

如何在 Flexbox 中禁用等高列?

使用 CSS 垂直居中旋转文本

弹性框中的边距折叠

仅针对使用的类优化 Font Awesome

仅当将 Div 悬停在上方时才显示滚动条?

如何使用 CSS 消除元素的偏移量?