<svgviewBox="0 0 20 10"xmlns="http://www.w3.org/2000/svg"><!--
The circle will always intercept the mouse event.
To change the color of the rect underneath you have
to click outside the circle
--><rectx="0"y="0"height="10"width="10"fill="black"/><circlecx="5"cy="5"r="4"fill="white"pointer-events="visiblePainted"/><!--
The circle below will never catch a mouse event.
The rect underneath will change color whether you
are clicking on the circle or the rect itself
--><rectx="10"y="0"height="10"width="10"fill="black"/><circlecx="15"cy="5"r="4"fill="white"pointer-events="none"/></svg>
window.addEventListener("mouseup",(e)=>{// Let's pick a random color between #000000 and #FFFFFFconst color = Math.round(Math.random()*0xffffff);// Let's format the color to fit CSS requirementsconst fill =`#${color.toString(16).padStart(6,"0")}`;// Let's apply our color in the// element we actually clicked on
e.target.style.fill = fill;});
Usage notes
Value
bounding-box | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | none
Default value
visiblePainted
Animatable
Yes
For a detailed explanation of each possible value, have a look at the CSS pointer-events documentation.