将 div 附加到相对于背景的精确位置(大小:封面)

问题描述 投票:0回答:3

我有一个网页,其背景图像为背景大小:封面。 现在我想用某些包含附加信息的 div's 覆盖这个背景图像。即使我调整浏览器窗口的大小,这些 div's 也必须位于相对于背景图像的精确位置。

这只是一次失败的尝试。

HTML

<body>
<div class="icon">
<div class="background picture_rendering"></div>
</body>

CSS

.background {
    width:100%; 
    height:100%; 
    background-image: url(images/bg.jpg); 
    background-size: cover;
    z-index: 0;
    position: absolute;
}

.icon {
    width: 100%;
    height: 100%;
    left: 0px;
    top: 0px;
    position: relative;
    background-image: url('/images/icon.jpg');
    background-size: 5% auto;
    background-position: 227px center;
    background-attachment: fixed;
}

它应该类似于地图标签:http://www.w3schools.com/tags/tag_map.asp但是应该用图标代替链接。 我希望你理解:-)

最诚挚的问候, 那个人

html css background size
3个回答
2
投票

基本上,您可以创建一个具有背景图像的父元素或包装元素,然后将所有元素(如图标等)放入其中并进行所有定位等。所以我为您创建了这个:

CSS

.container {
    background: url(http://www.w3schools.com/tags/planets.gif) no-repeat; 
    width: 145px;
    height: 126px;
    position: relative;
}

.icon {
    position: absolute;
    width: 30px;
    height: 30px;
    border-radius: 100%;
    z-index: 2;
}

.icon1 {
    background: green;
    top: 20%;
    right: 10%;
}

.icon2 {
    background: red;
    bottom: 10%;
    left: 10%;
}

HTML

<div class="container">
    <div class="icon icon1"></div>
    <div class="icon icon2"></div>
</div>

这是 jsFiddle 的示例 http://jsfiddle.net/j5cgt22z/

因此每个图标都位于容器内,行星需要使用

position:absolute
使它们在容器空间中浮动,但容器需要具有
position:relative
以便它们相对于其父级 http://css 定位-tricks.com/absolute-positioning-inside-relative-positioning/

然后,您可以在每个位置上使用 z-index:绝对图标来堆叠每个图标,以便 z-index 越高,堆叠越高。

希望这有帮助


1
投票

意识到问题还没有通用的解决方案。 (对象拟合并未得到广泛支持)。 我使用了 jquery-Plugin imagefill.js.

CSS

.background {
    width:100%; 
    height:100%; 
    top: 0;
    left: 0;
    background-image: url(http://connect.homes.com/wp-content/uploads/2012/05/200392710-0012.jpg); 
    background-size: cover;
    z-index: 0;
    position: absolute;
    background-position: center center;
}

.container_icons
{
    position: absolute;
    height: 100%;
    width: 100%;
}

.test
{
    position: absolute;
    background-image: url('http://www.clipartbest.com/cliparts/ncX/qyL/ncXqyLdcB.png');
    background-size: 70px auto;
    background-repeat: no-repeat;
    background-position: 17% 49%;
}

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/2.1.0/jquery.imagesloaded.min.js"></script>
    <script src="http://johnpolacek.github.io/imagefill.js/js/jquery-imagefill.js"></script>

    <div class="background"></div>
    <div class="container_icons"><img class="test" src="http://upload.wikimedia.org/wikipedia/commons/8/8c/Transparent.png" width="3869px" height="2574px" /></div>
    <script>
        $('.container_icons').imagefill();
</script>

这是一个 jsfiddle --> 它的效果不如我的网页上的好;-)


0
投票

只需使用高度和宽度值进行一些计算并尝试运算符,例如:

.icon {
      position: absolute;
      left: 50%; // can do same calc there
      top: calc(50vh + 50vw / 5); // Calculate pos height + width / ratio
      transform: translate(-50%, -50%);
    }

计算 CSS 函数

© www.soinside.com 2019 - 2024. All rights reserved.