Scss创建三角形函数练习

文章介绍了如何通过Scss的函数和mixin功能来创建不同方向和样式的三角形,包括使用占位符选择器定义公共样式,mixin处理核心代码,以及通过for循环测试不同的参数组合,生成不同效果的三角形。
摘要由CSDN通过智能技术生成

Scss创建三角形函数练习

最近深入学习了Scss语法,记录下通过函数方式创建通用三角形的方法



一、占位符选择器创建公共样式

// 提取三角形公共样式
%triangle-base {
    display: inline-block;
    width: 0;
    height: 0;
}

二、mixin创建核心代码

@mixin triangle($direction: top, $size: 30px, $border-color: #000) {
    // 通过占位符选择器继承公共样式
    @extend %triangle-base;

    // 统一设置四周边框
    border: $size dashed transparent;

    // 反转获取三角形对边名称
    $reverse-direction: bottom;
    @if ($direction == right) {
        $reverse-direction: left;
    }
    @else if ($direction == bottom) {
        $reverse-direction: top;
    }
    @else if ($direction == left) {
        $reverse-direction: right;
    }

    border-#{$direction}-width: 0;
    border-#{$reverse-direction}-style: solid;
    border-#{$reverse-direction}-color: $border-color;
}

3、创建测试用例

// 创建测试用例
$triangle-list: (
    "top": (
        "direction": top,
        "size": 20px,
        "color": red,
    ),
    "right": (
        "direction": right,
        "size": 30px,
        "color": yellow,
    ),
    "bottom": (
        "direction": bottom,
        "size": 40px,
        "color": blue,
    ),
    "left": (
        "direction": left,
        "size": 50px,
        "color": black,
    ),
);

4、通过for循环测试用例

// 通过for循环测试用例
@for $i from 1 through 4 {
    // 根据位置(注意不是下标),获取direction
    $direction: nth(map-keys($triangle-list), $i);

    .t#{$i} {
        @include triangle(
            map-get($triangle-list, $direction, "direction"), 
            map-get($triangle-list, $direction, "size"), 
            map-get($triangle-list, $direction, "color")
        );
    }
}

5、生成效果

.t4, .t3, .t2, .t1 {
  display: inline-block;
  width: 0;
  height: 0;
}

.t1 {
  border: 20px dashed transparent;
  border-top-width: 0;
  border-bottom-style: solid;
  border-bottom-color: red;
}

.t2 {
  border: 30px dashed transparent;
  border-right-width: 0;
  border-left-style: solid;
  border-left-color: yellow;
}

.t3 {
  border: 40px dashed transparent;
  border-bottom-width: 0;
  border-top-style: solid;
  border-top-color: blue;
}

.t4 {
  border: 50px dashed transparent;
  border-left-width: 0;
  border-right-style: solid;
  border-right-color: black;
}/*# sourceMappingURL=func.css.map */

总结

通过函数方式的练习,感觉已经掌握了SCSS大部分语法了
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值