CSS / JS调整图形以适合图像大小

时间:2016-07-06 07:44:33

标签: javascript jquery css resize figure

我尝试了一个带有过渡的小点,并希望显示图像的标题:悬停。这就是我现在所得到的:
(我试图用图像的大小来调整图形本身)

//Resize figure to image size
$(document).ready(function() {
  $("figure>img").load(function() {
    $(this).parent().width($(this).width());
  });
});
figure {
  display: table;
  position: relative;
  overflow: hidden;
}
figcaption {
  position: absolute;
  background: rgba(0, 0, 0, 0.75);
  color: white;
  padding: 10px 20px;
  opacity: 0;
  /* unvisible to fade in later */
  bottom: 0;
  left: 0;
  display: none;
  /* unvisible to fade in later */
  -webkit-transition: all 0.6s ease;
  -moz-transition: all 0.6s ease;
  -o-transition: all 0.6s ease;
}
figure:hover figcaption {
  opacity: 1;
  /* visible */
  left: 0;
  display: inline-block;
  /* visible */
}
.img-middle {
  height: 60%;
  width: 60%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<figure>
  <img class="img-middle" src="img/test.png" alt="" width="700" height="500"></img>
  <figcaption>This is a cool caption</figcaption>
</figure>

这个数字从来没有调整大小。
现在的问题是这个数字的宽度是100%,因此:hover效果也会触发图像旁边的某个地方。我不想手动设置数字的大小。当我尝试figure>img:hover figcaption { /* do stuff */ }(仅在图像悬停时触发标题淡入淡出)时,它就不再起作用了。
所以,因为那对我不起作用,我试图根据孩子的大小调整父母的大小......

The figure is bigger then my image

1 个答案:

答案 0 :(得分:1)

这就是你想要的吗?

figcaption {
  position: absolute;
  display: block;
  background: rgba(0, 0, 0, 0.75);
  color: white;
  height: 100%;
  overflow: hidden;
  width: 0;
  /* unvisible to fade in later */
  top: 0;
  left: 0;
  /* unvisible to fade in later */
  -webkit-transition: all 0.6s ease;
  -moz-transition: all 0.6s ease;
  -o-transition: all 0.6s ease;
  text-overflow: ellipsis;
  white-space: nowrap;
}
figure {
  display: table;
  position: relative;
  overflow: hidden;
  border: 1px solid;
  /**
  * only an example
  */
  width: 500px;
  height: 100px;
}
figure img {
  display: block;
  width: 100%%;
  height: 100%;
}
figure > .image-container {
  width: auto;
  display: block;
  width: 80%;
  margin: 0 auto;
}
figure > .image-container:hover {
  width: 100%;
}
figure > .image-container:hover figcaption {
  padding: 10px 20px;
  width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<figure>
  <div class="image-container">
    <img class="img-middle" src="http://lorempixel.com/400/200/" alt="" width="100%" />
    <figcaption>This is a cool caption</figcaption>
  </div>
</figure>