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 Ergebnisse erzielen Wissensres...
Vorwort Ein Docker-Image besteht aus einer Docker...
Nachdem die Docker-Installation auf der CentOS-Ma...
<br />Dieses Beispiel untersucht hauptsächli...
In diesem Artikelbeispiel wird der spezifische Co...
Finden Sie das Problem Als ich mich kürzlich über...
In diesem Artikel werden mehrere wichtige Zero-Co...
Problembeschreibung: Die Netzwerkkartendatei /etc...
String-Extraktion ohne Trennzeichen Fragenanforde...
Inhaltsverzeichnis Nginx fungiert als Proxy für z...
Hintergrund Temporäre Tablespaces werden verwende...
In diesem Artikel finden Sie das grafische Tutori...
Heute habe ich mich mit der Migration eines Proje...
Problembeschreibung Bei Verwendung von Windows Se...
Warum funktioniert Ihre Größe: 100 % nicht? Diese...