所以我的网站上有一堆.png文件。我使用.png文件是因为我将它们放在其他图像之上以创建实体模型。我目前有.png的超链接,所以点击用户会直接指向.png文件(即"www.website.com/images/theimage.png")。
这一切都很好,但是,我的一些.png文件中有白色,因为它们被层叠在深色背景图像之上。因此,当用户指向.png文件时,他们看不到任何白色区域,因为主体默认背景色(或没有)是白色。有没有一种方法可以动态地将css规则传递给浏览器用来显示.png的页面上的body标记?我想使用PHP或CSS或类似的东西来做这件事。
因此,在链接中,我想添加一些传递给http://www.website.com/images/theimage.png包含要使用的背景色的页面。我在想可能是这样的:
<a href="http://www.website.com/images/theimage.png?backround=black">Link</a>
或
<a href="http://www.website.com/images/theimage.png" target="background:black">Link</a>
我只是不知道。
我已经在谷歌上搜索了大约30分钟,但我找不到任何技巧。提前谢谢。
您是否使用PHP动态获取该链接中的文件名?如果是这样的话,您可以很容易地实现它(前提是您还可以在PHP中管理包含div的css样式)。
- 将所需的背景颜色添加到png文件的名称中(如
image-000000.png
)。现在,当图像显示在页面上时,图像名称包含首选的背景颜色 - 在PHP中解析名称,将背景颜色转换为类似
$imagecolour = substr(imagename,10,16);
的变量(使用substring
或explode
) - 更改包含元素的css规则(如
echo style="background-color:$imagecolour"
)
您还可以使用htmldata
属性来传递图像容器中的背景颜色。
如果使用javascript或jquery,则可以对图像容器的id/class执行同样的操作。假设颜色在像这样的数据元素中
<image src="image.png" data-bgcolour="000000" class="image-bg-element" />
然后
var newbg = $('.image-bg-element').data('bgcolour'); $('.image-bg-element').css('background-color', "#"+newbg);
您将无法通过直接链接到图像文件来完成此操作。最好的选择是使用PHP输出图像并相应地更改背景,因此链接将指向PHP页面,而不是直接指向图像。E.G
<a href="http://www.website.com/images/show.php?image=theimage.png&backround=black">Link</a>
然后在PHP文件中执行以下操作:
<?php
if (in_array($_GET['background'], $validBackgrounds) && in_array($_GET['image'], $validImages)) {
$background = $_GET['background'];
$image = $_GET['image'];
?>
<div style="background: <?= echo $background?>">
<img src="<?=$image?>" />
</div>
<?php
}
?>
注意:请非常小心,只在页面上回显$_GET
参数,理想情况下,您希望首先添加验证,以确保图像和背景有效,并且不包含恶意代码