更改SVG背景图像的颜色(Bootstrap 4轮播)

时间:2017-11-05 14:45:24

标签: css svg background-image bootstrap-4 twitter-bootstrap-4

我有一个带有next / prev控件的BS 4旋转木马,到目前为止一直有效。我有一个浅色背景,所以我想改变控件的颜色(目前是白色)。

HTML:

<div id="carouselQuotes" class="carousel slide quotecaru" data-ride="carousel">
<ol class="carousel-indicators">
    <li data-target="#carouselQuotes" data-slide-to="0" class="active"></li>
    <li data-target="#carouselQuotes" data-slide-to="1"></li>
    <li data-target="#carouselQuotes" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
    ... carousel items ...
</div>
<a class="carousel-control-prev" href="#carouselQuotes" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselQuotes" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
</a>

更改指示器的颜色非常简单,因为它只是以颜色作为背景设置。但是为prev / next控件设置背景颜色或颜色并没有改变实际控件图标的颜色。

我发现图标是通过背景图像SVG设置的。有一部分说明填充颜色:

.carousel-control-prev-icon {
    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' 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-prev-icon, .carousel-control-next-icon {
    fill: #000;
}
.carousel-control-prev-icon, .carousel-control-next-icon {
    fill: '#000';
}
.carousel-control-prev-icon, .carousel-control-next-icon {
    fill: '%23000';
}

有没有办法在不覆盖整个背景图像线的情况下更改图标的颜色?

谢谢

2 个答案:

答案 0 :(得分:2)

您无法使用CSS规则设置SVG背景图像的内容样式。它经过解析和处理,并在解码后有效地转换为位图图像。

您需要更改SVG本身。

fill='%23fff'

fill='%23000'

或任何你想要的颜色。这里的“%23”只是“#”符号。在像这样的数据URI中使用它时需要URL-encoded

div {
  background-color: black;
}

button {
  width: 24px;
  height: 24px;
  border: none;
  background-color: transparent;
}

.carousel-control-prev-icon {
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' 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");
}


div.inverted {
  background-color: white;
}

.inverted .carousel-control-prev-icon {
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' 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");
}
<div>
  <button class="carousel-control-prev-icon"></button>
</div>

<div class="inverted">
  <button class="carousel-control-prev-icon"></button>
</div>

答案 1 :(得分:0)

更改 SVG 背景图像的颜色

const mongoose = require('mongoose');
//var validate = require('mongoose-validator');
const postschema = mongoose.Schema({ 
    userName :{
        type : String,
        required : true
    },
    status : {
        type : Array ,
        items : {
            type : String ,
            max: 20 ,
            required : true
        },
    },
    likes : {
        type : Array ,
        default : []
    }
},
{ timestamps :{ createdAt: 'created_at',updatedAt: 'updated_at' }}
);

postschema.path('status').validate(function(v){
    return v.length <=20;
},"The maximum length is 20 ");

module.exports = mongoose.model('Post' , postschema);