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

Miniprogramm zur Implementierung der Rechnerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Beginnen Sie CSS-Pseudoklassennamen nicht mit Zahlen

Wenn Neulinge Div+CSS entwickeln, müssen sie die ...

RGB-Farbtabellensammlung

RGB-Farbtabelle Farbe Englischer Name RGB 16 Farb...

Verstehen Sie die Implementierung des Nginx-Standortabgleichs in einem Artikel

Da das Team Front-End und Back-End trennt, überni...

Detaillierte Erläuterung des Nest.js-Hashing- und Verschlüsselungsbeispiels

0x0 Einführung Zunächst einmal: Was ist ein Hash-...

Der Unterschied zwischen Name und Wert im Eingabe-Tag

Typ ist das Steuerelement, das für die Eingabe und...

Zusammenfassung der XHTML-Tags auf Blockebene

* Adresse - Adresse * Blockzitat - Blockzitat * Mi...

Wann sollte eine Website Anzeigen schalten?

Als ich vor kurzem mit einem Internet-Veteranen ü...

Warum DOCTYPE HTML verwenden?

Sie wissen, dass der Browser ohne diese Option bei...

Implementierung der Navigationsleiste und des Dropdown-Menüs in CSS

1. CSS-Navigationsleiste (1) Funktion der Navigat...

So verwenden Sie vs2019 für die Linux-Remote-Entwicklung

Normalerweise gibt es bei der Entwicklung von Lin...

Ein Artikel zum Erlernen von CSS3-Bildrändern

Mit der CSS3-Eigenschaft „border-image“ können Si...