使SCSS背景颜色相同,但透明

8fsztsew  于 2023-05-02  发布在  其他
关注(0)|答案(4)|浏览(267)

我正在为颜色、边框等创建自己的SCSS框架。
我正在尝试创建一个类,它可以使元素的当前背景颜色更加透明。颜色设置如下:

$bg-red: FF0000;

.bg-red {
   background: $bg-red
}

我想知道是否有一种方法可以添加一个类,可以获取当前背景并使其更加透明,而无需每次都重写颜色,因为我将处理数百种颜色,类似于以下内容:

.bg-transparent-50{
   background: (currentBackground,  opacity: 50%)
}

我知道我没有使用正确的语法,但这只是为了解释我在寻找什么,有人知道答案吗?

icomxhvb

icomxhvb1#

没有专门的CSS属性(如'background-opacity')。
您可以模拟的效果与背景图像定义为一个线性梯度超过rgba值(即。具有透明度的颜色元组)。
通过指定点间隔取消渐变效果:

.bg-red {
    background: red;
}
.bg-transparent-50 {
    background-image: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5));
}
<p>
    <div class="bg-red"                   style="width: 200px; height: 50px;">Opaque background</div>
    <div class="bg-red bg-transparent-50" style="width: 200px; height: 50px;">Semi-transparent background</div>
</p>
fdbelqdn

fdbelqdn2#

我只会将rgba与CSS属性结合使用。

div {
  padding: 0.25rem 0.5rem;
}

.background {
  --background-opacity: 100;
  background-color: rgba(var(--background-color), var(--background-opacity));
}

.background.black {
  --background-color: 0, 0, 0;
}

.opacity-100 {
  --background-opacity: 0;
}

.opacity-80 {
  --background-opacity: 0.2;
}

.opacity-60 {
  --background-opacity: 0.4;
}

.opacity-40 {
  --background-opacity: 0.6;
}

.opacity-20 {
  --background-opacity: 0.8;
}
<div class="black background opacity-100"> 100% opacity </div>
<div class="black background opacity-80"> 80% </div>
<div class="black background opacity-60"> 60% </div>
<div class="black background opacity-40"> 40% </div>
<div class="black background opacity-20"> 20% </div>
xqkwcwgp

xqkwcwgp3#

对于您的用例,可能的解决方案是使用伪(before/after)元素。你可以分别为它指定背景色和不透明度。

hl0ma9xz

hl0ma9xz4#

我发现最好的方法是使用rgb值来存储颜色变量,然后在颜色的rgba声明中调整不透明度:

$bg-red: rgb(255, 0, 0);

.bg-red {
   background: $bg-red
}

.bg-red-50{
   background: rgba($bg-red, 0.5)
}

相关问题