Bootstrap 4 carousel-control-color 条件颜色 - SVG

Posted

技术标签:

【中文标题】Bootstrap 4 carousel-control-color 条件颜色 - SVG【英文标题】:Bootstrap 4 carousel-control-color conditional colors - SVG 【发布时间】:2018-10-23 06:56:33 【问题描述】:

我试图为渲染的 SVG 图标使用不同的颜色来控制轮播。

我将箭头的默认颜色更改如下:

$carousel-control-color:            $secondary !default;

这使箭头按我的意图变为绿色。 但是现在我有一张具有主要背景颜色的卡片,并且我希望箭头在这个特定的 div 内具有白色。因为您可以想象,$primary 背景上的 $primary 颜色并不是真正可读的。

我尝试使用条件逻辑来设置变量的值,但它并没有像我想象的那样覆盖该值。

.widget 
    &.widget-support-slider 
        .carousel-control-prev-icon,
        .carousel-control-next-icon 
            @if $carousel-control-color == $primary
                    $carousel-control-color: white;
                    color: $carousel-control-color;
                

        
    

对应的 html

<div class="card widget-card bg-primary text-light widget-support-slider mt-3">
<div class="card-header py-2">
    <span class="text-primary">Lorem</span> ipsum dolor sit
    <div class="carousel-controls">
    <a class="carousel-control-prev" href="#support-slider" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Vor</span>
    </a>
    <a class="carousel-control-next" href="#support-slider" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Zurück</span>
    </a>
    </div>
</div>
<div class="card-body p-0">
    ...
</div><!-- /.card-body -->

我也尝试过更改颜色或填充属性,但这些都不会更改箭头颜色。 bootstrap sass 中是否有我忽略的内置函数?

干杯。

引导 v4.1

【问题讨论】:

我实际上发现了一些有用的东西here。但必须有一个更优雅的解决方案。用 20 个或更多不同的轮播和背景来维持这个可能是地狱。 :( 【参考方案1】:

在测试了很多东西之后,我终于找到了一个对我来说有点“不错”的解决方案。关于维护它可以接受。建议虽然受到高度赞赏。

我现在正在使用一个 mixin,它会吐出两个箭头类。

@mixin carousel-control-fill($color) 
    .carousel-control-prev-icon 
        background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23#$color' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E");
    

    .carousel-control-next-icon 
        background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23#$color' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E");
    


// setting a color variable without the #
$carousel-control-color-inverse: fff;

&.widget-support-slider 
    // using it
    @include carousel-control-fill($carousel-control-color-inverse);

一个缺点是因为它需要一个转义的#,我必须使用一个没有# 的变量。这不像我想要的那样干燥。

【讨论】:

以上是关于Bootstrap 4 carousel-control-color 条件颜色 - SVG的主要内容,如果未能解决你的问题,请参考以下文章

从 Bootstrap 3 迁移到 Bootstrap 4? [关闭]

Bootstrap ~3.7 和最新 Bootstrap (4) 之间简单代码的样式问题

Bootstrap-4.3.1版本的使用方法

同时使用 Bootstrap 3 和 Bootstrap 4

Bootstrap 4 导航栏不会在 Angular 4 中折叠

从 Bootstrap 3 迁移的 Bootstrap 4 网格布局问题