为什么盒子里有未知的边距/填充?

时间:2018-03-20 17:39:45

标签: html css

有人能告诉我为什么盒子底部会出现未知的边距/填充物?请看看你是否可以调查并帮助我。我还希望图像最初放大,然后在旋转之前和旋转之后以比例= 1放大,它将再次放大。

* {
  margin: 0;
  padding: 0;
}

body {
  background-color: #f9cf47;
}

.box {
  width: 50%;
  height: auto;
  margin: 0 auto;
  overflow: hidden;
  border: 1px solid red;
}

.box p {
  margin: 0;
}

img {
  width: 100%;
}

.rotate-img {
  position: relative;
  animation-name: rotation;
  -webkit-animation: rotation 1s linear 1;
  -moz-animation: rotation 1s linear 1;
  animation: rotation 1s linear 1;
  animation-delay: 3s;
  animation-fill-mode: forwards;
}


/* Safari 4.0 - 8.0 */

@-webkit-keyframes rotation {
  0% {
    -webkit-transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(180deg);
  }
}


/* Standard syntax */

@keyframes rotation {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(180deg);
  }
}
<div class="box">
  <img class="rotate-img" src="http://via.placeholder.com/350x150" />
</div>

1 个答案:

答案 0 :(得分:0)

因为在该框中,您有一个内嵌元素img,默认情况下与baseline对齐...所以您需要对图像使用vertical-align: top以消除间隙。 ..

如果您将border应用于该图片而不是框,则不会看到任何差距......

此外,您需要使用一些关键帧时序来实现结果

&#13;
&#13;
* {
  margin: 0;
  padding: 0;
}

body {
  background-color: #f9cf47;
}

.box {
  width: 50%;
  height: auto;
  margin: 0 auto;
  overflow: hidden;
  border: 1px solid red;
}

.box p {
  margin: 0;
}

img {
  vertical-align: top;
  width: 100%;
}

.rotate-img {
  position: relative;
  animation-name: rotation;
  animation: rotation 2s linear 1;
  animation-fill-mode: forwards;
}

@keyframes rotation {
  0% {
    transform: rotate(0deg) scale(2);
  }
  33% {
    transform: rotate(0deg) scale(1);
  }
  66% {
    transform: rotate(180deg) scale(1);
  }
  100% {
    transform: rotate(180deg) scale(2);
  }
}
&#13;
<div class="box">
  <img class="rotate-img" src="http://via.placeholder.com/350x150" />
</div>
&#13;
&#13;
&#13;