React realisiert den gesamten Prozess des Seitenwasserzeicheneffekts

React realisiert den gesamten Prozess des Seitenwasserzeicheneffekts

Vorwort

1. 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. Anwendungsbeispiele

React 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 Wasserzeichenbild
  • Verteilen Sie das Wasserzeichenbild über den gesamten Container
  • Wasserzeichenkomponente: unterstützt Inhaltsslot für Unterkomponenten

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. Komponentencode

React 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

Zusammenfassen

Dies 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?

Artikel empfehlen

Vue implementiert eine Scroll-Ladetabelle

Inhaltsverzeichnis Ergebnisse erzielen Wissensres...

Stil-Trigger-Effekt des Webseiten-Eingabefelds

<br />Dieses Beispiel untersucht hauptsächli...

uniapp implementiert Datums- und Zeitauswahl

In diesem Artikelbeispiel wird der spezifische Co...

Eine kurze Analyse der Verwendung der Zero-Copy-Technologie in Linux

In diesem Artikel werden mehrere wichtige Zero-Co...

MySQL-String-Aufteilungsvorgang (String-Abfangen mit Trennzeichen)

String-Extraktion ohne Trennzeichen Fragenanforde...

Detaillierte Erläuterung der Fallstricke des Nginx-Proxy-Socket.io-Dienstes

Inhaltsverzeichnis Nginx fungiert als Proxy für z...

Detaillierte Analyse des temporären JDBC- und MySQL-Tablespace

Hintergrund Temporäre Tablespaces werden verwende...

Schritte zum Übertragen von Dateien und Ordnern zwischen zwei Linux-Servern

Heute habe ich mich mit der Migration eines Proje...

Warum funktioniert Ihre Größe: 100 % nicht?

Warum funktioniert Ihre Größe: 100 % nicht? Diese...