簡體   English   中英

在懸停時更改 css 背景圖像 svg 繪制行為?

[英]change css background-image svg paint behavior on hover?

我使用 svg 作為按鈕的背景圖像。

該按鈕需要不同的懸停狀態,這只是對 svg 填充值的更改。

是否有一種聰明的方法可以對 svg 進行這些更改,該更改實際上僅用作圖像,或者我是否需要創建具有不同填充顏色的不同 svg 文件?

另一種帶有背景位置的方法。

HTML

<div class="locate">
    <a href="#">lorem ipsum</a>
</div>

CSS

 .locate a {
      padding-left: 20px;
      position: relative;
      text-decoration: underline;
      color: #000;
    }
    .locate a:before {
      width: 16px;
      height: 16px;
      content: "";
      background: transparent url('search.svg') no-repeat scroll 0 0;
      -webkit-background-size: 16px 32px;
      background-size: 16px 32px;
      position: absolute;
      top: 0;
      left: 0;
      /* For screen reader */
      speak: none;
    }
    .locate a:hover,
    .locate a:focus {
      color: #a2005a;
      text-decoration: none;
    }
    .locate a:hover:before,
    .locate a:focus:before {
      background-position: 0 -16px;
    }

SVG

<svg xmlns="http://www.w3.org/2000/svg">
<path d="M15.838,13.693l-2.785-2.786c0.705-1.103,1.121-2.408,1.121-3.813c0-3.911-3.17-7.081-7.081-7.081
    c-3.911,0-7.081,3.17-7.081,7.081c0,3.91,3.17,7.08,7.081,7.08c1.406,0,2.712-0.415,3.813-1.121l2.787,2.786
    c0.195,0.197,0.518,0.197,0.715,0l1.43-1.43C16.037,14.211,16.037,13.891,15.838,13.693z M7.093,12.15
    c-2.789,0-5.058-2.27-5.058-5.058c0-2.789,2.269-5.058,5.058-5.058c2.79,0,5.058,2.269,5.058,5.058
    C12.15,9.882,9.883,12.15,7.093,12.15z"/>
<path fill="#A2005A" d="M15.838,29.678l-2.785-2.786c0.705-1.103,1.121-2.408,1.121-3.813c0-3.91-3.17-7.08-7.081-7.08
    c-3.911,0-7.081,3.17-7.081,7.08s3.17,7.08,7.081,7.08c1.406,0,2.712-0.415,3.813-1.121l2.787,2.786
    c0.195,0.197,0.518,0.197,0.715,0l1.43-1.43C16.037,30.195,16.037,29.875,15.838,29.678z M7.093,28.135
    c-2.789,0-5.058-2.27-5.058-5.058s2.269-5.058,5.058-5.058c2.79,0,5.058,2.27,5.058,5.058C12.15,25.866,9.883,28.135,7.093,28.135z"
    />
</svg>

是的,您可以使用 SVG 內聯。 不適用於 IE 11。

<p class="loupe"><a href="#">Lorem ipsum</a></p>

.loupe a {
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><path d='M15.838,13.693l-2.785-2.786c0.705-1.102,1.121-2.408,1.121-3.813c0-3.911-3.17-7.081-7.081-7.081s-7.081,3.17-7.081,7.081c0,3.91,3.17,7.08,7.081,7.08c1.406,0,2.711-0.415,3.813-1.121l2.787,2.786c0.195,0.197,0.518,0.197,0.715,0l1.43-1.43C16.037,14.211,16.037,13.89,15.838,13.693z M7.093,12.15c-2.789,0-5.058-2.269-5.058-5.057c0-2.789,2.269-5.058,5.058-5.058c2.79,0,5.057,2.269,5.057,5.058C12.15,9.882,9.883,12.15,7.093,12.15z'/></svg>") no-repeat 0 0;
  padding-left: 20px;
  color: #000;
}
.loupe a:hover,
.loupe a:focus {
  background: url("data:image/svg+xml;utf8,<svg fill='red' xmlns='http://www.w3.org/2000/svg'><path d='M15.838,13.693l-2.785-2.786c0.705-1.102,1.121-2.408,1.121-3.813c0-3.911-3.17-7.081-7.081-7.081s-7.081,3.17-7.081,7.081c0,3.91,3.17,7.08,7.081,7.08c1.406,0,2.711-0.415,3.813-1.121l2.787,2.786c0.195,0.197,0.518,0.197,0.715,0l1.43-1.43C16.037,14.211,16.037,13.89,15.838,13.693z M7.093,12.15c-2.789,0-5.058-2.269-5.058-5.057c0-2.789,2.269-5.058,5.058-5.058c2.79,0,5.057,2.269,5.057,5.058C12.15,9.882,9.883,12.15,7.093,12.15z'/></svg>") no-repeat 0 0;
    text-decoration: none;
    color: red;
}

http://jsfiddle.net/korigan/7e14gogv/

如果您使用 SVG 作為背景圖像,它不會是交互式的。 把它想象成非常像一個光柵圖像。 擁有兩個圖像當然是一種解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM