最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

html - referencing an inline svg by id inside an img src attribute - Stack Overflow

matteradmin7PV0评论

Is there a syntax that will allow me to reference an inline svg by id in an img tag's src attribute? Or is it possible to echo the svg code directly into the src attribute? I'd prefer to avoid creating a duplicate file and a duplicate HTTP request, if possible.

For a previously loaded svg with id = #my_svg", I tried: src="url(#my_svg)". I also tried printing the svg directly into the src attribute from the server, like this:

<img src="data:image/svg+xml;utf8,
<?php
$svg_str = logo_svg();
$svg_str = str_replace('"', "'", $svg_str);
echo $svg_str;
?>
" 
style="position:absolute;width:100%;height:100%">
</img>

Is there a syntax that will allow me to reference an inline svg by id in an img tag's src attribute? Or is it possible to echo the svg code directly into the src attribute? I'd prefer to avoid creating a duplicate file and a duplicate HTTP request, if possible.

For a previously loaded svg with id = #my_svg", I tried: src="url(#my_svg)". I also tried printing the svg directly into the src attribute from the server, like this:

<img src="data:image/svg+xml;utf8,
<?php
$svg_str = logo_svg();
$svg_str = str_replace('"', "'", $svg_str);
echo $svg_str;
?>
" 
style="position:absolute;width:100%;height:100%">
</img>
Share Improve this question edited Nov 17, 2024 at 7:57 Olivier 18.4k1 gold badge11 silver badges31 bronze badges asked Nov 16, 2024 at 21:21 fritzfritz 211 silver badge6 bronze badges 5
  • 1 Side note, there's no such thing as </img> – j08691 Commented Nov 16, 2024 at 22:20
  • 1 images are complete files, you don't refer to them by id. If you want to reference something by id we have a different tag for that i.e. <use> – Robert Longson Commented Nov 17, 2024 at 0:09
  • 1 you also need to escape the # characters in a Data-URI – Danny '365CSI' Engelman Commented Nov 17, 2024 at 9:19
  • Note: If you load a second IMG with the same src your browser will fetch it from the cache, so there is no duplicate HTTP request – Danny '365CSI' Engelman Commented Nov 17, 2024 at 11:22
  • Provided your svg image doesn't contain any ID references (like clip-path, gradients etc) that may collide with other element ID you could just echo the SVG markup directly. So you get a inlined SVG element in your HTML. – herrstrietzel Commented Nov 17, 2024 at 21:33
Add a comment  | 

2 Answers 2

Reset to default 0
body {
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3./2000/svg' width='10' height='10'><linearGradient id='gradient'><stop offset='10%' stop-color='%23F00'/><stop offset='90%' stop-color='%23fcc'/> </linearGradient><rect fill='url(%23gradient)' x='0' y='0' width='100%' height='100%'/></svg>");

}

An example of gradient created in javascript

If you want to avoid this, you can create an assets folder in your GitHub repository and put the svg you want to use, it works well, because some links only work if they are hosted in specific places sometimes, you can create a folder in github with your icons and images, and when you need to use them, you just use the link to your own repository and adjust the size of the icons

Post a comment

comment list (0)

  1. No comments so far