在超链接到.png文件时动态添加背景色


Dynamically Adding a background color when hyperlinking to a .png file

所以我的网站上有一堆.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);的变量(使用substringexplode
  • 更改包含元素的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参数,理想情况下,您希望首先添加验证,以确保图像和背景有效,并且不包含恶意代码