Css图像叠加通过bootstrap响应

时间:2016-03-18 10:19:12

标签: jquery html css wordpress

我有一个图像,我创建了一个叠加,但我无法弄清楚如何使高度响应。我要么必须以像素定义它,要么它不起作用。我希望能够相应地调整高度和宽度,保持相同的图像宽高比。这是我的HTML:

<ul class="img-list">
  <li>
    <a href="http://nataliemac.com"><br>
       <img class="imgrd" src="http://127.0.0.1:8080/wordpress/wp-content/uploads/2016/03/PIC_6436-300x199.jpg" width="900" height="597" class="alignnone size-medium wp-image-189"><br>
       <span class="text-content"><span>Place Name</span></span><br>
    </a>
  </li>
<p>
  ...
</p>

我的CSS

ul.img-list {
  list-style-type: none;
  margin: 0;
  padding: 0;
  text-align: center;
}

ul.img-list li {
  display: inline-block;
  margin: 0 1em 1em 0;
  position: relative;
  width: 100%;
  height: 100%;

}

span.text-content span {
  display: inline-block;
  text-align: center;
  vertical-align: middle;
}

ul.img-list li:hover span.text-content {
  opacity: 1;
}
span.text-content {
  display: inline-block;
  background: rgba(0,0,0,0.5);
  color: white;
  cursor: pointer;
  display: table;
  left: 0;
  position: absolute;
  top: 25px;
  width: 100%; 
  height: 100%;
  border: 5px solid #fff;
  border-radius: 10px 125px;
  opacity: 0;
  -webkit-transition: opacity 500ms;
  -moz-transition: opacity 500ms;
  -o-transition: opacity 500ms;
  transition: opacity 500ms;
}

img.imgrd {
  border-radius: 10px 125px;
}

非常感谢帮助!

3 个答案:

答案 0 :(得分:0)

试试:

ul.img-list li {
  display: inline-block;
  margin: 0 1em 1em 0;
  position: relative;
  width: 100%;
  height: auto;
}

答案 1 :(得分:0)

或者,下来并弄脏并使用jquery抓取图像的高度,例如:

var imgheight = $('.imgrd').height();
$('.text-content').height(imgheight);

如果任何CSS方法适合您的使用,我会避免这种情况:)

答案 2 :(得分:0)

您希望将li span作为表格单元格,以便在叠加层中间正确获取文本:

span.text-content span {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}

然后,您需要使IMG响应。现在它不是,所以叠加是图像的100%宽度和高度,但是当容器收缩时图像不会改变。所以:

img.imgrd {
  border-radius: 10px 125px;
  width: 100%;
  max-width: 100%;
  height: auto;
}

之后,您有一些<br>标签会破坏布局...所以删除它们。并更新你的span.text-content以确保它从图像的顶部开始(0px而不是25px),并设置box-sizing属性以适应5px边框:

span.text-content {
  display: inline-block;
  background: rgba(0,0,0,0.5);
  color: white;
  cursor: pointer;
  display: table;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%; 
  height: 100%;
  border: 5px solid #fff;
  border-radius: 10px 125px;
  opacity: 0;
  -webkit-transition: opacity 500ms;
  -moz-transition: opacity 500ms;
  -o-transition: opacity 500ms;
  transition: opacity 500ms;
  box-sizing: border-box;
}

请在此处查看JSFiddle:

https://jsfiddle.net/xeqhepn4/2/