【发布时间】:2015-10-15 09:38:27
【问题描述】:
我有一个使用 CSS 蒙版创建的图像动画,但由于某种原因,img 上的媒体查询的 max-width: 100%; 属性隐藏/覆盖了图像的一部分。如果我删除它,它会正常显示,但图像没有响应。
代码/演示可以在这里找到(调整结果窗口大小以重现):http://jsfiddle.net/x2hnomhs/。
任何帮助将不胜感激。谢谢!
【问题讨论】:
我有一个使用 CSS 蒙版创建的图像动画,但由于某种原因,img 上的媒体查询的 max-width: 100%; 属性隐藏/覆盖了图像的一部分。如果我删除它,它会正常显示,但图像没有响应。
代码/演示可以在这里找到(调整结果窗口大小以重现):http://jsfiddle.net/x2hnomhs/。
任何帮助将不胜感激。谢谢!
【问题讨论】:
把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>
【讨论】:
max-width: 100%; 对img 进行媒体查询,因为整个网站上还有其他包含此内容的图像。我还注意到,在您的代码中,图像在底部被剪掉了一点(在桌面和移动设备上)
我真的想通了。希望这是您正在寻找的:
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;}
}
【讨论】: