Vorwort1. Warum SVG statt Cavans wählen? Denn Cavans muss seine Breite und Höhe auf hochauflösenden Bildschirmen entsprechend dem DevicePixelRatio anpassen, sonst wird es unscharf. SVG ist ein Vektorbild, das nativ verschiedene Auflösungen unterstützt und keine Unschärfe verursacht. 1. AnwendungsbeispieleReact von „react“ importieren ReactDOM von „react-dom“ importieren importiere './index.css' Importieren Sie WaterMarkContent aus „./components/WaterMarkContent“. App aus „./App“ importieren ReactDOM.render( <Reagieren.StrictMode> <Wasserzeicheninhalt> <App /> </Wasserzeicheninhalt> </React.StrictMode>, document.getElementById('root') ) 2. Implementierungsprozess
Erstellen Sie ein SVG-Wasserzeichenbild const { text = 'Wasserzeichen', Schriftgröße = 16, Füllopacity = '0,2', Füllfarbe = '#000' } = Requisiten const res = ` <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="180px" height="180px" viewBox="0 0 180 180"> <text x="-100" y="-30" füllen='${fillColor}' transformieren = "drehen(-35 220 -220)" füllen-opacity='${fillOpacity}' Schriftgröße='${fontSize}'> ${text}</text> </svg>` Aus dem obigen Code können wir einen SVG-XML-String abrufen und ihn dann in eine URL-Ressource umwandeln. const blob = neuer Blob([res], { Typ: 'image/svg+xml', }) const url = URL.createObjectURL(blob) So erhalten wir eine SVG-Ressourcenadresse und verwenden sie nun als Hintergrundbild des Div <div Stil={{ Position: 'absolut', Breite: '100%', Höhe: '100%', Hintergrundbild: `url(${url})`, oben: 0, links: 0, zIndex: 999, pointerEvents: 'none', //durchklicken}} ></div> An diesem Punkt haben wir problemlos ein mit Wasserzeichen bedecktes Div erhalten. Als Nächstes integrieren wir den Code und kapseln ihn in eine Komponente ein. 3. KomponentencodeReact von „react“ importieren importiere { ReactNode, useMemo } von 'react' Typ svgPropsType = { Text?: Zeichenfolge Schriftgröße?: Zahl fillOpacity?: Zahl Füllfarbe?: Zeichenfolge } const SvgTextBg = (props: svgPropsType) => { const { text = 'Wasserzeichen', Schriftgröße = 16, Füllopacity = '0,2', Füllfarbe = '#000' } = Requisiten const res = ` <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="180px" height="180px" viewBox="0 0 180 180"> <text x="-100" y="-30" füllen='${fillColor}' transformieren = "drehen(-35 220 -220)" füllen-opacity='${fillOpacity}' Schriftgröße='${fontSize}'> ${text}</text> </svg>` const blob = neuer Blob([res], { Typ: 'image/svg+xml', }) const url = URL.createObjectURL(blob) zurückkehren ( <div Stil={{ Position: 'absolut', Breite: '100%', Höhe: '100%', Hintergrundbild: `url(${url})`, oben: 0, links: 0, zIndex: 999, pointerEvents: 'none', //durchklicken}} ></div> ) } Typ Requisitentyp = { Kinder?: ReactNode } & Teilweise<svgPropsType> const WaterMarkContent = (Eigenschaften: Eigenschaftstyp) => { const { Text, Schriftgröße, Füllopacity, Füllfarbe } = Requisiten const memoInfo = useMemo( () => ({ Text, Schriftgröße, Füllopacity, Füllfarbe, }), [Text, Schriftgröße, Füllopacity, Füllfarbe] ) zurückkehren ( <div Stil={{ Position: 'relativ', Breite: '100%', Höhe: ' 100%' }}> {props.children} <SvgTextBg {...memoInfo} /> </div> ) } Standard-Wasserzeicheninhalt exportieren ZusammenfassenDies ist das Ende dieses Artikels über die Verwendung von React zum Erzielen von Seitenwasserzeicheneffekten. Weitere Informationen zur Verwendung von React zum Erzielen von Seitenwasserzeicheneffekten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! |
<<: Lösung für das Problem des wiederholten Auftauchens des Nachrichten-Popup-Fensters von Element
>>: Wie installiert und verbindet man Navicat in MySQL 8.0.20 und worauf muss man achten?
In diesem Artikelbeispiel wird der spezifische Co...
Wenn Neulinge Div+CSS entwickeln, müssen sie die ...
RGB-Farbtabelle Farbe Englischer Name RGB 16 Farb...
Da das Team Front-End und Back-End trennt, überni...
Kürzlich wurde auf Unternehmensseite gemeldet, da...
0x0 Einführung Zunächst einmal: Was ist ein Hash-...
Typ ist das Steuerelement, das für die Eingabe und...
* Adresse - Adresse * Blockzitat - Blockzitat * Mi...
Als ich vor kurzem mit einem Internet-Veteranen ü...
Heute ist mir ein Problem aufgefallen: Der Inhalt ...
Sie wissen, dass der Browser ohne diese Option bei...
1. CSS-Navigationsleiste (1) Funktion der Navigat...
Wenn hier ein <input type="image">...
Normalerweise gibt es bei der Entwicklung von Lin...
Mit der CSS3-Eigenschaft „border-image“ können Si...