如何防止图像映射从 DIV 溢出?
How to keep an image map from overflowing from a DIV?
我在 div 中有一个图像映射。当我加载页面时,地图图像溢出 div 所以我必须滚动到页面右侧。我想要它,这样图像就可以在页面上显示,而不必向右滚动。
我尝试使用 img{width: 100%}
,但是这使得地图链接无法点击。
.uc {
background: linear-gradient(to right, red, white, black);
margin: auto;
vertical-align: middle;
border-radius: 15px;
box-shadow: 20px 20px 10px #888888;
width: 25%;
height: 50px;
display: flex;
justify-content: center;
align-items: center;
}
h1 {
text-align: center;
background-color: white;
opacity: 0.8;
}
body {
background-image: url("back.png");
background-repeat: repeat-x;
}
.descrip {
border-color: black;
border: 2px solid;
background-color: white;
padding-left: 10px;
padding-right: 10px;
width: 80%;
margin-left: auto;
margin-right: auto;
}
img {
width: 100%;
}
<body>
<h1>Lesson 2</h1>
<div class="descrip">
<h1>Interactive Diagram</h1>
<p>Click on the below image to explore various parts of the motherboard including: </p>
<ul>
<li>CMOS Battery</li>
<li>SLI Chip</li>
<li>CPU Socket</li>
<li>RAM Sockets</li>
</ul>
<img src="mb1.png" alt="Motherboard" usemap="#mbmap">
<map name="mbmap">
<area shape="rect" coords="220,794, 478, 1668" href="https://en.wikipedia.org/wiki/Random-access_memory"
alt="RAM">
<area shape="rect" coords="547,493,1007,743" href="https://en.wikipedia.org/wiki/Scalable_Link_Interface"
alt="SLI Chip">
<area shape="rect" coords="569,1072, 975, 1468" href="https://en.wikipedia.org/wiki/Central_processing_unit"
alt="CPU Socket">
<area shape="circle" coords="618,186,64" href="https://en.wikipedia.org/wiki/Nonvolatile_BIOS_memory"
alt="CMOS">
</map>
</div>
<hr>
<div class="uc">
<a href="hw4.html">< < LESSON 1</a>
</div>
</body>
您的问题是您更改了图像的宽度,但没有更改形状坐标的坐标。
基本上,您将坐标设置在缩放图像之外。所以,你的坐标不正确。假设您的图像是 500x500
,因为您将图像宽度设置为 100%,而容器 div descrip
宽度为 80%,您的图像将是 400x500
,这就是您的新图像尺寸。
在你的 HTML 中,第一个形状的坐标是 coords="220,794, 478, 1668"
y1、x2 和 y2 已经在图像之外,所以你无法点击它,因为它不存在于第一位。
因此,要解决这个问题,正如您已经建议的那样,您应该将宽度和高度属性都设置为 100%,并相应地更改坐标。
我在 div 中有一个图像映射。当我加载页面时,地图图像溢出 div 所以我必须滚动到页面右侧。我想要它,这样图像就可以在页面上显示,而不必向右滚动。
我尝试使用 img{width: 100%}
,但是这使得地图链接无法点击。
.uc {
background: linear-gradient(to right, red, white, black);
margin: auto;
vertical-align: middle;
border-radius: 15px;
box-shadow: 20px 20px 10px #888888;
width: 25%;
height: 50px;
display: flex;
justify-content: center;
align-items: center;
}
h1 {
text-align: center;
background-color: white;
opacity: 0.8;
}
body {
background-image: url("back.png");
background-repeat: repeat-x;
}
.descrip {
border-color: black;
border: 2px solid;
background-color: white;
padding-left: 10px;
padding-right: 10px;
width: 80%;
margin-left: auto;
margin-right: auto;
}
img {
width: 100%;
}
<body>
<h1>Lesson 2</h1>
<div class="descrip">
<h1>Interactive Diagram</h1>
<p>Click on the below image to explore various parts of the motherboard including: </p>
<ul>
<li>CMOS Battery</li>
<li>SLI Chip</li>
<li>CPU Socket</li>
<li>RAM Sockets</li>
</ul>
<img src="mb1.png" alt="Motherboard" usemap="#mbmap">
<map name="mbmap">
<area shape="rect" coords="220,794, 478, 1668" href="https://en.wikipedia.org/wiki/Random-access_memory"
alt="RAM">
<area shape="rect" coords="547,493,1007,743" href="https://en.wikipedia.org/wiki/Scalable_Link_Interface"
alt="SLI Chip">
<area shape="rect" coords="569,1072, 975, 1468" href="https://en.wikipedia.org/wiki/Central_processing_unit"
alt="CPU Socket">
<area shape="circle" coords="618,186,64" href="https://en.wikipedia.org/wiki/Nonvolatile_BIOS_memory"
alt="CMOS">
</map>
</div>
<hr>
<div class="uc">
<a href="hw4.html">< < LESSON 1</a>
</div>
</body>
您的问题是您更改了图像的宽度,但没有更改形状坐标的坐标。
基本上,您将坐标设置在缩放图像之外。所以,你的坐标不正确。假设您的图像是 500x500
,因为您将图像宽度设置为 100%,而容器 div descrip
宽度为 80%,您的图像将是 400x500
,这就是您的新图像尺寸。
在你的 HTML 中,第一个形状的坐标是 coords="220,794, 478, 1668"
y1、x2 和 y2 已经在图像之外,所以你无法点击它,因为它不存在于第一位。
因此,要解决这个问题,正如您已经建议的那样,您应该将宽度和高度属性都设置为 100%,并相应地更改坐标。