CSS顶部相对于屏幕

时间:2018-02-13 13:09:47

标签: html css

我有一个问题,我有多个元素匹配背景图像的位置。当窗口大小改变时(特别是非常小),元素的“顶部”值不会保持不变。这个小问题累积起来,10个元素后来一切都完全错了。使用窗口大小(尝试使其非常小)来轻松查看问题。

如何解决此问题并使其始终与背景相匹配?

<!DOCTYPE html>
    <html>
    <head>
        <style>
            html, body {
                margin: 0;
            }
    
            div {
                min-width: 100%;
                min-height: 100%;  
                background-image: url("https://i.imgur.com/EX2L8y6.jpg");
                background-size: 100%, 100%;
                background-repeat: no-repeat;
                position: absolute;
            }
    
            .TheBtn {
                position: relative;
                background-color: red;
                opacity: 0.5;
                height: 4.4vw;
                width: 22.2vw;
                left: 19vw;
                top: 10.8vw;
            }
        </style>
    </head>
    <body>
        <div>
            <button class="TheBtn"></button>
        </div>
    </body>
    </html>

1 个答案:

答案 0 :(得分:1)

将元素设置为relative时,意味着所有子元素都与该父元素相关。 .TheBtn设置为相对但没有子元素。你需要将div设置为relative为.TheBtn是div的子节点,.TheBtn的位置相对于最近的相对父元素(div)是绝对的。这是我用来测试的代码:

&#13;
&#13;
html,body {
  margin: 0;
}

div {
  min-width: 100%;
  min-height: 100vh;
  background-image: url("https://i.imgur.com/EX2L8y6.jpg");
  background-size: 100%, 100%;
  background-repeat: no-repeat;
  position: relative;
}

.TheBtn {
  position: absolute;
  background-color: red;
  opacity: 0.5;
  height: 4.4vw;
  width: 22.2vw;
  left: 19vw;
  top: 10.8vw;
}
&#13;
<body>
    <div>
        <button class="TheBtn"></button>
    </div>
</body>
&#13;
&#13;
&#13;

我还用于测试目的将div的最小高度更改为100vh,这样它将跨越屏幕的整个高度。