如何通过将图像堆叠在div中来设置图像上的功能区?

时间:2016-06-07 20:29:43

标签: html css angularjs

我目前有一个ng-repeat,如下所示:

<div class="repeaterDiv" data-ng-repeat="item in itemArray">
  <div class="wrapper">
    <img class="imageClass" ng-src="{{item.image}}"/>
    <div class="corner-ribbon bottom-right sticky green shadow">Changed</div>
  </div>
</div>

以下是从此codePen中提取的CSS:

.corner-ribbon{
  width: 200px;
  background: #e43;
  position: absolute;
  top: 25px;
  left: -50px;
  text-align: center;
  line-height: 50px;
  letter-spacing: 1px;
  color: #f0f0f0;
  transform: rotate(-45deg);
  -webkit-transform: rotate(-45deg);
}
.corner-ribbon.sticky{
  position: fixed;
}
.corner-ribbon.shadow{
  box-shadow: 0 0 3px rgba(0,0,0,.3);
}
.corner-ribbon.bottom-right{
  top: auto;
  right: -50px;
  bottom: 25px;
  left: auto;
  transform: rotate(-45deg);
  -webkit-transform: rotate(-45deg);
}
.corner-ribbon.green{background: #2c7;}

我试图找出如何将功能区限制为包装类。有谁知道我怎么做到这一点?所以我仍然使用相同的功能区,但它不是位于屏幕的右下角,而是位于图像的右下角?

2 个答案:

答案 0 :(得分:2)

您需要使用relative / absolute position并重置display的{​​{1}}缩小图片。然后添加.wrapper以剪切色带边缘:

&#13;
&#13;
overflow:hidden
&#13;
.corner-ribbon {
  width: 200px;
  background: #e43;
  position: absolute;
  top: 25px;
  left: -50px;
  text-align: center;
  line-height: 50px;
  letter-spacing: 1px;
  color: #f0f0f0;
  transform: rotate(-45deg);
  -webkit-transform: rotate(-45deg);
}
.corner-ribbon.sticky {
  position: absolute;
}
.corner-ribbon.shadow {
  box-shadow: 0 0 3px rgba(0, 0, 0, .3);
}
.corner-ribbon.bottom-right {
  top: auto;
  right: -50px;
  bottom: 30px;
  left: auto;
  transform: rotate(-45deg);
  -webkit-transform: rotate(-45deg);
}
.corner-ribbon.green {
  background: #2c7;
}
.wrapper {
  position: relative;
  display: table-cell;/* or inline-block or float */
  overflow: hidden;
}
img {
  display: block;
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

班级有固定的定位。

.corner-ribbon.sticky{
  position: fixed;
}

因此,对于精确的CSS,您可能无法将功能区附加到每个img,而功能区仅会转到窗口中的特定位置。但是,您可以稍微调整一下css。使包装类相对,和.corner-ribbon.sticky绝对位置。然后调整你的css fot top / bottom / left / right属性来对齐它们。

    .wrapper{
      position: relative;
    }
    .wrapper .corner-ribbon.sticky{
      position: absolute;
      /* put top/bottom/left/right values here*/
    }