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?
Inhaltsverzeichnis 4 Isolationsebenen von MySQL E...
Fehlermeldung: FEHLER 2002: Verbindung zum lokale...
Inhaltsverzeichnis 1. Grundlegende Einführung in ...
Inhaltsverzeichnis Methode 1: Set: Es handelt sic...
Vorwort: Wenn Sie eine SQL-Anweisung in MySQL aus...
Inhaltsverzeichnis 1. Einleitung 2. Lassen Sie un...
1. Führen Sie zuerst die Select-Anweisung aus, um...
Dieser Artikel erläutert anhand eines konkreten B...
Inhaltsverzeichnis 1. Was ist bidirektionale Date...
1. Erstellen Sie eine Tabelle CREATE TABLE `stude...
Über die Baumdarstellung von Vue wird im Projekt ...
Aufgrund der Netzwerkisolation kann MySQL nicht m...
In Anwendungen mit Paging-Abfragen sind Abfragen,...
Ursachen und Folgen 1. Wenn Sie den Ansible-Befeh...
In diesem Artikelbeispiel wird der spezifische Co...