You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After v0.31.0-beta with PR #169 merged, enabling the Hillshade overlay makes the hillshade layer render fully opaque — the base map underneath is no longer visible at all.
Root cause
PR #169 moved mix-blend-mode: multiply from .hillshade-blend (the Leaflet layer container) to .hillshade-blend img.leaflet-tile (individual tile images).
The intent was to escape the transformed .leaflet-tile-container's stacking context, but I had the direction backwards: applying the blend AT the tile image places it INSIDE the transformed container's stacking context. That context contains only the hillshade tile images — there's nothing else to multiply against, so the blend has no backdrop and renders the source pixels as-is (opaque).
The correct placement is at .hillshade-blend (the layer-level container), which sits at the same level as the base layer's container under .leaflet-tile-pane. There the multiply blend has the base layer as a sibling backdrop.
Symptoms
After v0.31.0-beta with PR #169 merged, enabling the Hillshade overlay makes the hillshade layer render fully opaque — the base map underneath is no longer visible at all.
Root cause
PR #169 moved
mix-blend-mode: multiplyfrom.hillshade-blend(the Leaflet layer container) to.hillshade-blend img.leaflet-tile(individual tile images).The intent was to escape the transformed
.leaflet-tile-container's stacking context, but I had the direction backwards: applying the blend AT the tile image places it INSIDE the transformed container's stacking context. That context contains only the hillshade tile images — there's nothing else to multiply against, so the blend has no backdrop and renders the source pixels as-is (opaque).The correct placement is at
.hillshade-blend(the layer-level container), which sits at the same level as the base layer's container under.leaflet-tile-pane. There the multiply blend has the base layer as a sibling backdrop.Fix
isolation: isolateto#mapso the map is a clean stacking-context root — this prevents ancestor compositing layers from isolating the blend from its intended backdrop, which was the actual original "sometimes not applied" symptom from fix(hillshade): mix-blend-mode sometimes not applied at closest zoom on topo layer #168.Acceptance
npm run type-check && npm run lint && npm testclean