diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
commit | 074785cea106179cb3305637055ab0a009ca74f2 (patch) | |
tree | e6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/pt-br/web/svg/applying_svg_effects_to_html_content | |
parent | da78a9e329e272dedb2400b79a3bdeebff387d47 (diff) | |
download | translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2 translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip |
initial commit
Diffstat (limited to 'files/pt-br/web/svg/applying_svg_effects_to_html_content')
-rw-r--r-- | files/pt-br/web/svg/applying_svg_effects_to_html_content/index.html | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/files/pt-br/web/svg/applying_svg_effects_to_html_content/index.html b/files/pt-br/web/svg/applying_svg_effects_to_html_content/index.html new file mode 100644 index 0000000000..69d74d91db --- /dev/null +++ b/files/pt-br/web/svg/applying_svg_effects_to_html_content/index.html @@ -0,0 +1,213 @@ +--- +title: Applying SVG effects to HTML content +slug: Web/SVG/Applying_SVG_effects_to_HTML_content +tags: + - CSS + - Guía + - SVG + - XHTML +translation_of: Web/SVG/Applying_SVG_effects_to_HTML_content +--- +<div>{{gecko_minversion_header("1.9.1")}}</div> + +<p>Firefox 3.5 introduziu suporte para uso do <a href="/en-US/docs/SVG" title="SVG">SVG</a> como um componente do <a href="/en-US/docs/Web/CSS" title="CSS">CSS</a> em ordem para introduzir efeitos SVG no conteúdo HTML.</p> + +<p>Você pode embutir o SVG nos estilos dentro do mesmo documento, ou com um <em>stylesheet</em> externo.</p> + +<div class="note"> +<p> Referencias para SVG em arquivos externos podem ter mesma origem como as do documento originário.</p> +</div> + +<h2 id="Usando_SVG_embutido">Usando SVG embutido</h2> + +<p>Para aplicar um efeito SVG usando o estilo CSS, você precisa primeiro criar um estilo CSS que faz referência ao SVG que deseja aplicar.</p> + +<pre class="brush: html"><style>.stylename { mask: url(#localstyle); }</style> +</pre> + +<p>Dentro do exemplo acima, o novo estilo, identificado como "stylename", é uma máscara SVG referenciada pelo ID "localstyle". Quando isso é estabelecido, a máscara pode ser aplicada a qualquer elemento usando o estilo CSS.</p> + +<p>Isso soa mais complicado do que realmente é; Olharemos mais de perto os exemplos para termos uma boa ideia como isso funciona.</p> + +<p>Então você pode aplicar três estilos: O uso do <code>mask</code>, <code>clip-path</code>, ou <code>filter</code>.</p> + +<h3 id="Exemplo_Masking">Exemplo: Masking</h3> + +<p>Por exemplo, você pod estabelecer um estilo CSS que provêm uma máscara gradiente para um documento HTML usando código SVG similar ao seguinte:</p> + +<div class="warning"> +<p><strong><code>Namespacing</code> não é válido no HTML5</strong>, deixe de lado as tags "svg:" para documentos HTML.</p> +</div> + +<pre class="brush: html"><svg height="0"> + <mask id="m1" maskUnits="objectBoundingBox" maskContentUnits="objectBoundingBox"> + <linearGradient id="g" gradientUnits="objectBoundingBox" x2="0" y2="1"> + <stop stop-color="white" offset="0"/> + <stop stop-color="white" stop-opacity="0" offset="1"/> + </linearGradient> + <circle cx="0.25" cy="0.25" r="0.25" id="circle" fill="white"/> + <rect x="0.5" y="0.2" width="0.5" height="0.8" fill="url(#g)"/> + </mask> +</svg> +</pre> + +<pre class="brush: css">.target { + mask: url(#m1); +} +p { + width: 300px; + border: 1px solid #000; + display: inline-block; + margin: 1em; +}</pre> + +<p>Preste atenção na linha 1, a máscara é especificada usando um URL para o ID "#m1", que é um ID para a máscara SVG específicada abaixo. Todo o que foi especificado detalha mais sobre a máscara de gradiente.</p> + +<p>Na realidade aplicar o efeito SVG para XHTML ou HTML é simplesmente feito atribuindo um estilo <code>target </code>definido abaixo do elemento, como esse:</p> + +<pre class="brush: html"><p class="target" style="background:lime;"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt + ut labore et dolore magna aliqua. Ut enim ad minim veniam. +<p> +<p> + Lorem ipsum dolor sit amet, consectetur adipisicing + <b class="target">elit, sed do eiusmod tempor incididunt + ut labore et dolore magna aliqua.</b> + Ut enim ad minim veniam. +</p></pre> + +<p>O exemplo acima pode rodar com uma máscara aplicadaa ele.</p> + +<p>{{ EmbedLiveSample('Exemplo_Masking', 360, 270) }}</p> + +<h3 id="Exemplo_Clipping">Exemplo: Clipping</h3> + +<p>Esse exemplo demonstra como usar SVG to recortar conteúdo HTML. Esse exemplo demonstra como usar SVG para recortar conteúdo HTML. Quando você ver a <a href="/@api/deki/files/3214/=clipdemo.xhtml">demonstração</a>, não irá notar que as áreas quentes para links são recortes.</p> + +<pre class="brush: html"><p class="target" style="background:lime;"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt + ut labore et dolore magna aliqua. Ut enim ad minim veniam. +<p> +<p> + Lorem ipsum dolor sit amet, consectetur adipisicing + <b class="target">elit, sed do eiusmod tempor incididunt + ut labore et dolore magna aliqua.</b> + Ut enim ad minim veniam. +</p> +<button onclick="toggleRadius()">Toggle radius</button> +<svg height="0"> + <clipPath id="c1" clipPathUnits="objectBoundingBox"> + <circle cx="0.25" cy="0.25" r="0.25" id="circle"/> + <rect x="0.5" y="0.2" width="0.5" height="0.8"/> + </clipPath> +</svg> +</pre> + +<pre class="brush: css">.target { + clip-path: url(#c1); +} +p { + width: 300px; + border: 1px solid #000; + display: inline-block; + margin: 1em; +}</pre> + +<p>Isso estabelece uma área recortada composta por um círculo e um retângulo, e atribui para ela ID "#c1". Isso é então referenciado por um estilo. Quando o estilo <code>target</code> é estabelecido desse modo, <code>clip-path</code> pode ser atribuido para qualquer outro elemento.</p> + +<div class="note"> +<p>Também você pode fazer mudanças no SVG em tempo real e ver suas alterações imediatamente afetar a renderização do HTML. Por exemplo, você pode redimensionar o círculo dentro do caminho do recorte estabelecendo o seguinte:</p> +</div> + +<pre class="brush: js">function toggleRadius() { + var circle = document.getElementById("circle"); + circle.r.baseVal.value = 0.40 - circle.r.baseVal.value; +} +</pre> + +<p>{{ EmbedLiveSample('Exemplo_Clipping', 360,290) }}</p> + +<p>O exemplo inclui um botão que você pode clicar para alterar o caminho do recorte <em>(clip-path) </em>e ver as alterações tomando efeito.</p> + +<h3 id="Exemplo_Filtering">Exemplo: Filtering</h3> + +<p>Esse exemplo demonstra como você pode aplicar o filtro HTML ao conteúdo usado no SVG. Isso estabelece vários filtros, que podem ser aplicados para uso de estilos que cada um dos três elementos dentro dos estados normal e <em>mouse hover</em>.</p> + +<p>Qualquer filtro SVG pode ser aplicado desse modo. Pode exemplo, para aplicar desfoque Gaussiano, você pode usar:</p> + +<pre class="brush: xml"><svg:filter id="f1"> + <svg:feGaussianBlur stdDeviation="3"/> +</svg:filter> +</pre> + +<p>Você pode também aplicar cor a matriz, como este:</p> + +<pre class="brush: xml"><svg:filter id="f2"> + <svg:feColorMatrix values="0.3333 0.3333 0.3333 0 0 + 0.3333 0.3333 0.3333 0 0 + 0.3333 0.3333 0.3333 0 0 + 0 0 0 1 0"/> +</svg:filter> +</pre> + +<p>Esses são só dois dos cinco filtros demonstrados nessa seção. Certifique-se de olhar o conteúdo do código ao final da seção se você quiser ver mais.</p> + +<p>Os cinco filtros são aplicados usando o seguinte CSS:</p> + +<pre class="brush: html"><style> + p.target { filter:url(#f3); } + p.target:hover { filter:url(#f5); } + b.target { filter:url(#f1); } + b.target:hover { filter:url(#f4); } + iframe.target { filter:url(#f2); } + iframe.target:hover { filter:url(#f3); } +</style> +</pre> + +<p><a class="button liveSample" href="/files/3329/filterdemo.xhtml">View this example live</a></p> + +<h3 id="Exemplo_Texto_Borrado">Exemplo: Texto Borrado</h3> + +<p>Para borrar um texto há um webkit baseado dos navegadores com o (prefixo) filtro CSS chamado blur. Você pode arquivar o mesmo efeito usando filtros SVG.</p> + +<pre class="brush: html"> <p class="blur">Time to clean my glasses</p> + <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> + <defs> + <filter id="wherearemyglasses" x="0" y="0"> + <feGaussianBlur in="SourceGraphic" stdDeviation="1" /> + </filter> + </defs> +</svg> +</pre> + +<p>Você pode aplicar o SVG e o filtro CSS na mesma classe:</p> + +<pre class="brush: css">.blur { + filter:url(#wherearemyglasses); + /* ^ for Firefox */ + -webkit-filter: blur(1px); + /* ^ Webkit browsers */ + filter: blur(1px); +}</pre> + +<p>{{ EmbedLiveSample('Exemplo_Texto_Burrado', '', '', '') }}</p> + +<p>Borrar é um efeito pesado, então assegure-se de usá-lo com moderação, especialmente quando há uma rolagem ou animação.</p> + +<h2 id="Usando_referências_externas">Usando referências externas</h2> + +<p>O elemento SVG vem sendo usado para clipping, masking, e mais pode ser carregado de um arquivo externo, contanto que seu documento venha da mesma origem da qual seu HTML está para fazer efeito.</p> + +<p>Por exemplo, se seu CSS está em um arquivo com nome <code>default.css</code>, esse pode parecer com isso:</p> + +<pre class="brush: css" id="line1">.target { clip-path: url(resources.svg#c1); }</pre> + +<p>O SVG é importado do arquivo com nome <code>resources.svg</code>, usando o clip-path com o ID c1.</p> + +<p><span style="font-size: 30.002px; letter-spacing: -1px; line-height: 30.002px;"><strong>Veja também</strong></span></p> + +<ul> + <li><a href="/en-US/docs/SVG" title="SVG">SVG</a></li> + <li><a class="external" href="http://robert.ocallahan.org/2008/06/applying-svg-effects-to-html-content_04.html">SVG Effects for HTML Content</a> (blog post)</li> + <li>(<a href="http://web.archive.org/web/20120512132948/https://developer.mozilla.org/web-tech/2008/10/10/svg-external-document-references/" title="Web Tech Blog » Blog Archive » SVG External Document References">[archive.org] Web Tech Blog » Blog Archive » SVG External Document References</a>)</li> +</ul> |