aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/svg/applying_svg_effects_to_html_content
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
commit074785cea106179cb3305637055ab0a009ca74f2 (patch)
treee6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/web/svg/applying_svg_effects_to_html_content
parentda78a9e329e272dedb2400b79a3bdeebff387d47 (diff)
downloadtranslated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz
translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2
translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip
initial commit
Diffstat (limited to 'files/ru/web/svg/applying_svg_effects_to_html_content')
-rw-r--r--files/ru/web/svg/applying_svg_effects_to_html_content/index.html234
1 files changed, 234 insertions, 0 deletions
diff --git a/files/ru/web/svg/applying_svg_effects_to_html_content/index.html b/files/ru/web/svg/applying_svg_effects_to_html_content/index.html
new file mode 100644
index 0000000000..db88faea3f
--- /dev/null
+++ b/files/ru/web/svg/applying_svg_effects_to_html_content/index.html
@@ -0,0 +1,234 @@
+---
+title: Применение эффектов SVG к содержимому HTML
+slug: Web/SVG/Applying_SVG_effects_to_HTML_content
+translation_of: Web/SVG/Applying_SVG_effects_to_HTML_content
+---
+<p>Современные браузеры поддерживают <a href="/en-US/docs/SVG">SVG</a> в стилях <a href="/en-US/docs/Web/CSS" title="Cascading Style Sheets">CSS</a> для применения графических эффектов к HTML-контенту.</p>
+
+<p>Вы можете указать SVG в стилях как внутри одного документа, так и из внешней таблицы стилей. Есть 3 свойства, которые вы можете использовать: <a href="/en-US/docs/Web/CSS/mask"><code>mask</code></a>, <a href="/en-US/docs/Web/CSS/clip-path"><code>clip-path</code></a>, и <a href="/en-US/docs/Web/CSS/filter"><code>filter</code></a>. </p>
+
+<div class="note"><strong>Примечание:</strong> Ссылки на SVG во внешних файлах должны быть в том же самом источнике <a href="/en-US/docs/Web/Security/Same-origin_policy">same origin</a> , что и ссылочный документ.</div>
+
+<h2 id="Использование_встроенного_SVG">Использование встроенного SVG</h2>
+
+<p>Чтобы применить эффект SVG с использованием стилей CSS, вам нужно сначала создать стиль CSS, который ссылается на SVG. </p>
+
+<pre class="brush: html">&lt;style&gt;p { mask: url(#my-mask); }&lt;/style&gt;
+</pre>
+
+<p>В приведенном выше примере все параграфы маскируются с помощью <a href="/en-US/docs/Web/SVG/Element/mask">SVG</a> <a href="/en-US/docs/Web/SVG/Element/mask"><code>&lt;mask&gt;</code></a>  с <a href="/en-US/docs/Web/HTML/Global_attributes/id">ID</a> <code>my-mask</code>. </p>
+
+<h3 id="Пример_маскировка">Пример: маскировка</h3>
+
+<p>Например, вы можете сделать градиентную маску для содержимого HTML, используя код SVG и CSS, похожий на следующий, внутри вашего документа HTML:</p>
+
+<pre class="brush: html">&lt;svg height="0"&gt;
+ &lt;mask id="mask-1"&gt;
+ &lt;linearGradient id="gradient-1" y2="1"&gt;
+ &lt;stop stop-color="white" offset="0"/&gt;
+ &lt;stop stop-opacity="0" offset="1"/&gt;
+ &lt;/linearGradient&gt;
+ &lt;circle cx="0.25" cy="0.25" r="0.25" id="circle" fill="white"/&gt;
+ &lt;rect x="0.5" y="0.2" width="300" height="100" fill="url(#gradient-1)"/&gt;
+ &lt;/mask&gt;
+&lt;/svg&gt;
+</pre>
+
+<pre class="brush: css">.target {
+ mask: url(#mask-1);
+}
+p {
+ width: 300px;
+ border: 1px solid #000;
+ display: inline-block;
+}</pre>
+
+<p>Обратите внимание, что в CSS маска указана с использованием URL-адреса ID- <code>#mask-1</code>, которая является идентификатором маски SVG, указанной ниже. Все остальное указывает подробности о самой маске градиента.</p>
+
+<p>Применение SVG-эффекта к (X) HTML выполняется путем назначения <code>target</code> классу, определенному выше элементу, например:</p>
+
+<pre class="brush: html">&lt;p class="target" style="background:lime;"&gt;
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam.
+&lt;/p&gt;
+&lt;p&gt;
+ Lorem ipsum dolor sit amet, consectetur adipisicing
+ &lt;b class="target"&gt;elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua.&lt;/b&gt;
+ Ut enim ad minim veniam.
+&lt;/p&gt;
+</pre>
+
+<p>Вышеприведенный пример будет отображаться с помощью маски, применяемой к нему.</p>
+
+<p>{{EmbedLiveSample('Example_Masking', 650, 200)}}</p>
+
+<h3 id="Пример_обрезание">Пример: обрезание</h3>
+
+<p>Этот пример демонстрирует использование SVG для клипа содержимого HTML. Обратите внимание, что даже кликаемые области для ссылок обрезаются.</p>
+
+<pre class="brush: html">&lt;p class="target" style="background:lime;"&gt;
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam.
+&lt;/p&gt;
+&lt;p&gt;
+ Lorem ipsum dolor sit amet, consectetur adipisicing
+ &lt;b class="target"&gt;elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua.&lt;/b&gt;
+ Ut enim ad minim veniam.
+&lt;/p&gt;
+
+&lt;button onclick="toggleRadius()"&gt;Toggle radius&lt;/button&gt;
+
+&lt;svg height="0"&gt;
+ &lt;clipPath id="clipping-path-1" clipPathUnits="objectBoundingBox"&gt;
+ &lt;circle cx="0.25" cy="0.25" r="0.25" id="circle"/&gt;
+ &lt;rect x="0.5" y="0.2" width="0.5" height="0.8"/&gt;
+ &lt;/clipPath&gt;
+&lt;/svg&gt;
+</pre>
+
+<pre class="brush: css">.target {
+ clip-path: url(#clipping-path-1);
+}
+p {
+ width: 300px;
+ border: 1px solid #000;
+ display: inline-block;
+}</pre>
+
+<p>Это устанавливает область отсечения, образованную из круга и прямоугольника, присваивает ему ID <code>#clipping-path-1</code>, а затем ссылается на него в CSS. Путь клипа может быть назначен любому элементу с <code>target</code> классом.</p>
+
+<p>Вы можете вносить изменения в SVG в реальном времени, и они сразу же повлияют на рендеринг HTML. Например, вы можете изменить размер круга в указанном выше пути клипа:</p>
+
+<pre class="brush: js">function toggleRadius() {
+ var circle = document.getElementById("circle");
+  circle.r.baseVal.value = 0.40 - circle.r.baseVal.value;
+}
+</pre>
+
+<p>{{EmbedLiveSample('Example_Clipping', 650, 200)}}</p>
+
+<h3 id="Пример_Фильтрация">Пример: Фильтрация</h3>
+
+<p>Это демонстрирует применение фильтра к содержимому HTML с помощью SVG. Он устанавливает несколько фильтров, которые применяются с CSS к трем элементам как в нормальном состоянии, так и при <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:hover">hover</a> мыши.</p>
+
+<pre class="brush: html">&lt;p class="target" style="background: lime;"&gt;
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam.
+&lt;/p&gt;
+&lt;pre class="target"&gt;lorem&lt;/pre&gt;
+&lt;p&gt;
+ Lorem ipsum dolor sit amet, consectetur adipisicing
+ &lt;b class="target"&gt;elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua.&lt;/b&gt;
+ Ut enim ad minim veniam.
+&lt;/p&gt;
+</pre>
+
+<p>Любой SVG-фильтр может применяться таким образом. Например, чтобы применить эффект размытия, вы можете использовать:</p>
+
+<pre class="brush: html">&lt;svg height="0"&gt;
+ &lt;filter id="f1"&gt;
+ &lt;feGaussianBlur stdDeviation="3"/&gt;
+ &lt;/filter&gt;
+&lt;/svg&gt;</pre>
+
+<p>Вы также можете применить цветовую матрицу:</p>
+
+<pre class="brush: html">&lt;svg height="0"&gt;
+ &lt;filter id="f2"&gt;
+ &lt;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"/&gt;
+ &lt;/filter&gt;
+&lt;/svg&gt;
+</pre>
+
+<p>И ещё несколько фильтров:</p>
+
+<pre class="brush: html"><span>&lt;svg height="0"&gt;
+</span> &lt;filter id="f3"&gt;
+  &lt;feConvolveMatrix filterRes="100 100" style="color-interpolation-filters:sRGB"
+    order="3" kernelMatrix="0 -1 0   -1 4 -1   0 -1 0" preserveAlpha="true"/&gt;
+  &lt;/filter&gt;
+ &lt;filter id="f4"&gt;
+  &lt;feSpecularLighting surfaceScale="5" specularConstant="1"
+                     specularExponent="10" lighting-color="white"&gt;
+   &lt;fePointLight x="-5000" y="-10000" z="20000"/&gt;
+  &lt;/feSpecularLighting&gt;
+ &lt;/filter&gt;
+ &lt;filter id="f5"&gt;
+   &lt;feColorMatrix values="1 0 0 0 0
+                           0 1 0 0 0
+                           0 0 1 0 0
+                           0 1 0 0 0" style="color-interpolation-filters:sRGB"/&gt;
+ &lt;/filter&gt;
+<span>&lt;/svg&gt;</span></pre>
+
+<p>Пять фильтров применяются с использованием следующего CSS:</p>
+
+<pre class="brush: css">p.target { filter:url(#f3); }
+p.target:hover { filter:url(#f5); }
+b.target { filter:url(#f1); }
+b.target:hover { filter:url(#f4); }
+pre.target { filter:url(#f2); }
+pre.target:hover { filter:url(#f3); }
+</pre>
+
+<p>{{EmbedLiveSample('Example_Filtering', 650, 200)}}</p>
+
+<p style="display: none;"><a class="button liveSample" href="/files/3329/filterdemo.xhtml">View this example live</a></p>
+
+<h3 id="Пример_размытый_текст">Пример: размытый текст</h3>
+
+<p>Чтобы размыть текст, браузеры, основанные на Webkit, имеют (префиксный) CSS-фильтр, называемый blur (см. Также <a href="/en-US/docs/Web/CSS/filter#blur%28%29_2">CSS filter</a>). Вы можете добиться такого же эффекта, используя фильтры SVG.</p>
+
+<pre class="brush: html">&lt;p class="blur"&gt;Time to clean my glasses&lt;/p&gt;
+&lt;svg height="0"&gt;
+ &lt;defs&gt;
+ &lt;filter id="wherearemyglasses" x="0" y="0"&gt;
+ &lt;feGaussianBlur in="SourceGraphic" stdDeviation="1"/&gt;
+ &lt;/filter&gt;
+ &lt;/defs&gt;
+&lt;/svg&gt;
+</pre>
+
+<p>Вы можете применить SVG и CSS-фильтр в том же классе:</p>
+
+<pre class="brush: css">.blur { filter: url(#wherearemyglasses); }</pre>
+
+<p>{{ EmbedLiveSample('Example_Blurred_Text', 300, 100) }}</p>
+
+<p>Размытие является сложным вычислением, поэтому используйте его экономно, особенно в элементах, которые прокручиваются или анимируются.</p>
+
+<h3 id="Пример_текстовые_эффекты">Пример: текстовые эффекты</h3>
+
+<p>Эффекты SVG также могут использоваться для большей динамики и гибкого подхода к добавлению текста по сравнению с простым текстом HTML.</p>
+
+<p>Создавая текст с использованием элементов SVG в сочетании с HTML, достигаются различные текстовые эффекты. Можно повернуть текст:</p>
+
+<pre class="brush: html">&lt;svg height="60" width="200"&gt;
+  &lt;text x="0" y="15" fill="blue" transform="rotate(30 20,50)"&gt;Пример текста&lt;/text&gt;
+&lt;/svg&gt;
+</pre>
+
+<h2 id="Использование_внешних_ссылок">Использование внешних ссылок</h2>
+
+<p>SVG, используемый для отсечения, маскировки и фильтрации, может быть загружен из внешнего источника, если этот источник исходит из того же источника, что и документ HTML, к которому он применяется.</p>
+
+<p>For example, if your CSS is in a file namedit can look like this: <br>
+ Например, если ваш CSS находится в файле с именем <code>default.css</code>, он может выглядеть следующим образом:</p>
+
+<pre class="brush: css" id="line1">.target { clip-path: url(resources.svg#c1); }</pre>
+
+<p>Затем SVG импортируется из файла с именем <code>resources.svg</code>, используя путь клипа с ID <code>c1</code>. </p>
+
+<h2 id="Смотрите_также">Смотрите также</h2>
+
+<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 для HTML-контента</a> (запись в блоге)</li>
+ <li><del><a class="external" href="/web-tech/2008/10/10/svg-external-document-references">SVG External Document References</a></del> (запись в блоге) (<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 »Архив блога» Ссылки на внешние документы SVG</a>) </li>
+</ul>