Marknaden
Priser
Logga inKom igång
FältguidenCSS och webb
CSS och webb

SVG feTurbulence: brus-, korn- och texturfilter

En enda filterprimitiv ger nästan varje textur på webben: korn över en gradient, papper bakom ett kort, ett vingel på en kant. Så fungerar varje attribut, med recept som funkar.

GradientlyVerifierat Gradiently-konto·1 oktober 2026·5 minuters läsning
Omslag: Sapphire Casino · GR·N417·BV

Kortversionen

  • SVG feTurbulence är en filterprimitiv som skapar Perlin-brus, och det kan du använda som korn, papper, moln eller som källa för förskjutning.
  • Attributet baseFrequency styr brusets storlek: höga värden kring 0,6 till 0,9 ger fint korn och låga värden kring 0,01 till 0,05 ger stora mjuka moln.
  • type="fractalNoise" ger mjukt, jämnt brus som passar korn och papper, medan type="turbulence" ger skarpare, böljande brus som passar marmor och vatten.
  • En liten bruspanel med stitchTiles="stitch", lagd över en gradient med låg opacitet, ger textur och döljer bandning till en mycket liten kostnad.
  • feTurbulence är dyrt att beräkna över stora ytor, så rendera det en gång som en panel i stället för att animera det i helskärm.
På den här sidan
Vad varje feTurbulence-attribut görRecept: korn över en gradientRecept: papperstexturRecept: förvrängda kanter med feDisplacementMapPrestanda och webbläsarbeteende

SVG feTurbulence är en filterprimitiv som fyller sitt område med Perlin-brus. Ensamt blir resultatet ett fält av färgat statiskt brus, men tillsammans med andra primitiver blir det filmkorn, pappersfibrer, moln, marmor eller en källa för att förvrida former. Du styr det med fem attribut: type, baseFrequency, numOctaves, seed och stitchTiles. De flesta texturer på moderna webbplatser, bland annat kornet i korniga gradienter, börjar här.

html
<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>
Minimum: ett filter som skapar brus, applicerat på en rektangel. Resultatet är flerfärgat brus tills du tar bort färgen.

Vad varje feTurbulence-attribut gör

typeturbulence (standard) eller fractalNoise

Effekt

Böljande och skarpt, eller mjukt och jämnt
baseFrequency

Värden

Ett tal, eller två för x och y

Effekt

Lägre värde ger större detaljer
numOctaves

Värden

Heltal, standard 1

Effekt

Lager av finare detaljer, kostar prestanda
seedValfritt tal, standard 0

Effekt

Ett annat slumpmässigt mönster
stitchTiles

Värden

noStitch (standard) eller stitch

Effekt

Jämnar ut kanterna så att paneler upprepas rent
AttributVärdenEffekt
typeturbulence (standard) eller fractalNoiseBöljande och skarpt, eller mjukt och jämnt
baseFrequencyEtt tal, eller två för x och yLägre värde ger större detaljer
numOctavesHeltal, standard 1Lager av finare detaljer, kostar prestanda
seedValfritt tal, standard 0Ett annat slumpmässigt mönster
stitchTilesnoStitch (standard) eller stitchJämnar ut kanterna så att paneler upprepas rent
De fem attributen. Ändra ett i taget medan du justerar, eftersom de påverkar varandra.

baseFrequency är det du kommer att röra mest. Det mäts i perioder per användarenhet, så 0.8 packar detaljerna tätt och 0.02 sträcker ut dem till långsamma moln. Två värden, till exempel baseFrequency="0.01 0.3", sträcker ut bruset längs en axel, och så fejkar man borstad metall och träådring.

0,8 till 0,9

Ser ut som

Fint filmkorn

Användning

Överlägg på gradienter och foton
0,5 till 0,7

Ser ut som

Synligt korn, riso

Användning

Affischer, redaktionella sidor
0,15 till 0,3

Ser ut som

Grov spräcklighet, betong

Användning

Bakgrunder, sten
0,02 till 0,05

Ser ut som

Moln, rök

Användning

Pappersfibrer, mjukt ljus
0,005 till 0,01

Ser ut som

Stora långsamma vågor

Användning

Förskjutning, marmor
baseFrequencySer ut somAnvändning
0,8 till 0,9Fint filmkornÖverlägg på gradienter och foton
0,5 till 0,7Synligt korn, risoAffischer, redaktionella sidor
0,15 till 0,3Grov spräcklighet, betongBakgrunder, sten
0,02 till 0,05Moln, rökPappersfibrer, mjukt ljus
0,005 till 0,01Stora långsamma vågorFörskjutning, marmor
Utgångspunkter för en panel som är cirka 300 pixlar bred. Bruset skalas med SVG:n, så en panel som ritas större ser grövre ut.

type="fractalNoise"

  • Mjukt, molnlikt, jämnt fördelat
  • Bra till korn, papper och dimma
  • Det vanliga valet för överlägg

type="turbulence"

  • Skarpare med mörka veck
  • Bra till marmor, eld och vatten
  • Ser rörigt ut som helt överlägg

Recept: korn över en gradient

Det mest användbara feTurbulence gör är att lägga till korn. En ren digital gradient delas upp i synliga ränder, särskilt mörka, och lätt brus bryter upp de ränderna så att ytan känns tryckt. Stegen: skapa bruset, ta bort dess färg och lägg det över gradienten med låg styrka.

html
<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>
feColorMatrix med saturate 0 gör bruset grått. Om du sätter filterområdet till hela rektangeln undviker du en mjuk ram.

Spara det som grain.svg eller lägg in det som en data-URI och upprepa det sedan i ett pseudoelement ovanför gradienten.

css
.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;
}
Blandningslägena overlay och soft light behåller gradientens färg och lägger bara till textur. Börja med 0,08 till 0,15 i opacitet och bedöm resultatet i helskärm.
Grunden under kornetlinear-gradient(160deg, #0f0b1e 0%, #312e81 55%, #6d28d9 100%)
Mörkvioletta gradienter som den här är där bandning syns mest, och det är precis där kornet gör nytta. Mer om orsaken i bandning i gradienter.

Recept: papperstextur

Papper är lågfrekvent brus som en ljuskälla förvandlar till relief. feDiffuseLighting behandlar bruset som en höjdkarta och belyser det från ena sidan, vilket ger de mjuka kullarna på ett ark bomullspapper.

html
<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>
Höj surfaceScale för ett grövre ark, sänk elevation för ett strykande ljus som överdriver varje fiber.

Para ihop det med varma off-white-bottnar. Bakgrunder med papperstextur har paletter som passar.

Recept: förvrängda kanter med feDisplacementMap

Brus kan också flytta pixlar. feDisplacementMap läser bruset och förskjuter varje pixel i källan med upp till scale enheter, vilket ger handritade linjer, smältande text och böljande vatten.

html
<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>
En skala på 4 till 12 ser handgjord ut. Över 30 blir källan oigenkännlig. Ändra seed för att få ett annat vingel.

Text förblir text

Filtrerad SVG-text är fortfarande riktig text, så den går att markera och läsas upp av skärmläsare. Håll förvrängningen diskret på allt som folk behöver kunna läsa.

Prestanda och webbläsarbeteende

feTurbulence fungerar i alla aktuella webbläsare, men beräknas på processorn i många av dem och kostnaden växer med ytan och antalet oktaver. En panel på 240 pixlar beräknas en gång och upprepas, vilket är billigt. Ett helskärmsfilter på ett levande element räknas om varje gång elementet målas om, och det kan gå långsamt på mobiler.

  1. 1

    Gör en panel

    Rendera bruset i en liten SVG med stitchTiles="stitch" och upprepa det som bakgrundsbild.

  2. 2

    Håll oktaverna låga

    numOctaves över 4 ger sällan synliga detaljer i kornstorlek och kostar varje gång.

  3. 3

    Undvik att animera det

    Om du animerar baseFrequency eller seed tvingas en full omräkning varje bildruta. Flytta i stället en statisk panel med en transform.

  4. 4

    Kontrollera båda teman

    Korn som ser rätt ut på mörkt kan se smutsigt ut på ljust. Justera opaciteten per tema, som i gradienter i mörkt läge.

För en variant med enbart CSS av samma idé, se CSS-brustextur. Och om du vill ha korn utan att justera filter alls bär varje Mark från Gradiently sitt eget korn och material som en del av sitt recept, renderat live i vilken storlek du än designar.

Korn, inte bländning.
Fint brus över en djup gradient

En Mark med korn inbyggt i ytan. Bruset är en del av receptet, så det behåller samma skala i varje storlek.

Hitta en gradient som bara är din

Bläddra bland tusentals Marks, designa med vilken som helst av dem utan kostnad och säkra den som känns som du.

Utforska Marknaden

Vanliga frågor

Vad gör feTurbulence i SVG?

Det skapar Perlin-brus i ett SVG-filter. Du kan visa bruset direkt som textur eller mata in det i andra primitiver som feColorMatrix, feDiffuseLighting eller feDisplacementMap.

Vilken baseFrequency ska jag använda för korn?

Prova 0,7 till 0,9 med type fractalNoise och tre oktaver för fint filmkorn. Lägre värden ger större, mjukare detaljer.

Vad är skillnaden mellan fractalNoise och turbulence?

fractalNoise är mjukt och jämnt, bra till korn och papper. turbulence har skarpare veck och passar för marmor-, eld- eller vatteneffekter.

Varför syns skarvar i mitt SVG-brus när det upprepas?

Sätt stitchTiles="stitch" på feTurbulence och sätt filterområdet till hela panelen med x, y, width och height, så att kanterna möts och ingen mjuk ram syns.

Är feTurbulence långsamt?

Det kan vara det på stora ytor eller när det animeras, eftersom bruset räknas om vid varje ommålning. En liten statisk panel som upprepas som bakgrund är billig.

Dela den här guiden

Skriven av GradientlyVerifierat Gradiently-konto

Teamet bakom Gradiently, ett designverktyg byggt kring Marks: levande gradienter som får allt du gör att kännas som ditt.

Se vår profil

På den här sidan

Vad varje feTurbulence-attribut görRecept: korn över en gradientRecept: papperstexturRecept: förvrängda kanter med feDisplacementMapPrestanda och webbläsarbeteende

Dela den här guiden

Nästa i CSS och webb

Meshgradienter i SVG: vad som fungerar i dag

Läs vidare

Alla guider om CSS och webb
Gradienter

Korniga gradienter: därför får lite brus färg att se dyr ut

5 minuters läsning

En ren gradient ser ut som en skärmstandard. Samma gradient med ett fint lager korn ser ut som ett tryck, en filmruta eller en målad vägg. Här är varför, hur mycket du ska lägga till och hur du gör det.

CSS och webb

Brustextur i CSS: lägg korn på gradienter med SVG

5 minuters läsning

Ett svagt lager brus döljer banding och får platt skärmfärg att kännas som tryck eller film. Här är SVG-filtret bakom det, finjusterat och redo att klistra in.

Gradienter

Därför har din gradient ränder, och så åtgärdar du bandning

5 minuters läsning

Du gjorde en jämn gradient och den blev randig. Det är bandning, och den har en enkel orsak och en handfull pålitliga lösningar. Här är räkneexemplet, sedan botemedlen.

Hitta looken som bara är din.

Varje Mark är en levande bakgrund med en enda ägare. Prova en ledig Mark och säkra din när det känns rätt.

Börja designa

Kontrollera ett certifikat

Skriv ett certifikatnummer eller en Marks kod för att se vem som äger den.

Fungerar med ChatGPT och Claude

Be din AI om en design. Den skapar den i din Mark, redo att redigera.

ChatGPTClaude
Så ansluter du

Produkt

  • Marknaden
  • Utforska
  • Priser
  • Certifikat

Lär dig

  • Fältguiden
  • Hjälpcenter
  • Nyheter

Utvecklare

  • Översikt
  • ChatGPT och Claude
  • API-referens
  • API-nycklar

Företaget

  • Om oss
  • Kontakta oss
  • Logga in

Juridik

  • Villkor
  • Integritet
  • Återbetalningar
  • Mark-skydd
  • Cookies
  • Alla policyer
Rör dig över bokstäverna. Var och en bär en riktig Mark.Tryck på en bokstav för att se dess Mark.Ett namn. Tio Marks inuti.
© 2026 Gradiently