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

Detaillierte Erklärung und Beispiele der MySQL-Isolationsebene

Inhaltsverzeichnis 4 Isolationsebenen von MySQL E...

Detaillierte Erläuterung der Javascript-Wissenspunkte

Inhaltsverzeichnis 1. Grundlegende Einführung in ...

JavaScript-Array-Deduplizierungslösung

Inhaltsverzeichnis Methode 1: Set: Es handelt sic...

Detaillierte Analyse der MySQL MDL-Metadatensperre

Vorwort: Wenn Sie eine SQL-Anweisung in MySQL aus...

Analysieren Sie die Dauer von TIME_WAIT aus dem Linux-Quellcode

Inhaltsverzeichnis 1. Einleitung 2. Lassen Sie un...

So aktualisieren Sie CentOS7 auf CentOS8 (detaillierte Schritte)

Dieser Artikel erläutert anhand eines konkreten B...

Detaillierte Erläuterung der Vue-Formularbindung und -Komponenten

Inhaltsverzeichnis 1. Was ist bidirektionale Date...

Offlineinstallation von Centos7.2 mysql5.7.18.tar.gz

Aufgrund der Netzwerkisolation kann MySQL nicht m...

Techniken zur Optimierung von MySQL-Paging-Abfragen

In Anwendungen mit Paging-Abfragen sind Abfragen,...

Vue ruft die Computerkamera auf, um die Fotofunktion zu realisieren

In diesem Artikelbeispiel wird der spezifische Co...