javascript - 保持 div 相对于图像定位

标签 javascript html css

我正在尝试在城市上创建一个带有 div 的“ map ”。我得到了 .svg 格式的 map ,并将其用作背景大小的背景:封面。我需要“city-divs”相对于图像保持定位(例如伦敦 div 应该始终在我图像上的伦敦位置上方)。我可以半实现这个使“城市 div”成为绝对,然后使用 vh 和 vw 定位它。但是,如果我调整窗口大小或在不同的计算机上检查,它就会出错。

我想纯 css 不是执行此操作的正确方法。有没有办法实现这一目标,或者我的方向完全错误?

我最接近的是使用在 stackoverflow 上找到的这个解决方案 http://jsfiddle.net/fmenrd4z/ .这适用于图像中心的 div 恰到好处。向左/向右放置更多的 Div 效果不佳。

目前,我正在使用此代码。

HTML

<section id="map">
  <div id="london">london</div>
  <div id="paris">paris</div>
</section>

CSS

#map {
    background-image: url(../img/maps/map.svg);
    width: 100vw;
    height: 90vh;
    background-attachment: fixed;
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
}

#london {
    position: absolute;
    left: 31vw;
    top: 35vh;    
}
#paris {
    position: absolute;
    left: 60vw;
    top: 73vh;    
}

我想这个问题一定有解决方案。我今天一整天都在网上搜索,但没有找到任何东西。

我愿意选择完全不同的方式来做到这一点。 (是否有一些 javascript 库等?) 提前致谢!

最佳答案

这永远行不通,因为您定位的 div 尺寸总是根据显示的屏幕而变化。

有一种方法可以为大屏幕提供固定的 #map 部分的高度和宽度(以像素为单位),并为移动屏幕添加一些媒体查询。

#map {
    width: 600px;
    height: 300px;
}

@media (max-width: 1024px){
    #map {
        width: 300px;
        height: 150px;
    }
}

关于javascript - 保持 div 相对于图像定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57030614/

相关文章:

javascript - AngularJS Controller 未执行

javascript - 无法使 "Enter"键调用函数而不是提交页面

javascript - 如何使列表项滚动动画看起来连续/无限

javascript - 鼠标悬停和鼠标移出问题

javascript - 由于 angularjs 1.4 中的类型不匹配,选择元素值未绑定(bind)

html - 浏览器修改我的 HTML,导致输出不正确

css - 为什么 `max-width` 有时是独占的?

css - 是否可以仅使用 CSS 来 float 和堆叠元素?

javascript - 选择一个有效的选择。 '"xxx”不是可用选项之一

javascript - 排除第一项的正则表达式