קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ Typescript ♦ מדריך הטמעה של SVG כחלק מקוד פרויקט באנגולר

מדריך הטמעה של SVG כחלק מקוד פרויקט באנגולר

עידן יצחקי 28 בינואר 2022 אין תגובות

אחד היתרונות הגדולים של SVG הוא האפשרות לשנות לו את הצבע דרך CSS.

אבל כדי לעשות את זה, אנחנו צריכים שהוא יהיה מוטמע בתוך הקוד שלנו ולא כקובץ שמפנים אליו את ה-SRC.

אם נטמיע בכל רכיב שלנו בפרויקט את הקוד של ה-SVG הוא יראה מכוער ולא קל לתחזוקה.

אל דאגה! 🎃 בשביל זה אנחנו כאן.

ניצור קובץ או קבצים שיחזיקו את הקוד של ה-SVG וייצאו אותם כמשתנים

export const approve = `
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   width="30"
   height="30"
   viewBox="0 0 7.9374998 7.9375002"
   version="1.1">
  <title>approve</title>
  <defs/>
  <metadata>
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title>approve</dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g>
    <path
       d="M 1.7629193,4.2510784 0.57052571,3.8668785 3.1661113,7.4259435 7.4414062,0.28938802 3.1661113,5.7291038 Z"
       style="fill:inherit;stroke:inherit;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
  </g>
</svg>
`
export const cancel = `
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   width="30"
   height="30"
   viewBox="0 0 7.9374998 7.9375002"
   version="1.1">
  <title>approve</title>
  <defs/>
  <metadata>
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title>approve</dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g>
    <path
       d="M 1.7629193,4.2510784 0.57052571,3.8668785 3.1661113,7.4259435 7.4414062,0.28938802 3.1661113,5.7291038 Z"
       style="fill:inherit;stroke:inherit;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
  </g>
</svg>
`

מה עושים?

  1. מיצרים/מורידים/קונים מהרשת או כל מקור אחר, קובץ SVG.
  2. פותחים את הקובץ עם notepad ומעתיקים את התוכן שלו מהתגית הפותחת ועד הסוגרת של SVG
  3. מגדירים בקובץ שלנו משתנה, מחצינים אותו ומוסיפים את התוכן שהעתקנו בתוך backticks (הכפתור טילדה ~).
  4. יש למחוק מהקוד CLASS ו-ID
  5. בכל מקום שיש fill או stroke יש לשנות את הערך ל-inherit.

הרעיון הוא לבטל עיצוב פנימי של ה-SVG ולהפנות אותו להורשה מהמעטפת.

במקרה שלנו, שימו לב שיש 2 משתנים אבל העתקתי את אותו תוכן SVG, כך שיתקבל אותו אייקון אז להיבהל 😎

סיימנו לטפל בצד של ה-SVG, עכשיו אנחנו צריכים למשוך אותם לרכיבים ששם הם צריכים להופיע.

נראה רכיב לדוגמה

import { Component, OnInit } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import * as svgIcons from '../../../share/svgs/icons-svg';
@Component({
  selector: 'app-popup-slogan',
  templateUrl: './slogan-popup.component.html',
  styleUrls: ['./slogan-popup.component.scss']
})
export class SloganPopupComponent implements OnInit {
 cancel: SafeHtml;
 approve: SafeHtml;
 constructor(private sanitizer: DomSanitizer) {
    this.cancel = this.sanitizer.bypassSecurityTrustHtml(svgIcons.cancel);
    this.approve = this.sanitizer.bypassSecurityTrustHtml(svgIcons.approve);
 }
  
}

בצד ה-HTML

 <div class="action-wrapper">
   <button class="submit" type="button" (click)="onSave()" [disabled]="!form.valid">
     <span class="icon" [innerHtml]="approve"></span>אישור</button>
   <button class="cancel" type="button" (click)="onCancel()">
     <span class="icon" [innerHtml]="cancel"></span>ביטול</button>
 </div>

TS

שורה 2:

בגלל שיש לאנגולר מנגנון שהתפקיד שלו לסנן (למחוק) במקומות מסויימים תוים מסויימים כדי לשמור על האתר ולהקשות על פריצה או נזק , אנחנו צריכים להגיד לו שהמידע שיש במשתנה מסויים תקין.

אם לא נשתמש בזה, הוא ינסה ל-"נקות" את ה-SVG ובכך לגרום לא להפסיק לעבוד.

שורה 3:

נמשוך את כל המשתנים מהקובץ ונכניס אותם תחת משתנה בשם svgIcons או כל שם אחר שתרצו.

שורה 10-11:

יצרנו משתנים מסוג safeHtml

שורה 12:

מגדירים את DomSanitizer כדי שנוכל להשתמש בו

שורה 13-14:

מאכלסים את המשתנים שלנו עם הקוד של -SVG, שימו לב שאנחנו אומרים לאנגולר לא להפעיל את האבטחה על המשתנים האלו ובמילים אחרות, לקבל אותם כמו שהם ללא בדיקה.

חשוב להבין את זה ולא להשתמש בכל מקום בזה כדי לא לגרום לפירצת אבטחה באתר (בטח לא לעשות את זה על מידע שמגיע מהמשתמש או חשוף אליו).

HTML

שורה 3,5 :

אנחנו מזריקים את התוכן של המשתנים כ-HTML על מנת שהדפדפן יטפל בתגיות ולא יתיחס אליהם הטקסט פשוט.

סיימנו עם החלק המסובך וכל מה שנשאר הוא ה-CSS

  svg {
        width: 100%;
        height: 100%;
    }
 .icon {
        width: 20px;
        height: 20px;
        display: inline-block;
        fill: red;
        stroke: blue;
    }

אפשר לעשות שינויים ל-fill ול-stroke בדיוק כמו שהייתם עושים לכל תגית אחרת.

פוסטים קשורים:

תמונת אווירה של לוח שנהרכיבים: בניה של רכיב לוח שנה נגיש באנגולר סופר מחלףריבוי מודולים באנגולר תמונת אווירה של מעבר דגיטלימדריך אנימציות באנגולר – מתקדם תמונת אווירה של ניתוח נתוניםמדריך PWA באנגולר
svg אנגולר מדריך אנגולר

אודות המחבר

עידן יצחקי להציג את כל הפוסטים של עידן יצחקי


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד