What is causing the issue when using svg <use xlink:href="#"/> to reference an element that includes clip-path?

When incorporating an SVG sprite, an <svg> element is generated and svg elements are accessed using the <use> element. The parent <svg> element is then concealed by adding style="display: none;"

While the clip-Path attribute does not display, the path itself does. This results in my path appearing different from what I intended.

How can I utilize an svg <use xlink:href="#"/> that references an element with a clip-path?

I leveraged grunt-svg-store to produce my svg sprite, however, for the purpose of this Q&A format, I have simplified the process. Visit here for more details

<svg id="svg-test" style="display: none;">
  <clipPath id="my-clip-1">
    <circle id="circle-1" cx="50" cy="50" r="50" />
  </clipPath>
  <path id="svg-test-reference" clip-path="url(#my-clip-1)" d="M10-39.288h80v80H10z" />
</svg>

<!-- Reference SVG <path> by ID with Use -->

<svg class="svg-item" viewBox="0 0 100 100">
  <use xlink:href="#svg-test-reference" />
</svg>

Check out the live example on Codepen.io

Answer №1

Instead of using

<svg style="display: none;">
, it is recommended to use
<svg style="width:0; height:0;">
to hide the sprite.

<!-- SVG element  -->

<svg id="svg-test" style="width:0; height:0;">
  <clipPath id="my-clip-1">
    <circle id="circle-1" cx="50" cy="50" r="50" />
  </clipPath>
  <path id="svg-test-reference" clip-path="url(#my-clip-1)" d="M10-39.288h80v80H10z" />
</svg>

<!-- Reference SVG <path> by ID with Use -->

<svg class="svg-item" viewBox="0 0 100 100">
  <use xlink:href="#svg-test-reference" />
</svg>

Check out a live example on Codepen.io

Answer №2

When I encountered this issue, simply specifying the "width" and "height" properties resulted in an empty space where the image should have been displayed. Interestingly, changing the CSS from display:none; to display:content; resolved the problem - now there is no empty area and the image appears as expected.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Can a dropdown menu be integrated into a text area?

Is it within the realm of possibility to achieve this? I believe it's worth exploring, so here goes my question. The Servlet API functions as a ticketing process or script that scans a form for specific form fields that match its predefined list of n ...

Find all elements located in between two headers with varying ids

I am trying to select a specific range of elements in between two headers, excluding everything after the second header. For example, I want to select elements 1-5 from the following code snippet: <!DOCTYPE html> <html> <head> <link r ...

css grids adapt their layout based on the dimensions of the webpage

My main page currently consists of a menu, sidebar, and main window. However, when I redirect to another page, I want the sidebar to disappear. Is it possible to achieve this using CSS grids without the need for two separate CSS files? For instance, here ...

Displaying an HTML button above JavaScript code

Hello, I am currently working on a project that involves displaying the Earth and I am in need of assistance with positioning some buttons on the screen. Currently, I am facing an issue where the buttons appear either above or below the JavaScript code. I ...

What is the best way to ensure that two div elements remain next to each other even when one has a fixed size?

I need to align two divs side by side, regardless of the container width when one div has a fixed size. Here is a snippet of my HTML markup: <div class="container-fluid"> <div class="row"> <div class="item"> <div class="da ...

The website is failing to extend and reveal content that is being concealed by jQuery

I'm currently diving into the world of Javascript and jQuery, attempting to create a functionality where upon clicking the submit button, the website dynamically expands to display search information. Although the feature is still in progress, I am ut ...

How to create a Navbar with a fixed-top position and ensure the container beneath it stays fixed to its bottom even when scrolling

https://i.sstatic.net/EgrDC.jpgWhen using the "navbar fixed-top" feature from Bootstrap, I have noticed that the container underneath it tends to slide below the navbar when scrolling down the page (see attached photo). Although this is expected behavior w ...

Issue encountered while submitting form on JQuery Mobile framework

Currently, I am in the process of developing a small web application utilizing JQuery Mobile and Multi Page architecture. The issue arises on my form as the second page. Upon clicking the submit button, an error message is displayed on my console (error i ...

Is it possible to open a new tab window using a radio button?

Looking for assistance with radio buttons. I want users to be redirected to a new window when they click the submit button beneath the radio buttons. If anyone has a solution, please help! I have tried using window.location.href and window.open but the c ...

The placement of text appears to be incorrect when applying the float:left property in CSS

My issue is that I want #text1 to display on the right side of #video1, and #text2 to be positioned next to #video2. However, currently #text2 is also appearing beside #video1. Can someone please explain why this is happening and provide a solution to fi ...

What is the best way to divide my HTML page in half?

My goal is to display two maps side by side, one on the right and the other on the left. However, when I try to implement this, one map appears on top of the other. I believe that CSS positioning can help me achieve the desired layout, but as a beginner in ...

PHP - What is the reason for the output being a multi-dimensional array?

Hey there, I'm currently working with this code and for some reason, the variable records2 is returning a multi-dimensional array. Can anyone help me figure out why this is happening? I actually need it to be a simple, single dimension array. functi ...

How to implement mouseover and mouseout with jQuery for an AJAX-loaded element

I have tried calling 4 different div elements using ajax within a div with the class "displaycat". I have written a jQuery function for mouseenter and mouseleave events for these div elements but it doesn't seem to work. Below is the code. Interesting ...

Encountering issues with calling a custom directive within another custom directive in AngularJS

I need to implement a custom directive within the template of another custom directive. Here are the code snippets for reference: Issue with Scenario 1 angular.module('myApp') .directive('customOnChange', function () { return { r ...

Cell borders in an HTML table are covering up the table borders

I am currently facing an issue with displaying an HTML table in a UIWebView within my iOS app. The table itself looks great, but the borders of the cells and rows are overlapping the main table border. Here's an example: To style these borders, I ha ...

jQuery's capability to select multiple elements simultaneously appears to be malfunctioning

I am dynamically creating div elements with unique ids and adding span elements with specific CSS properties. $(".main").append("<div class=largeBox id=" + counter + "</div>"); $(".largeBox").append("<span class=mainTitle></span>"); ...

Stop material button from animating when clicked

On my webpage, I have created a unique button structure using Angular Material design: <button mat-button class="library-tile-button"> <button mat-button class="edit-library-button"> <img class="edit-library-img" src="..."/> ...

The most effective method for positioning a child element to the left and top using Flexbox grid

I am currently working on visualizing queues and processes within a system. Each process is associated with a specific queue from which it retrieves data. I aim to create a layout similar to the following: https://i.stack.imgur.com/BXyts.png However, I a ...

JavaScript expression not being processed

What could be the reason behind not receiving the value for dish.price, dish,description, etc.? Where am I making a mistake in this code snippet? <!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="utf-8"> < ...

How to extract the first 5 links from a specified div class using PHP Simple HTML DOM

Currently, my code snippet fetches all the links from within a specific class using PHP. <?PHP include('simple_html_dom.php'); $html = file_get_html('http://www.mangastream.com/'); foreach($html->find('.side-nav') as $t ...