首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >框箭头以获取各自框的背景颜色。

框箭头以获取各自框的背景颜色。
EN

Stack Overflow用户
提问于 2019-03-10 17:56:51
回答 3查看 116关注 0票数 0

我将尽量简单地解释这一点:

对于此示例,我希望每个框的箭头只添加红色、黑色、灰色类,从而自动获取其各自框的背景颜色。我可以很容易地做到:

代码语言:javascript
运行
复制
    .box.red {
      &:before {
        ...
        border-bottom: 1px solid $red;

      }
    }
   .box.black {
      &:before {
        ...
        border-bottom: 1px solid $black;

      }
    }
   .box.grey {
      &:before {
        ...
        border-bottom: 1px solid $grey;

      }
    }

但这意味着,对于我创建的每一个不同的颜色,我将不得不手动更改箭头颜色。例如,如果将来我想添加一个绿色框,我将不得不在CSS中将它的箭头颜色更改为绿色。在Sass有一个方法来做它,所以我不需要担心改变箭头颜色时,每次方框背景颜色变化?

谢谢。

见演示

EN

Stack Overflow用户

回答已采纳

发布于 2019-03-10 19:55:28

由于您的元素将具有纯色,您可以在应用旋转的位置创建带有矩形的箭头,以实现布局,然后可以使用inherit作为背景。

代码语言:javascript
运行
复制
.box {
  position: relative;
  width: 100px;
  height: 100px;
  margin-bottom: 40px;
  background:red;
}
.box::before {
  content:"";
  position:absolute;
  width:30px;
  height:30px;
  top:100%;
  left:20px;
  transform:translateY(-50%) rotateX(40deg) rotate(45deg);
  background:inherit;
}

.blue {
  background:blue;
}
.green {
  background:green;
}
代码语言:javascript
运行
复制
<div class="box">

</div>

<div class="box blue">

</div>
<div class="box green">

</div>

您也可以依赖CSS变量,即使在许多地方使用,您也只能更改颜色一次。

下面是另一种创建形状的方法,您可以轻松地控制箭头的颜色、大小和位置:

代码语言:javascript
运行
复制
.box {
  position: relative;
  width: 100px;
  height: 100px;
  padding-bottom: var(--s,20px);
  margin-bottom:10px;
  background:
    linear-gradient(to top right,transparent 49.8%,var(--c,red) 50%) var(--p,20px) 100%,
    linear-gradient(to top left, transparent 49.8%,var(--c,red) 50%) calc(var(--p,20px) + var(--s,20px)) 100%,
    var(--c,red) content-box;
  background-size:var(--s,20px) var(--s,20px);
  background-repeat:no-repeat;
}

.blue {
  --c:blue;
  --s:15px;
  --p:40px;
}
.green {
  --c:green;
  --s:10px;
  --p:60px;
}
代码语言:javascript
运行
复制
<div class="box"></div>

<div class="box blue"></div>

<div class="box green"></div>

您可以很容易地对代码实现相同的逻辑:

代码语言:javascript
运行
复制
.box {
  position: relative;
  width: 100px;
  height: 100px;
  margin-bottom: 40px;
  background:var(--c,green);
}
.box:before {
  content: ' ';
  border: solid transparent;
  border-bottom: 1px solid var(--c,green);
  border-width: 15px;
  height: 0;
  position: absolute;
  transform: rotate(180deg);
  width: 0;
  bottom: -30px;
  left: 20px;
}

.red {
  --c: #f00;
}

.black {
  --c: #000;
}

.grey {
  --c: #aaa;
}
代码语言:javascript
运行
复制
<div class="box red"></div>
<div class="box black"></div>
<div class="box grey"></div>
<div class="box "></div>

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55090673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档