2017-04-10 25 views
0

図形の作成方法その背後にあるすべての色を反転(xor?)する四角形ですか?SVGでその背景の逆の形を塗りつぶすには?

が失敗した私が試した:

<filter 
id="invert"> 
<feColorMatrix 
in="BackgroundImage" 
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "/> 
<feComposite 
operator="in" 
in2="SourceGraphic"/> 
</filter> 
<svg> 
    <rect x="10" y="10" width="50" height="50" fill="blue"></rect> 
    <rect x="20" y="20" width="50" height="50" fill="blue" style="filter: url(#invert);"></rect> 
</svg> 

http://codepen.io/anon/pen/bqXPPZ

答えて

1

を背景画像は、ほぼすべてのブラウザでサポートされていない入力され、正式に次のフィルタ仕様で推奨されていません。

あなたの選択肢は以下のとおりです。

  • は、背景画像に何ののコピーを取り、あなたは非標準のCSSの背景・フィルタを使用し
  • それを使用することができるようにfeImageを使用してフィルタにインポート:反転を(100%) - のみ最近のWebKit(別名ではないクローム)でサポートされている
  • 使用CSSの背景 - ブレンドとミックス・ブレンド(最近のブラウザのみ)例:

.content { 
 
    background-image: url("http://stylecampaign.com/blog/blogimages/SVG/fox-1.svg"); 
 
    background-size: 600px; 
 
    position: absolute; 
 
    top: 40px; 
 
    left: 30px; 
 
    width: 700px; 
 
    height: 800px; 
 
} 
 

 
.inverter { 
 
    background: white; 
 
    position: absolute; 
 
    top: 200px; 
 
    left: 300px; 
 
    width: 300px; 
 
    height: 100px; 
 
    mix-blend-mode: exclusion; 
 
}
<div class="content"> 
 
    <div class="inverter"/> 
 
</div>

  • あなたの最後のオプションは、反転SVGフィルターを使用して、コンテンツの反転、以下のオリジナルのコンテンツをレイヤーして、所望の形状にトリミングし、反転バージョンでマスクを使用することです。

<svg width="800px" height="600px"> 
 
    <defs> 
 
    <filter id="invert"> 
 
     <feComponentTransfer> 
 
     <feFuncR type="table" tableValues="1 0"/> 
 
     <feFuncG type="table" tableValues="1 0"/> 
 
     <feFuncB type="table" tableValues="1 0"/> 
 
     </feComponentTransfer> 
 
    </filter> 
 
    
 
    <mask id="mask-me"> 
 
     <circle cx="215" cy="180" r="100" fill="white" /> 
 
    </mask> 
 
    </defs> 
 
    
 
    <image width="400" height="400" x="20" y="20" xlink:href="http://stylecampaign.com/blog/blogimages/SVG/fox-1.svg" /> 
 
    <image width="400" height="400" x="20" y="20" filter="url(#invert)" xlink:href="http://stylecampaign.com/blog/blogimages/SVG/fox-1.svg" mask="url(#mask-me)"/> 
 

 
</svg>

+0

感謝。残念ながら、私はこれらのいずれかを働かせることができませんでしたが、私はそれらを完全に理解しているかどうかわかりません。それは、私はユーザーが作成したsvgで作業しているので、オプション1が出ているようです。少なくともFirefoxでも動作する必要があるので、オプション2が出ているようだ。オプション3では、これがどのように動作するのか分かりません。実例を投稿できますか?オプション4も同じです。 – Daniel

+1

投稿例 –

+0

ありがとう!私はまだ逆の色をこのようにする方法はまだ分かりません。投稿した例は、いくつかの前景色に依存しています。しかし、反転はそれとは無関係です。多分私は間違った言葉を使いましたか?私はバックグラウンドカラーをその逆、白で交換することを意味していました。<->黒、赤<->シアン、緑<->マゼンタ、青<->黄など多分私はあなたの例では結果を得るために特定の前景の色を選択する必要があります?もしあなたがGIMPを持っているなら、Colors> Invertを試すことができます。それが私が意味する効果です。 – Daniel

関連する問題