Html IE将锚元素定位在图像上

Html IE将锚元素定位在图像上,html,css,internet-explorer,xhtml,Html,Css,Internet Explorer,Xhtml,我对IE9(和IE8)在图像上定位空(有点像)锚元素有问题。锚点包含文本,但它是使用CSS的文本缩进属性从页面开始的 我在一个网站上工作,这个网站有一系列的宣传板,它们都包含在UL中。在每个LI中都有一个宣传图像,以及一个或多个定位在不同区域的锚元素。IMG和A元素绝对位于LI元素中。因此,基本结构看起来像UL>LI>imga 这种设置在Firefox和Chrome中运行良好,但IE不喜欢。我尝试在这个设置上使用z-index,但没有成功 有人能解释IE存在的问题,并为我的CSS提供更好的解决方

我对IE9(和IE8)在图像上定位空(有点像)锚元素有问题。锚点包含文本,但它是使用CSS的文本缩进属性从页面开始的

我在一个网站上工作,这个网站有一系列的宣传板,它们都包含在UL中。在每个LI中都有一个宣传图像,以及一个或多个定位在不同区域的锚元素。IMG和A元素绝对位于LI元素中。因此,基本结构看起来像UL>LI>imga

这种设置在Firefox和Chrome中运行良好,但IE不喜欢。我尝试在这个设置上使用z-index,但没有成功

有人能解释IE存在的问题,并为我的CSS提供更好的解决方案吗?我用一个div、img和一个锚点快速/简化了我的问题。可以将其复制/粘贴到您的机器上,以查看其运行情况

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <meta name="Description" content="" />
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
        <link type="text/css" rel="stylesheet" href="" />
        <style type="text/css">
            #div {
                z-index:1;
                display: block;
                background:red;
                position:relative;
            }
            #image {
                z-index:2;
                position:absolute;
                top:0;
                left:0;
                display:block;
            }
            #anchor {
                z-index:3;
                display:block;
                overflow:hidden;
                position: absolute;
                top:0;
                left:0;
                text-indent:-9999px;
                width:640px;
                height:480px;
            }
        </style>
    </head>
    <body>
        <div id="div">
            <img id="image" src="http://farm8.staticflickr.com/7130/7438112718_2e8340081b_z.jpg" />
            <a href="#" id="anchor">clicky</a>
        </div>
    </body>
</html>

#div{
z指数:1;
显示:块;
背景:红色;
位置:相对位置;
}
#形象{
z指数:2;
位置:绝对位置;
排名:0;
左:0;
显示:块;
}
#锚定{
z指数:3;
显示:块;
溢出:隐藏;
位置:绝对位置;
排名:0;
左:0;
文本缩进:-9999px;
宽度:640px;
高度:480px;
}
我无法控制UL>LI>IMG A布局。这是一个设置,当我们得到新的宣传片时,我们可以很容易地更新图片,只需根据图片的“行动调用”数量轻松地添加或删除锚。元素的定位是内联注入的


谢谢

我认为您可以使用一个普通的旧HTML图像映射来实现您想要的:

否则,这里有一把小提琴在做我认为你原本想做的事情:


我也有同样的问题。根据您的示例,我的解决方案如下:

<style type="text/css">
    #div {
        position:relative;
    }
    #anchor {
        display:block;
        width:640px;
        height:480px;
        overflow:hidden;
        text-indent:-9999px;
        position:absolute;
        top:0;
        left:0;
        background:url(http://farm8.staticflickr.com/7130/7438112718_2e8340081b_z.jpg) no-repeat 640px 480px;
    }
</style>

<div id="div">
    <img id="image" src="http://farm8.staticflickr.com/7130/7438112718_2e8340081b_z.jpg" />
    <a href="#" id="anchor">clicky</a>
</div>

#div{
位置:相对位置;
}
#锚定{
显示:块;
宽度:640px;
高度:480px;
溢出:隐藏;
文本缩进:-9999px;
位置:绝对位置;
排名:0;
左:0;
背景:url(http://farm8.staticflickr.com/7130/7438112718_2e8340081b_z.jpg)不重复640px 480px;
}
由于锚定标记具有设置的宽度和高度且溢出隐藏,请将锚定标记的背景图像设置为其绝对定位的图像(或已包含的任何图像),但将背景位置设置为大于锚定宽度和高度的正像素值,并将背景重复设置为不重复。通过这样做,锚定标签在IE中工作,浏览器不会下载额外的资源,因此可以节省带宽。注意:img标签不需要任何特殊的样式,包含的div只需要相对位置

如果您不想担心设置背景位置、无法控制任何动态生成图像的大小和/或不关心节省带宽,您还可以创建并使用一个小的(1x1)清晰/透明图像(如有必要,设置背景重复)


或者,增加Billy Moat的小提琴示例:

这个问题也会影响IE10,但不会影响IE11。背景图像方法的替代方法是应用背景颜色:rgba(0,0,0,0)到锚点。请注意,这在IE8中不起作用,IE8不支持
rgba
颜色。

是否要在图像上显示锚定标记?是的,锚定标记应该可以在图像上单击,并占据CSS中指定的区域。目前,它在那里,是CSS中给出的尺寸大小,但不可点击。意味着你想显示文本,甚至图像应该可以点击?类似的图像应该充当
锚定
标记?文本不应该显示,它已经用CSS移出页面。将有一个图像,上面有多个锚,应该可以点击。如果只是一张图片和一个锚,我会把img标签放在锚里面。但是同样,一张图片会有多个可点击的区域。你提到我的两个小提琴了吗?你的小提琴是我想要完成的,它在IE中工作,直到你去掉背景色。有什么想法吗?这个页面的设置方式,我没有切换到使用图像地图的选项。感谢迄今为止的所有帮助。@snowBlind-那么,你到底想实现什么与我的小提琴不同?你的小提琴确实是做什么的,但是一旦你从锚中移除背景色,它仍然可以工作。