Kort fortalt
- SVG feTurbulence er en filterprimitiv, der genererer Perlin-støj, som du kan bruge som korn, papir, skyer eller kilde til forvrængning.
- Attributten baseFrequency bestemmer støjens størrelse: høje værdier omkring 0,6 til 0,9 giver fint korn, og lave værdier omkring 0,01 til 0,05 giver store, bløde skyer.
- type="fractalNoise" laver blød, jævn støj, der passer til korn og papir, mens type="turbulence" laver skarpere, rillet støj, der passer til marmor og vand.
- En lille støjflise med stitchTiles="stitch", lagt over en gradient med lav opacitet, tilføjer tekstur og skjuler banding for meget lidt.
- feTurbulence er dyr at beregne over store flader, så tegn den én gang som en flise i stedet for at animere den i fuld skærm.
På denne side
SVG feTurbulence er en filterprimitiv, der fylder sit område med Perlin-støj. Alene er resultatet et felt af farvet sne; kombineret med andre primitiver bliver det til filmkorn, papirfibre, skyer, marmor eller en kilde til at forvrænge former. Du styrer den med fem attributter: type, baseFrequency, numOctaves, seed og stitchTiles. De fleste teksturer på moderne hjemmesider, også kornet på kornede gradienter, starter her.
<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300">
<filter id="noise">
<feTurbulence type="fractalNoise" baseFrequency="0.75" numOctaves="3" stitchTiles="stitch" />
</filter>
<rect width="100%" height="100%" filter="url(#noise)" />
</svg>Hvad hver attribut i feTurbulence gør
typeturbulence (standard) eller fractalNoiseEffekt
baseFrequencyVærdier
Effekt
numOctavesVærdier
Effekt
seedEt vilkårligt tal, standard 0Effekt
stitchTilesVærdier
noStitch (standard) eller stitchEffekt
baseFrequency er den, du vil røre mest ved. Den måles i cyklusser per brugerenhed, så 0.8 pakker detaljerne tæt sammen, og 0.02 strækker dem ud til langsomme skyer. To værdier, som baseFrequency="0.01 0.3", strækker støjen langs én akse, og sådan efterlignes børstet metal og træårer.
Ligner
Brug
Ligner
Brug
Ligner
Brug
Ligner
Brug
Ligner
Brug
type="fractalNoise"
- Blød, skyagtig, jævnt fordelt
- God til korn, papir og tåge
- Det sædvanlige valg til lag ovenpå
type="turbulence"
- Skarpere med mørke folder
- God til marmor, ild og vand
- Ser uroligt ud som lag over det hele
Opskrift: korn over en gradient
Det mest nyttige, feTurbulence gør, er at tilføje korn. En ren digital gradient får banding med synlige striber, især mørke gradienter; let støj bryder striberne op og får fladen til at føles trykt. Trinene: lav støjen, fjern dens farve, og læg den så over gradienten med lav styrke.
<svg xmlns="http://www.w3.org/2000/svg" width="240" height="240">
<filter id="grain" x="0" y="0" width="100%" height="100%">
<feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="3" stitchTiles="stitch" result="noise" />
<feColorMatrix in="noise" type="saturate" values="0" />
</filter>
<rect width="100%" height="100%" filter="url(#grain)" />
</svg>Gem den som grain.svg, eller indsæt den som data-URI, og gentag den så som flise i et pseudoelement over gradienten.
.hero {
position: relative;
isolation: isolate;
background: linear-gradient(160deg, #0f0b1e 0%, #312e81 55%, #6d28d9 100%);
}
.hero::after {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background-image: url("/grain.svg");
background-size: 240px;
opacity: 0.12;
mix-blend-mode: overlay;
pointer-events: none;
}linear-gradient(160deg, #0f0b1e 0%, #312e81 55%, #6d28d9 100%)Opskrift: papirtekstur
Papir er lavfrekvent støj, der bliver til relief af en lyskilde. feDiffuseLighting behandler støjen som et højdekort og belyser den fra én side, hvilket giver de bløde bakker i et ark bomuldspapir.
<filter id="paper" x="0" y="0" width="100%" height="100%">
<feTurbulence type="fractalNoise" baseFrequency="0.04" numOctaves="5" result="noise" />
<feDiffuseLighting in="noise" lighting-color="#f7f1ea" surfaceScale="2" result="lit">
<feDistantLight azimuth="45" elevation="60" />
</feDiffuseLighting>
<feBlend in="SourceGraphic" in2="lit" mode="multiply" />
</filter>Kombinér den med varme råhvide baggrunde. Baggrunde med papirtekstur har paletter, der passer til.
Opskrift: forvrængede kanter med feDisplacementMap
Støj kan også flytte pixels. feDisplacementMap læser støjen og forskyder hver pixel i kilden med op til scale enheder, hvilket giver håndtegnede linjer, smeltende tekst og krusninger i vand.
<filter id="wobble">
<feTurbulence type="turbulence" baseFrequency="0.02" numOctaves="2" seed="3" result="warp" />
<feDisplacementMap in="SourceGraphic" in2="warp" scale="10" xChannelSelector="R" yChannelSelector="G" />
</filter>
<text x="40" y="120" font-size="96" font-weight="700" filter="url(#wobble)">Wavy</text>Ydeevne og browseradfærd
feTurbulence virker i alle aktuelle browsere, men den beregnes på CPU’en i mange af dem, og omkostningen vokser med areal og oktaver. En flise på 240 pixels beregnes én gang og gentages, hvilket er billigt. Et filter i fuld skærm på et levende element genberegnes, hver gang elementet tegnes igen, hvilket kan være langsomt på telefoner.
- 1
Brug fliser
Tegn støjen i en lille SVG med
stitchTiles="stitch", og gentag den som baggrundsbillede. - 2
Hold oktaverne lave
numOctavesover 4 tilføjer sjældent synlige detaljer i kornstørrelse og koster hver gang. - 3
Undgå at animere den
Animation af
baseFrequencyellerseedtvinger en fuld genberegning i hvert billede. Flyt i stedet en statisk flise med en transform. - 4
Tjek begge temaer
Korn, der ser rigtigt ud på mørkt, kan se beskidt ud på lyst. Justér opaciteten per tema, som i gradienter til mørk tilstand.
En version af samme idé kun i CSS finder du i støjtekstur i CSS. Og vil du have korn helt uden at finjustere filtre, har hver Gradiently Mark sit eget korn og materiale som en del af opskriften, tegnet live i den størrelse, du designer i.
En Mark med korn bygget ind i overfladen. Støjen er en del af opskriften, så den har samme skala i alle størrelser.
Spørgsmål, folk stiller
Hvad gør feTurbulence i SVG?
Den genererer Perlin-støj i et SVG-filter. Du kan vise støjen direkte som tekstur eller sende den videre til andre primitiver som feColorMatrix, feDiffuseLighting eller feDisplacementMap.
Hvilken baseFrequency skal jeg bruge til korn?
Prøv 0,7 til 0,9 med type fractalNoise og tre oktaver til fint filmkorn. Lavere værdier giver større, blødere detaljer.
Hvad er forskellen på fractalNoise og turbulence?
fractalNoise er blød og jævn, god til korn og papir. turbulence har skarpere folder og passer til marmor-, ild- eller vandeffekter.
Hvorfor har min SVG-støj synlige samlinger, når den gentages som fliser?
Sæt stitchTiles="stitch" på feTurbulence, og sæt filterområdet til hele flisen med x, y, width og height, så kanterne passer, og der ikke opstår en blød kant.
Er feTurbulence langsom?
Det kan den være på store flader eller ved animation, fordi den genberegner støjen ved hver gentegning. En lille statisk flise gentaget som baggrund er billig.
Skrevet af Gradiently
Holdet bag Gradiently, et designværktøj bygget om Marks: levende gradienter, der får alt, du designer, til at ligne dig.
Se vores profil