English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يستطيع خاصية المرشح في SVG تطبيق المرشح على أشكال SVG. يمكن أن تحدد المرشحات أي أجزاء من الشكل يمكن رؤيتها وأي شفافية لديها. يمكن اعتبار المرشح في SVG كنسخ متقدمة من مسار القطع.
هذا مثال بسيط على المرشح:
<svg width="500" height="120"> <defs> <mask id="mask1" x="0" y="0" width="100" height="100" > <rect x="0" y="0" width="100" height="50" style="stroke:none; fill: #ffffff"/> </mask> </defs> <rect x="1" y="1" width="100" height="100" style="stroke: none; fill: #0000ff; mask: url(#mask1)"/> </svg>اختبار لرؤية‹/›
يحدد هذا المثال مرشحًا باستخدام ID=mask1. يحتوي عنصر <mask> على عنصر <rect>. هو هذا العنصر <rect> الذي يحدد شكل المرشح.
يحدد هذا المثال أيضًا عنصر <rect> باستخدام mask. يستخدم عنصر <rect> خصائص style بتحديد مرشح داخلي باستخدام ID مرشح.
تأثير الصورة بعد تشغيلها:
لاحظ أن ارتفاع المربع الذي سيتم عرضه هو 100 بكسل، لكن 50 بكسل في الإتجاه العمودي مرئية. هذا بسبب أن مرشح المربع يكون عالٍ بـ 50 بكسل فقط. يظهر المربع فقط في الجزء الذي يغطيه مرشح المربع.
حجم المربع الأسود بالهوامش هو حجم المربع بدون مرشح.
يمكنك استخدام أي شكل SVG كمرشح. هذا مثال على استخدام دائرة كمرشح:
<svg> <defs> <mask id="mask2" x="0" y="0" width="100" height="100" > <circle cx="25" cy="25" r="25" style="stroke:none; fill: #ffffff"/> </mask> </defs> <rect x="1" y="1" width="100" height="100" style="stroke: none; fill: #0000ff; mask: url(#mask2)"/> </svg>اختبار لرؤية‹/›
تأثير الصورة بعد تشغيلها:
مرة أخرى، يمكن رؤية المربع المشار إليه بالماسك فقط في الأماكن المرئية للماسك الدائري.
حتى الآن، تم تعيين لون ملء شكل الماسك (دائرة أو مربع) إلى #ffffff. يتم تعريف لون شكل الماسك باستخدام شفافية شكل الماسك. كلما كان لون شكل الماسك أقرب إلى #ffffff (الأبيض)، كان الشكل المستخدم بالماسك أقل شفافية. كلما كان لون شكل الماسك أقرب إلى #000000 (الأسود)، كان الشكل المستخدم بالماسك أكثر شفافية.
هذا مثال حيث يتكون الماسك من مربعات بألوان مختلفة (#ffffff و #66666). يتم استخدام الماسك للشكل الواحد، لذا يمكنك استخدام الماسك لرؤية كيف يؤثر الشكلين المختلفين داخل الماسك على الشكل نفسه.
<svg width="500" height="120"> <defs> <mask id="mask3" x="0" y="0" width="100" height="100"> <rect x="0" y="0" width="100" height="50" style="stroke:none; fill: #ffffff"/> <rect x="0" y="50" width="100" height="50" style="stroke:none; fill: #666666"/> </mask> </defs> <text x="10" y="55" style="stroke: none; fill: #000000;"> هذا النص تحت المستطيل </text> <rect x="1" y="1" width="100" height="100" style="stroke: none; fill: #0000ff; mask: url(#mask3)"/> </svg>اختبار لرؤية‹/›
هذا المثال يحتوي أيضًا على نص موجود تحت المربع، يمكن رؤيته فقط من خلال جزء شفاف من الماسك الخاص بالمربع.
تأثير الصورة بعد تشغيلها:
إذا تم تطبيق التدرج على الشكل المستخدم كماسك، فإنه يمكن تحقيق شفافية التدرج للشكل الذي تم تطبيقه عليه.
هذا مثال على تعريف التدرج، باستخدام ماسك التدرج، باستخدام ماسك المربع وأيضاً النص تحت هذا المربع، لذا يمكنك رؤية كيف تتغير شفافية الماسك مع تدرج الماسك:
<svg width="500" height="120"> <defs> <linearGradient id="gradient1" x1="0%" y1="0%" x2="100%" y2="0%" spreadMethod="pad"> <stop offset="0%" stop-color="#ffffff" stop-opacity="1"/> <stop offset="100%" stop-color="#000000" stop-opacity="1"/> </linearGradient> <mask id="mask4" x="0" y="0" width="200" height="100"> <rect x="0" y="0" width="200" height="100" style="stroke:none; fill: url(#gradient1)"/> </mask> </defs> <text x="10" y="55" style="stroke: none; fill: #000000;"> هذا النص تحت المستطيل </text> <rect x="1" y="1" width="200" height="100" style="stroke: none; fill: #0000ff; mask: url(#mask4)"/> </svg>اختبار لرؤية‹/›
تأثير الصورة بعد تشغيلها:
يمكن دمج الستار المحدد بالتدرج مع تأثيرات أخرى (مثل النماذج الملونة). إليك مثال، حيث يستخدم المستطيل نماذج الملون كملء ويستخدم في ستاره تدرج:
<svg width="500" height="120"> <defs> <linearGradient id="gradient2" x1="0%" y1="0%" x2="100%" y2="0%" spreadMethod="pad"> <stop offset="0%" stop-color="#ffffff" stop-opacity="1"/> <stop offset="100%" stop-color="#000000" stop-opacity="1"/> </linearGradient> <pattern id="pattern2" x="10" y="10" width="20" height="20" patternUnits="userSpaceOnUse" > <circle cx="10" cy="10" r="10" style="stroke: none; fill: #0000ff; " /> </pattern> <mask id="mask6" x="0" y="0" width="200" height="100" > <rect x="0" y="0" width="200" height="100" style="stroke:none; fill: url(#gradient2)"/> </mask> </defs> <text x="10" y="55" style="stroke: none; fill: #000000;"> هذا النص تحت المستطيل </text> <rect x="1" y="1" width="200" height="100" style="stroke: none; fill: url(#pattern2); mask: url(#mask6)"/> </svg>اختبار لرؤية‹/›
لاحظ أن كيفية إشارة المستطيل إلى نموذج الملون في خصائص CSS الخاصة به وكيفية إشارة الستار إلى نموذج الستار.
تأثير الصورة بعد التشغيل.
يمكنك أيضًا استخدام نماذج الملون في الستار لجعل الشكل المطلوب من الشكل النموذج. إليك مثال:
<svg width="500" height="120"> <defs> <pattern id="pattern1" x="10" y="10" width="20" height="20" patternUnits="userSpaceOnUse" > <circle cx="10" cy="10" r="10" style="stroke: none; fill: #999999" /> </pattern> <mask id="mask5" x="0" y="0" width="200" height="100" > <rect x="0" y="0" width="200" height="100" style="stroke:none; fill: url(#pattern1)"/> </mask> </defs> <text x="10" y="55" style="stroke: none; fill: #000000;"> هذا النص تحت المستطيل </text> <rect x="1" y="1" width="200" height="100" style="stroke: none; fill: #0000ff; mask: url(#mask5)"/> </svg>اختبار لرؤية‹/›
تأثير الصورة بعد التشغيل. يرجى ملاحظة أن المستطيل الآن شفاف جزئي، حيث يتم رسم نمط التعبئة في دائرة، وفي أماكن أخرى شفاف تمامًا.