使用 SCSS 创建具有动态方向的三角形

Posted

技术标签:

【中文标题】使用 SCSS 创建具有动态方向的三角形【英文标题】:Create a triangle with Dynamic direction WITH SCSS 【发布时间】:2022-01-21 20:46:33 【问题描述】:

请任何帮助我想用 scss im 使用 mixin 创建一个动态的三角形方向,但它对我不起作用

文件 HTML

<div class="arrow-div">Arrow</div>

scss 文件

.arrow-div
  font-size: 20px;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 300px;
  height: 300px;
  margin: 50px auto;
  border:1px solid #ccc;
  position: relative;
  @include arrow(red,-40px,null,null,50%,top,translateX(-50%));


@mixin arrow($color,$top,$right,$bottom,$left,$dir,$translate)
  position:absolute;
  content:"";
  border: 20px solid transparent;
  position:$dir;
  top:$top;
  right:$right;
  bottom:$bottom;
  left:$left;
  transform: $translate;
  border-#$dir-color: $color;

这是我下面的代码 https://codepen.io/aminanba/pen/XWegBbx

【问题讨论】:

老实说,我只会使用 SVG 并根据方向旋转它。 【参考方案1】:

最后我找到了使用 scss、mixin 和 if 控制流创建箭头动态方向的解决方案;

@mixin arrow($direction:up ,$color) 
  content: "";
  position: absolute;
  border: 20px solid transparent;

  @if $direction == "up" 
    top: -40px;
    left: 50%;
    border-bottom-color: $color;
    transform: translateX(-50%);
   @else if $direction == "right" 
    right: -20px;
    top: 50%;
    border-left-color: $color;
    transform: translateY(-50%);
   @else if $direction == "down" 
    bottom: -40px;
    left: 50%;
    transform: translateX(-50%);
    border-top-color: $color;
   @else if $direction == "left" 
    left: -20px;
    top: 50%;
    transform: translateY(-50%);
    border-right-color: $color;
  


/// test
.element 
  position:relative;
  &:before 
    @include arrow("up", red);
  
<div class="element"></div>

【讨论】:

以上是关于使用 SCSS 创建具有动态方向的三角形的主要内容,如果未能解决你的问题,请参考以下文章

如何创建具有多个显示三角形的调整大小窗口?

scss CSSで三角形

scss 三角形

scss css三角形

scss 三角形CSS

scss 三角形CSS