使 svg 文件在悬停在 select 菜单上时更改颜色
Make svg file change colours on hover on select menu
我在下面看到了这个post,但没有帮助,我从头到尾看了一遍还是没看懂How to change the color of an svg element?有很多相互竞争的答案,none这看起来像我正在做的......如果你更了解它,也许它确实如此......但我不这样做,这就是我来到这个网站的原因。如果有人能以简洁明了的方式将我的代码笔翻译成其中一个答案,我将不胜感激。
我有一个 select 菜单,它使用 svg 图形作为打开的箭头。有人要求在悬停 select 时让 svg 变为绿色并稍微加粗。我曾尝试通过添加一种颜色来更改背景 url 属性,但没有成功,就像我在其他线程上看到的那样,但这只是将我的 select 菜单更改为绿色。我怎样才能更改 svg 箭头颜色并使其更粗(如果可能的话)?
我创建了一个codepen
https://codepen.io/justinblayney/pen/PoENamE
我尝试添加另一个图形,但它并不总是能及时加载,我们不想预加载它。
这是我的 scss
.find-an-option {
display: grid;
grid-template-columns: 1fr;
select::-ms-expand,
.select:after {
display: none;
content: "";
}
select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: url("https://res.cloudinary.com/djk8wzpz4/image/upload/v1647694948/path-arrow_wloczn.svg") center right
30px no-repeat;
border: white 2px solid;
background-color: white;
box-shadow: 0px 3px 6px #00000029;
border-radius: 7px;
font: normal normal bold 16px/18px Arial;
padding: 0px 25px;
&:hover {
border: #242b44 2px solid;
background: url("https://res.cloudinary.com/djk8wzpz4/image/upload/v1647694948/path-arrow_wloczn.svg") center
right 30px no-repeat;
background-color: white;
}
}
}
这是我的 html
<form class="find-an-option">
<select id="games" name="games" class="">
<option value="" selected>Games</option>
<option value="" selected>option 1</option>
<option value="" selected>option 2</option>
</select>
</form>
您无法更改 background-image
的填充或描边颜色。
但是您可以轻松地使用 2 个内联的 svgs data-URLs (converted by Yoksel's converting tool):
.find-an-option {
display: grid;
grid-template-columns: 1fr;
}
.find-an-option select::-ms-expand,
.find-an-option .select:after {
display: none;
content: "";
}
.find-an-option select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20.4 11.2' %3E%3Cpath d='M1.5,1.5l8.2,8.2l9.1-8.2' style='fill:none;stroke:%23242B44;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;'/%3E%3C/svg%3E") center right 30px no-repeat;
border: white 2px solid;
background-color: white;
box-shadow: 0px 3px 6px #00000029;
border-radius: 7px;
font: normal normal bold 16px/18px Arial;
padding: 0px 25px;
}
.find-an-option select:hover {
border: #242b44 2px solid;
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20.4 11.2' %3E%3Cpath d='M1.5,1.5l8.2,8.2l9.1-8.2' style='fill:none;stroke:green;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;'/%3E%3C/svg%3E") center right 30px no-repeat;
background-color: white;
}
<form class="find-an-option">
<select id="games" name="games" class="">
<option value="" selected>Games</option>
<option value="" selected>option 1</option>
<option value="" selected>option 2</option>
</select>
</form>
由于您的 arrow/chevron 图标很小,额外的 css“膨胀”应该可以忽略不计。
我在下面看到了这个post,但没有帮助,我从头到尾看了一遍还是没看懂How to change the color of an svg element?有很多相互竞争的答案,none这看起来像我正在做的......如果你更了解它,也许它确实如此......但我不这样做,这就是我来到这个网站的原因。如果有人能以简洁明了的方式将我的代码笔翻译成其中一个答案,我将不胜感激。
我有一个 select 菜单,它使用 svg 图形作为打开的箭头。有人要求在悬停 select 时让 svg 变为绿色并稍微加粗。我曾尝试通过添加一种颜色来更改背景 url 属性,但没有成功,就像我在其他线程上看到的那样,但这只是将我的 select 菜单更改为绿色。我怎样才能更改 svg 箭头颜色并使其更粗(如果可能的话)?
我创建了一个codepen https://codepen.io/justinblayney/pen/PoENamE
我尝试添加另一个图形,但它并不总是能及时加载,我们不想预加载它。
这是我的 scss
.find-an-option {
display: grid;
grid-template-columns: 1fr;
select::-ms-expand,
.select:after {
display: none;
content: "";
}
select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: url("https://res.cloudinary.com/djk8wzpz4/image/upload/v1647694948/path-arrow_wloczn.svg") center right
30px no-repeat;
border: white 2px solid;
background-color: white;
box-shadow: 0px 3px 6px #00000029;
border-radius: 7px;
font: normal normal bold 16px/18px Arial;
padding: 0px 25px;
&:hover {
border: #242b44 2px solid;
background: url("https://res.cloudinary.com/djk8wzpz4/image/upload/v1647694948/path-arrow_wloczn.svg") center
right 30px no-repeat;
background-color: white;
}
}
}
这是我的 html
<form class="find-an-option">
<select id="games" name="games" class="">
<option value="" selected>Games</option>
<option value="" selected>option 1</option>
<option value="" selected>option 2</option>
</select>
</form>
您无法更改 background-image
的填充或描边颜色。
但是您可以轻松地使用 2 个内联的 svgs data-URLs (converted by Yoksel's converting tool):
.find-an-option {
display: grid;
grid-template-columns: 1fr;
}
.find-an-option select::-ms-expand,
.find-an-option .select:after {
display: none;
content: "";
}
.find-an-option select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20.4 11.2' %3E%3Cpath d='M1.5,1.5l8.2,8.2l9.1-8.2' style='fill:none;stroke:%23242B44;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;'/%3E%3C/svg%3E") center right 30px no-repeat;
border: white 2px solid;
background-color: white;
box-shadow: 0px 3px 6px #00000029;
border-radius: 7px;
font: normal normal bold 16px/18px Arial;
padding: 0px 25px;
}
.find-an-option select:hover {
border: #242b44 2px solid;
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20.4 11.2' %3E%3Cpath d='M1.5,1.5l8.2,8.2l9.1-8.2' style='fill:none;stroke:green;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;'/%3E%3C/svg%3E") center right 30px no-repeat;
background-color: white;
}
<form class="find-an-option">
<select id="games" name="games" class="">
<option value="" selected>Games</option>
<option value="" selected>option 1</option>
<option value="" selected>option 2</option>
</select>
</form>
由于您的 arrow/chevron 图标很小,额外的 css“膨胀”应该可以忽略不计。