我想根据参数加载 svg 文件。
例如,如果参数 = A 则加载 A.svg,如果参数 = B 则加载 B.svg,依此类推。
对于这种情况,我使用的是 Codeigniter,因此在 Model 上,我像这样加载 svg 文件:
型号.php
$svgTag = '<div id="svg-content" >'
. '<input type="radio" name="test"/>'
. file_get_contents( APPPATH. 'views/svg/'.$param.'.svg', TRUE)
. '</div>'
之后,我将$svgTag
加载到视图中。
查看.php
<html>
<body>
<?php echo $svgTag; ?>
</body>
</html>
我的期望是 svg 文件将在div#svg-content
中加载,但实际结果是在标签<body>
后加载 svg,如下所示:
RESULT
<html>
<body>
<svg>........</svg> <!-- Loaded SVG File -->
<div id="svg-content" >
<input type="radio" name="test"/>
</div>
</body>
</html>
我想在单选按钮上添加事件,如果单击它,则更改 SVG 图像的颜色。
如果我使用<object>
我就不能应用这种样式。注意:这是我尝试加载的文件内容:
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 1280 800" enable-background="new 0 0 1280 800" xml:space="preserve">
<g>
<polygon points="358.3,524.2 328.3,524.2 328.3,665 415,665 415,640 358.3,640 "/>
</g>
</svg>
有没有办法得到这样的结果..?
<html>
<body>
<div id="svg-content" >
<input type="radio" name="test"/>
<svg>........</svg> <!-- Loaded SVG File -->
</div>
</body>
</html>
使用 <img>
标签将其嵌入页面中,这将使您完全控制在 html 中的位置
$svgTag = '<div id="svg-content" >'
. '<input type="radio" name="test"/>'
. '<img src="'.APPPATH. 'views/svg/'.$param.'.svg'.'" alt="">'
. '</div>'
这是对 SVG 文件使用 <img>
、<object>
或 <embed>
的真棒答案?
终于找到了答案。
应该使用 fread() 函数来加载 SVG 文件。
所以,它应该是这样的:
$fh = fopen(APPPATH. 'views/svg/'.$param.'.svg', 'r');
$svg_file = fread($fh, 25000);
$svgTag = '<div id="svg-content" >'
. '<input type="radio" name="test"/>'
. $svg_file
. '</div>'