5

我一直在开发一个响应式网站,但在使用 Image Maps 时遇到了一些问题。似乎图像地图不适用于基于百分比的坐标。经过一番谷歌搜索后,我找到了一个 JS 解决方法 - http://mattstow.com/experiment/responsive-image-maps/rwd-image-maps.html。但是我希望该站点可以在禁用 JS 的情况下工作。

因此,在用尽了这些可能性之后,我决定研究在图像上使用相对定位的 Anchor 标签来做同样的事情。无论如何,这是一个更好的选择。我尝试使用基于百分比的位置和大小将锚标记放置在图像上,但是每当我重新缩放浏览器时,锚标记就会与图像不成比例地移动。

HTML:

<div id="block">
  <div>
    <img src="http://www.wpclipart.com/toys/blocks/abc_blocks.png">
  </div>
  <a href="#" class="one"></a>
  <a href="#" class="two"></a>
</div>

CSS:

#block img {
  max-width: 100%;
  display: inline-block;
}

a.one{ 
  height:28%;
  width:19%;
  top:-36%;
  left:1%;
  position:relative;
  display:block;
}
a.two{
  height:28%;
  width:19%;
  top:37%;
  left:36%;
  position:absolute;
}

这是一个 jsFiddle 来描述我的意思 - http://jsfiddle.net/wAf3b/10/。当我调整 HTML 框的大小时,一切都变得倾斜。

非常感谢任何帮助。

4

2 回答 2

5

您在发布的小提琴中遇到了一些 CSS 问题(以及缺少的结束div标签)。在确保它#block是相对定位的,而不是 100% 的高度,并且你的锚是块/绝对定位后,我能够让标签随着块移动。

这是更新的小提琴:

http://jsfiddle.net/wAf3b/24/

CSS

html, body {
  height: 100%;
}

#block{ float:left; width:100%; max-width: 400px; position: relative; }

#content{
  height: 100%;
  min-height: 100%;
}

#block img {
  max-width: 100%;
  display: inline-block;
}

a.one{ height:28%; width:25%; position: absolute; top:55%; left:5%; display:block; background:rgba(0,255,0,0.5);}
a.two{ height:28%; width:25%; position: absolute; top:60%; left:70%; display: block; background:rgba(255,0,0,0.5);}

HTML

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link href="stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css" />
    <title>Bulky Waste</title>
</head>
<body>
    <div id="content">
        <div id="block">
            <div>
                <img src="http://www.wpclipart.com/toys/blocks/abc_blocks.png">
            </div>
            <a href="#" class="one"></a>
            <a href="#" class="two"></a>
        </div>
    </div><!--/content-->
</body>
</html>

新 html 需要注意的一件重要事情是使用DOCTYPE. 出于某种原因,一些浏览器不喜欢它不大写。

于 2012-11-21T19:29:25.677 回答
0

绝对定位元素不再是布局的一部分,因此它们不能从其父元素继承相对尺寸属性。你需要 JavaScript 来做你想做的事。

禁用 JS 的人已经期望体验下降。

于 2012-11-21T19:05:42.250 回答