【问题标题】:Applying images on top of a background image在背景图像上应用图像
【发布时间】:2017-07-08 20:27:55
【问题描述】:

我的 CSS 代码似乎有问题。我想在页面widthheight100% 有一个背景图像,然后战略性地将其他图像放置在背景图像的顶部。我遇到的问题是,当我绝对将图像放在顶部时,除非我指定背景图像的实际高度,否则实际图像不会显示在背景中。任何人都可以建议一种方法来实际指定背景图像的高度吗?

#map {
  background-image: url("images/middleearth_map.png");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

#registermap {
  position: absolute;
  top: 5%;
  right: 2%;
}

#gollum {
  position: absolute;
  top: 40%;
  right: 15%;
}

#playtrailer {
  position: absolute;
  top: 30%;
  left: 0%;
}
<div id="map">
  <div id="registermap">
    <a href="register.html">
      <img src="images/middle-earth_map1.png" alt="Registration Link" class="wobble" />
    </a>
  </div>

  <div id="gollum">
    <a href="cast.html">
      <img src="images/gollum.png" alt="Cast and Crew Link" class="wobble" />
    </a>
  </div>

  <div id="playtrailer">
    <a href="trailer.html">
      <img src="images/play_button.png" alt="Movie Trailer Link" class="wobble" />
    </a>
  </div>
</div>

【问题讨论】:

  • 能否上传演示图片?
  • “我想要一个 100% 的页面宽度和高度的背景图片” - 真的吗?您知道这会拉伸图像,而忽略其原始纵横比吗?对于某种地图来说,这是一个相当奇怪的需求。另外,它产生很多您正在处理的问题 - 您的绝对元素位置取决于视口,因此它们不会经历与扭曲地图上的“元素”相同的转置.我认为您将需要选择背景大小containcover,在这之前甚至允许中途微不足道的解决方案。

标签: html css image


【解决方案1】:

您可以将background-image 设置为body 以确保它占据所有窗口。

body {
  background-image: url("https://i.stack.imgur.com/6JzYG.jpg");
  background-size: 100% 100%; /* Picture stretches */
  min-height: 100vh; /* Body occupies at least all screen */
  margin: 0;
}

【讨论】:

  • 如果我使用 min-height: 100vh 它只会延伸到查看区域,而不是 100% 的网络浏览器。
  • 正文将被其内容拉伸。如果你做的每件事都正确的话,至少应该这样做。
  • @shakarn7 看看jsFiddle 滚动到body 时的样子。
  • 我尝试将 css 更改为 body,但背景图像不会拉伸。为了让它填满整个网络浏览器,我必须取消不重复,但显然它会重复,而不是延伸。我认为这是因为身体之后的绝对定位图像。我似乎无法让它工作。
  • @shakarn7 你能在你的演示中添加/上传图片来重现这个问题吗?
【解决方案2】:

map id 的 div 没有填满所有窗口大小,请将 css 更改为:

#map {
  background-image: url("images/middleearth_map.png");
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-size: 100% 100%;
  width: 100vw;
  height: 100vh;
  margin:0;
  padding:0;
}

【讨论】:

  • 我以前只在我的 css 代码中使用过 px 或 % 。你能解释一下 vw 和 vh 是什么意思吗?
  • @shakarn7 vw (viewport-width) – 屏幕宽度的百分比,100vw 表示屏幕宽度的100%vh (viewport-height) – 屏幕高度的百分比, 100vh 表示屏幕高度的100%
  • 所以我尝试了这个,但是当我向下滚动时,背景图像并没有覆盖 100% 的网络浏览器页面。
猜你喜欢
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
相关资源
最近更新 更多