Wicker Weave

Fill & Texture · Static · pure CSS

Two perpendicular sets of reed strips interlace into one opaque, dimensional basketry fill — each strip a rounded 3-stop rod (light edge, warm cane body, dark underside) with a hard seam groove, and a checkerboard-cadence mask swaps which direction sits on top cell by cell for a true over-under weave. A warm rattan palette adapts to both themes, tuned by weave pitch, cane warmth and shadow depth.

Wicker Weave

How it works

Wicker Weave is a static fill & texture text effect rendered entirely in CSS. A data-text attribute mirrors the word into ::before/::after layers, so copy that attribute together with the CSS.

Controls

Wicker Weave exposes 3 dedicated controls — Weave Pitch, Cane Warmth and Shadow Depth — on top of the shared type controls (font, weight, letter-spacing and case). Open it in the generator to tune every value live, then copy the updated CSS.

CSS

/* Wicker Weave — made with TEXT-FX · https://text-fx.app
 * HTML: the element needs a data-text attribute equal to its text.
 * Font: 'Space Grotesk', sans-serif (load from Google Fonts).
 */

.text-effect {
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 700;
  letter-spacing: 0px;
  text-transform: none;
}

.text-effect {
  position: relative;
  display: inline-block;
  color: transparent;
  -webkit-text-fill-color: transparent;
  background-image: repeating-linear-gradient(90deg, hsl(27.6 19.4% 63.5%) 0px, hsl(27.6 19.4% 63.5%) 1.76px, hsl(27.6 29.4% 44.1%) 3.52px, hsl(27.6 29.4% 44.1%) 5.94px, hsl(27.6 35.4% 10.1%) 8.14px, hsl(27.6 35.4% 10.1%) 9.9px, hsl(27.6 39.4% 4%) 11px);
  -webkit-background-clip: text;
  background-clip: text;
  filter: drop-shadow(0 0 1.5px hsl(27.6 30% 4% / 0.4));
}
.text-effect::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  pointer-events: none;
  color: transparent;
  -webkit-text-fill-color: transparent;
  background-image: repeating-linear-gradient(180deg, hsl(37.6 12.399999999999999% 59.5%) 0px, hsl(37.6 12.399999999999999% 59.5%) 1.76px, hsl(37.6 22.4% 40.1%) 3.52px, hsl(37.6 22.4% 40.1%) 5.94px, hsl(37.6 28.4% 6.1%) 8.14px, hsl(37.6 28.4% 6.1%) 9.9px, hsl(37.6 32.4% 2%) 11px);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-mask-image: repeating-linear-gradient(180deg, #000 0px, #000 11px, transparent 11px, transparent 22px), repeating-linear-gradient(90deg, #000 0px, #000 11px, transparent 11px, transparent 22px);
  -webkit-mask-composite: xor;
  mask-image: repeating-linear-gradient(180deg, #000 0px, #000 11px, transparent 11px, transparent 22px), repeating-linear-gradient(90deg, #000 0px, #000 11px, transparent 11px, transparent 22px);
  mask-composite: exclude;
}

HTML

This effect needs the markup below (per-letter spans, SVG defs, or a data-text attribute).

<!-- Made with TEXT-FX · https://text-fx.app -->

<style>
.text-effect {
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 700;
  letter-spacing: 0px;
  text-transform: none;
}

.text-effect {
  position: relative;
  display: inline-block;
  color: transparent;
  -webkit-text-fill-color: transparent;
  background-image: repeating-linear-gradient(90deg, hsl(27.6 19.4% 63.5%) 0px, hsl(27.6 19.4% 63.5%) 1.76px, hsl(27.6 29.4% 44.1%) 3.52px, hsl(27.6 29.4% 44.1%) 5.94px, hsl(27.6 35.4% 10.1%) 8.14px, hsl(27.6 35.4% 10.1%) 9.9px, hsl(27.6 39.4% 4%) 11px);
  -webkit-background-clip: text;
  background-clip: text;
  filter: drop-shadow(0 0 1.5px hsl(27.6 30% 4% / 0.4));
}
.text-effect::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  pointer-events: none;
  color: transparent;
  -webkit-text-fill-color: transparent;
  background-image: repeating-linear-gradient(180deg, hsl(37.6 12.399999999999999% 59.5%) 0px, hsl(37.6 12.399999999999999% 59.5%) 1.76px, hsl(37.6 22.4% 40.1%) 3.52px, hsl(37.6 22.4% 40.1%) 5.94px, hsl(37.6 28.4% 6.1%) 8.14px, hsl(37.6 28.4% 6.1%) 9.9px, hsl(37.6 32.4% 2%) 11px);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-mask-image: repeating-linear-gradient(180deg, #000 0px, #000 11px, transparent 11px, transparent 22px), repeating-linear-gradient(90deg, #000 0px, #000 11px, transparent 11px, transparent 22px);
  -webkit-mask-composite: xor;
  mask-image: repeating-linear-gradient(180deg, #000 0px, #000 11px, transparent 11px, transparent 22px), repeating-linear-gradient(90deg, #000 0px, #000 11px, transparent 11px, transparent 22px);
  mask-composite: exclude;
}
</style>

<div data-text="Your text" class="text-effect">Your text</div>
Category
Fill & Texture
Type
Static
Browser support
background-clip:text reed gradients + a checkerboard mask from two orthogonal repeating-linear-gradients combined with mask-composite:exclude (-webkit-mask-composite:xor); all modern browsers, recent Firefox for standard mask-composite
Capabilities
pure, dataText

Related Fill & Texture effects