【问题标题】:Make image div's with overlays fully responsive?使带有叠加层的图像 div 完全响应?
【发布时间】:2013-09-28 05:54:29
【问题描述】:

过去我已经完成了很多响应式网站,但我一直在努力解决这个问题。

我想产生这种效果: http://playwp.equiet.sk/

我为其中一个图像 div 创建了一个我所做的 jsfiddle。我已经删除了我添加的响应方面,因为我无法让它与叠加层一起正常运行,并希望有人可以帮助我解决这个问题。

这是我想要响应的 jsfiddle: http://jsfiddle.net/mattmagi/ZS7ZA/1/

<div class="one">
  <img src="http://tst.eclipsecreative.ca/3clips3/wp-content/uploads/2013/01/team.jpg"/>
    <div class="two">
      <img src="http://tst.eclipsecreative.ca/3clips3/wp-content/uploads/2013/01/team-hover.jpg"/>
      <div class="info">
        <p class="name">Sally Salamander</p>
        <p class="position">Account Manager</p>
      </div>
      <div class="social">
        <a href="#"><img src="http://www.tompeters.com/_/i/twitter-icon.png" /></a> <a href="#"><img src="http://www.tompeters.com/_/i/twitter-icon.png" /></a> <a href="#"><img src="http://www.tompeters.com/_/i/twitter-icon.png" /></a>
      </div>
  </div>
</div>


.one {
    position: relative;
    background-color: transparent;
}
.two {
    position: relative;
    top: -364px;
    left: 0px;
}
.info {
position: relative;
top: -365px;
padding-top: 30px;
padding-left: 30px;
background-color: transparent;
}
.social {
position: relative;
top: -365px;
padding-top: 15px;
padding-left: 30px;
background-color: transparent;
}
.name {font-size: 24px;}
.position {font-size: 16px;}


编辑:好的,这是我的意思的另一个例子(忽略悬停故障): http://jsfiddle.net/mattmagi/3d5Jr/

这些块将浮动到左侧,因此当您的浏览器变大时会显示更多块,但是当它介于中间大小时,我希望它自动填充浏览器,因此图像右侧永远不会有任何空白,所以让它缩放以适应。

提前致谢。

【问题讨论】:

  • 你说的是响应式的,但是有很多方法可以做到这一点。你想做什么?您想显示或隐藏哪些元素,更小还是更大?
  • 你想让图像像屏幕一样缩放吗?
  • 是的,我实际上在我发送了一个链接到上面的那个主题中实现了这个。我希望它始终填满屏幕,但每个元素的最小宽度为 540px。因此,例如,如果您的屏幕宽度为 1440 像素,它将仅显示两个宽度,但 div 的/图像会增加尺寸缩放以填充浏览器窗口。我设法让他们做出响应,但实际上并没有扩大规模。例如,我会快速创建一个 html 页面。抱歉,让我们度过了漫长的一天。
  • 好的,这是我的意思的一个例子:jsfiddle.net/mattmagi/3d5Jr 它们会浮动到左边,所以当你的浏览器变大时会显示更多的块,但是当它的大小介于中间时,我希望它自动填充浏览器,因此图像右侧永远不会有任何空白,因此请对其进行缩放以适应。

标签: html css responsive-design


【解决方案1】:

您应该使用media queries 和百分比宽度..

这样,您可以在媒体查询中通过指定子元素的宽度(以完美加起来为 100% 的百分比)来定义所需的列数,并使图像成为width:100% 在这些元素中,您可以使它们自动缩放..

演示地址 http://jsfiddle.net/gaby/Yz7mf/1/
全屏http://fiddle.jshell.net/gaby/Yz7mf/1/show/light/

所以对于一个结构来说

<div id="container">
  <div class="item"><img src="http://lorempixel.com/200/150/city/1" /></div>
  <div class="item"><img src="http://lorempixel.com/200/150/city/2" /></div>
  <div class="item"><img src="http://lorempixel.com/200/150/city/3" /></div>
  <div class="item"><img src="http://lorempixel.com/200/150/city/4" /></div>
  <div class="item"><img src="http://lorempixel.com/200/150/city/5" /></div>
  <div class="item"><img src="http://lorempixel.com/200/150/city/6" /></div>
</div>

你可以使用一个 CSS

#container{
    overflow:auto;
}
#container > div{
    float:left;
}
#container > div > img{
    width:100%;
    display:block;
}

@media screen and (max-width:400px){
  #container > div{
    width:50%;
  }
}
@media screen and (min-width:401px) and (max-width:600px){
  #container > div{
    width:25%;
  }
}
@media screen and (min-width:601px){
  #container > div{
    width:20%;
  }
}

这意味着当浏览器的宽度达到 400px 时使用 2 列,宽度在 401px 和 600px 之间使用 4 列,宽度大于 600px 使用 5 列。

【讨论】:

  • 是的,谢谢,但这并不能解决我隐藏的 div/overlay 的问题,我可以让图像做到这一点没问题,但是当我在我的 jsfiddle 中有覆盖时它不能正常工作我的问题中的例子。让我知道您是否可以将叠加层引入您的示例中,我被卖掉了。
  • @matt,如果您在我的示例中将.item 设置为position:relative,您可以在其中添加另一个div,即position:absolute,顶部/左侧/右侧/底部为0,这样它就可以填满它的容器,并且可以在其中放置标题。请参阅 fiddle.jshell.net/gaby/Yz7mf/5/showjsfiddle.net/gaby/Yz7mf/5我使用了一些过渡来展示一些效果,但我只包含了标准语法..您可能想要添加供应商特定的前缀以使其在浏览器中工作.. )
  • 非常感谢,但我的问题是我希望叠加层成为另一个图像,或者从灰度变为彩色......即使在第二个 div 中有另一个图像,这仍然有效吗?
  • 编辑:我想我在这里得到它:jsfiddle.net/mattmagi/Yz7mf/7(它只在第一张图片上)
【解决方案2】:

我找到了这个例子来说明你的意思:

http://dabblet.com/gist/2778608

这应该会有所帮助。我不确定如何将悬停与此集成。如果你弄清楚了,请告诉我。

另外,尝试使用响应式框架来节省大量时间:

http://foundation.zurb.com

【讨论】:

  • 我确实使用 Zurb,我唯一的问题是叠加层,我可以获得简单的图像来做到这一点没问题,而且您的示例也没有像网格一样填充屏幕的图像(并排)。不过还是谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-07-31
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
  • 2019-10-23
  • 2013-10-26
  • 2011-12-07
相关资源
最近更新 更多