使用 CSS 使两个背景图像与 div 一起响应

Make two background images responsive alongside divs with CSS

我正在努力让 2 张背景图片彼此同步缩小,所以我的座位计划将适用于 mobile/tablets。

我尝试了背景覆盖、包含、100% 并将其他 div 值设置为 100%,但我对将这些座位保持在适当位置并不满意。

因此,对于低于 650px 的座位图,不仅背景图像需要缩小,而且座位图像也需要缩小 - 它们需要保持其在座位图上的位置。包含的 div 当前设置为 15px 以显示座位图像。

这是我正在使用的原始静态宽度代码 https://jsfiddle.net/kjyopdL8/

座位尺寸应为 15px,直到座位平面图低于 650px,然后座位图像与主座位平面图同步缩小,同时保持相同的位置和比例

#theatre {
  width: 650px;
  float: left;
  padding-right: 5px;
  margin: 25px 15px 0 10px;
}

.container {
  width: 100%;
  margin: 0 auto;
}

#bmessage {
  padding: 1px 3px;
  height: 20px;
  font-size: 14px;
  background: #ddf;
  color: #080;
  font-weight: bold;
}
#seats:before {
  content: url('http://i.imgur.com/qn56yss.gif');
}

#seats {
  margin: 10px 0;
  padding: 10px 0;
  position: relative;
}

#seats div {
  position: absolute;
  width:15px;
  height:15px;
}

#seats .s1.std.grey {
  background: url('https://s3.postimg.org/g9dq32nqr/1_1_2.png') no-repeat center top;
}
<div id="theatre">
  <div class="container">
    <div id="bmessage">Select the seats that you need.</div>
    <div id="seats">
      <div class="s1 std grey" si="0" title="A16" style="top:16%; left:8.5%;"></div>       
      <div class="s1 std grey" si="1" title="A15" style="top:16%; left:12%;"></div>
      <div class="s1 std grey" si="2" title="A14" style="top:16%; left:15.5%;"></div>       
      <div class="s1 std grey" si="3" title="A13" style="top:16%; left:19%;"></div>
    </div>
  </div>

Ethan Marcotte 撰写了大量关于响应式背景图片的文章。 您可以在他的博客或 here..

上阅读很多内容

您主要想为背景图片设置以下属性:

  1. 将#image 元素的显示属性 设置为内联块。如果没有这个 属性,CSS 会将 <span> 元素显示为内联元素,我们将无法为其指定宽度或(稍后)高度。
  2. 将该元素的宽度设置为 100%,以便我们的图像填充包含 <div>
  3. 将字体大小和行高属性设置为 0,这样跨度内的任何内容都不会影响其大小。
  4. 将垂直对齐 属性 设置为中间,使图像元素在包含 <div> 中垂直居中。 将背景大小 属性 设置为 100%,以便我们的图像填充图像元素。
  5. 将背景位置 属性 设置为 50% 50% 以在图像元素内对齐背景图像。
  6. 将背景重复 属性 设置为不重复以防止浏览器水平或垂直平铺图像。

如果您对叠加层和下面的图像采用这种方法,并且它们的大小相同,那么对齐应该没有问题。

媒体查询将帮助您处理不同的屏幕尺寸。

您的 css 上有很多错误。如果您希望它具有响应性,请不要在您的容器上提供固定宽度。我编辑了你的 fiddle 并想出了这个:https://jsfiddle.net/kjyopdL8/4/

#seats:before {
    content: '';
    display: block;
    padding: 50%;
}

#seats {
    margin: 10px 0;
    padding: 10px 0;
    position: relative;
    background-image: url(http://i.imgur.com/qn56yss.gif);
    background-repeat: no-repeat;
    background-size: cover;
}

看看之前的伪选择器。它成功了!