【问题标题】:How to resize child images proportionally to parent?如何按比例调整子图像的大小?
【发布时间】:2021-11-02 01:53:24
【问题描述】:

我有一张大图,也就是一张地图。我也有附加到地图某些位置的标记。在下面,您可以看到一个示例。

地图和标记被包裹在map-wraper 中,并且是绝对定位的。

HTML

<div class="map-wrapper">
  <img src="map.png" id="map" alt="Map">
  <img src="marker-1.png" id="marker-1" alt="Shop">
  <img src="marker-2.png" id="marker-2" alt="House">
</div>

CSS

.map-wrapper {
  position: relative;
}

#map {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
}

#marker-1 {
  position: absolute;
  top: 140px;
  left: 300px;
}

#marker-2 {
  position: absolute;
  top: 80px;
  left: 40px;
}

问题是当我调整浏览器的大小时,标记会错位。我希望标记的大小也与他们的父母成比例。在这种情况下map-wrapper

我尝试过这个 CSS 技巧,但没有帮助。 https://css-tricks.com/scaled-proportional-blocks-with-css-and-javascript/

我不只是将标记与地图合并的原因是我想给标记提供悬停效果。

提前致谢!

【问题讨论】:

标签: html css responsive-design


【解决方案1】:

保持标记在地图上的位置

对标记的topleft CSS 属性使用相对百分比单位。

这样标记应该保持在相对于它们相对定位的父容器&lt;div class="map-wrapper"&gt;的相同位置。

#marker-1 {
  position: absolute;
  top: ...%;
  left: ...%;
}

#marker-2 {
  position: absolute;
  top: ...%;
  left: ...%;
}

保持标记大小相对于包装器尺寸

对标记的height 使用相对百分比单位,并将它们的width 设置为auto

这样,标记相对于其相对定位的父容器的&lt;div class="map-wrapper"&gt; 高度应保持相同的大小。

#marker-1 {
 ... some properties here...
 height: ...%;
 width: auto;
}

#marker-2 {
 ... some properties here...
 height: ...%;
 width: auto;
}

【讨论】:

  • 感谢您的回复。这有帮助,但标记并没有按比例缩小地图。
  • 使用 - width: ...%; 定义标记大小,以便在调整大小时获得更小的标记。
  • 谢谢!它按我的预期工作。
【解决方案2】:

改用 calc() 函数根据浏览器大小 (%) 计算位置。

【讨论】:

  • 感谢您的回复。如果您不介意,可以举个例子吗?
  • 例如,如果您的标记位于距顶部 25% 和距左侧 10% 的位置,并且您的标记为 50 像素 x 50 像素,您的代码可能如下所示:top: calc(25% - 25px); left: calc(10% - 25px); 减法用于标记以您想要的点为中心。
  • 这也是我一开始也尝试过的方法,但标记并没有与地图成比例地变小。
猜你喜欢
  • 2017-09-04
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
相关资源
最近更新 更多