【问题标题】:Part of Image Covered in Responsive View响应式视图中覆盖的部分图像
【发布时间】:2015-10-15 09:38:27
【问题描述】:

我有一个使用 CSS 蒙版创建的图像动画,但由于某种原因,img 上的媒体查询的 max-width: 100%; 属性隐藏/覆盖了图像的一部分。如果我删除它,它会正常显示,但图像没有响应。

代码/演示可以在这里找到(调整结果窗口大小以重现):http://jsfiddle.net/x2hnomhs/

任何帮助将不胜感激。谢谢!

【问题讨论】:

标签: html css


【解决方案1】:

height:auto改成height:100%@media screen and (max-width: 940px)

sn-p:

.logo {
  display: block;
  width: 450px;
  margin: 0 auto;
  padding-bottom: 40px;
}
.logo a {
  display: block;
  height: 288px;
  overflow: hidden;
  width: 450px;
  position: relative;
}
.logo a img.logoMask {
  position: relative;
  z-index: 20;
  width: 100%;
  height: auto;
}
.logo a img.color {
  position: absolute;
  z-index: 1;
  left: 0;
  top: 3px;
  -webkit-animation: logoColor 15s infinite; /* Chrome, Safari, Opera */
  animation: logoColor 15s infinite;
}

/* Chrome, Safari, Opera */
@-webkit-keyframes logoColor {
  0% {
    left: 0;
  }
  50% {
    left: -2500px;
  }
  100% {
    left: 0;
  }
}
/* Standard syntax */
@keyframes logoColor {
  0% {
    left: 0;
  }
  50% {
    left: -2500px;
  }
  100% {
    left: 0;
  }
}
@media screen and (max-width: 940px) {
  img {
    max-width: 100%;
    height: 100%;
  }
}
<div class="logo">
  <a style="padding-right: 0">
    <img src="http://api.marioparra.me/img/api-logo-mask.png" class="logoMask" />
    <img src="http://api.marioparra.me/img/api-logo-gradient.png" class="color" />
  </a>

</div>

更新:基于 OP cmets(阐明 OP 真正想要实现的目标

由于您想在所有视口大小中创建相同类型的 animation 并使其具有响应性,因此这里是一个 sn-p(添加了 cmets 以解释更改):

.logo {
  display: block;
  max-width: 450px;
  /* changed from width to max-width */
  margin: 0 auto;
  padding-bottom: 40px;
  overflow: hidden;
  /* added this */
}
.logo a {
  display: block;
  height: 288px;
  overflow: hidden;
  max-width: 450px;
  /* changed from width to max-width */
  position: relative;
}
.logo a img.logoMask {
  position: relative;
  z-index: 20;
  width: 100%;
  height: auto;
}
.logo a img.color {
  position: absolute;
  z-index: 1;
  left: 0;
  top: -50%;
  /* changed from 3px to -50% */
  -webkit-animation: logoColor 5s infinite;
  /* Chrome, Safari, Opera */
  animation: logoColor 5s infinite;
}
/* Chrome, Safari, Opera */

@-webkit-keyframes logoColor {
  0% {
    left: 0;
  }
  50% {
    left: -2500px;
  }
  100% {
    left: 0;
  }
}
/* Standard syntax */

@keyframes logoColor {
  0% {
    left: 0;
  }
  50% {
    left: -2500px;
  }
  100% {
    left: 0;
  }
}
/*removed uncessary media queries because you are using now max-width in your parent container , with that your img {width:100%} it is enough to make it responsive. */

@media screen and (max-width: 480px) {
  .logo a img.color {
    top: -60%
  }
}
@media screen and (max-width: 360px) {
  .logo a img.color {
    top: -72%
  }
}
<div class="logo">
  <a style="padding-right: 0">
    <img src="http://api.marioparra.me/img/api-logo-mask.png" class="logoMask" />
    <img src="http://api.marioparra.me/img/api-logo-gradient.png" class="color" />
  </a>
</div>

【讨论】:

  • 谢谢,但我试过了,它会导致图像被完全隐藏/覆盖——它需要在动画横向滚动时可见。
  • 嗯,我在运行您的代码并调整窗口大小时没有这样做
  • 好的,我知道您不想在图像之间出现空白(动画开始/结束),我认为您需要 2 种用于不同视口的“动画”。如果你愿意,我可以更新我的答案并告诉你修复方法
  • 是的,我认为这可能有点令人困惑。如果您能提供帮助,那就太好了
  • 这样更好,但我仍然需要使用max-width: 100%;img 进行媒体查询,因为整个网站上还有其他包含此内容的图像。我还注意到,在您的代码中,图像在底部被剪掉了一点(在桌面和移动设备上)
【解决方案2】:

我真的想通了。希望这是您正在寻找的:

http://jsfiddle.net/x2hnomhs/2/

.logo {
    display: block;
    max-width: 450px;
    width: auto;
    margin: 0 auto;
    overflow: hidden;
}

.logo a {
    display: block;
    height: 100%;
    width: 100%;
    position: relative;    
}

.logo a img.logoMask {
    position: relative;
    z-index: 20;
    width: 100%;
    display: block;
    height: auto;
}

.logo a img.color {
    position: absolute;
    z-index: 1;
    left: 0;
    top: 3px;
    -webkit-animation: logoColor 15s infinite; /* Chrome, Safari, Opera */
    animation: logoColor 15s infinite;
}

/* Chrome, Safari, Opera */
@-webkit-keyframes logoColor {
    0%   {left: 0;}
    50%  {left: -2500px;}
    100% {left: 0;}
}

/* Standard syntax */
@keyframes logoColor {
    0%   {left: 0;}
    50%  {left: -2500px;}
    100% {left: 0;}
}

【讨论】:

  • 谢谢!这做到了!你改变了什么?只是为了让我能理解解决方案
  • 没关系——媒体查询的问题仍然存在,我需要其他图像:jsfiddle.net/x2hnomhs/3
猜你喜欢
  • 1970-01-01
  • 2014-03-03
  • 2017-01-03
  • 1970-01-01
  • 2019-08-05
  • 2011-12-23
  • 2019-08-24
  • 1970-01-01
  • 2015-05-25
相关资源
最近更新 更多