图像右侧的透明箭头

时间:2016-06-27 09:37:36

标签: css css3 css-shapes

我试图在图像的右侧放置一个透明箭头,垂直放在中间并显示背景图像。

我已经阅读了this answerthis codepen基本上就是我想要的,但我无法理解为什么它有效以及我需要什么改为将其置于右侧。

Codepen代码:

  .wrap {
  position: relative;
  overflow: hidden;
  width: 70%;
  height:150px;
  margin: 0 auto;
  background-color:#fff;
}

.wrap img {
  width: 100%;
  height: auto;
  display: block;
}

.wrap:before, .wrap:after {
  content:'';
  position: absolute;
  bottom: 0;
  width: 50%;
  background-color: inherit;
  padding-bottom:3%;
}

.wrap:before {
  right: 50%;
  -ms-transform-origin: 100% 100%;
  -webkit-transform-origin: 100% 100%;
  transform-origin: 100% 100%;
  -ms-transform: skewX(45deg);
  -webkit-transform: skewX(45deg);
  transform: skewX(45deg);
}

.wrap:after {
  left: 50%;
  -ms-transform-origin: 0 100%;
  -webkit-transform-origin: 0 100%;
  transform-origin: 0 100%;
  -ms-transform: skewX(-45deg);
  -webkit-transform: skewX(-45deg);
  transform: skewX(-45deg);
}

2 个答案:

答案 0 :(得分:0)

图像上有两个白色背景的多边形,它不是箭头,而是两个多边形之间的空间。 Changin可以移动三角形的:before:after的宽度和位置。



.wrap {
  position: relative;
  overflow: hidden;
  width: 70%;
  height:150px;
  margin: 0 auto;
  background-color:#fff;
}
.wrap img {
  width: 100%;
  height: auto;
  display: block;
}
.wrap:before, .wrap:after {
  content:'';
  position: absolute;
  bottom: 0;
  width: 100%;
  background-color: inherit;
  padding-bottom:3%;
}
.wrap:before {

  -ms-transform-origin: 100% 100%;
  -webkit-transform-origin: 100% 100%;
  transform-origin: 100% 100%;
  -ms-transform: skewX(45deg);
  -webkit-transform: skewX(45deg);
  transform: skewX(45deg);
}
.wrap:after {
  left: 97%;
  -ms-transform-origin: 0 100%;
  -webkit-transform-origin: 0 100%;
  transform-origin: 0 100%;
  -ms-transform: skewX(-45deg);
  -webkit-transform: skewX(-45deg);
  transform: skewX(-45deg);
}

<div class="wrap">
    <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" />
</div>
&#13;
&#13;
&#13;

在某些分辨率的Firefox中,图片底部会显示一个像素,可以在bottom:-1px中修复宽度.wrap::before, .wrap::after

答案 1 :(得分:0)

您需要更改的主要css属性为transform-origintransform以及其他一些更改,如下所示:

.wrap {
  position: relative;
  overflow: hidden;
  width: 70%;
  height:150px;
  margin: 0 auto;
  background-color:#fff;
}

.wrap img {
  width: 100%;
  height: auto;
  display: block;
}

.wrap:before, .wrap:after {
  content:'';
  position: absolute;
  right: 0;
  height: 50%;
  background-color: inherit;
  padding-right:3%;
}

.wrap:before {
  bottom: 50%;
  -ms-transform-origin: 100% 100%;
  -webkit-transform-origin: 100% 100%;
  transform-origin: 100% 100%;
  -ms-transform: skewY(45deg);
  -webkit-transform: skewY(45deg);
  transform: skewY(45deg);
}

.wrap:after {
  top: 50%;
  -ms-transform-origin: 100% 0;
  -webkit-transform-origin: 100% 0;
  transform-origin: 100% 0;
  -ms-transform: skewY(-45deg);
  -webkit-transform: skewY(-45deg);
  transform: skewY(-45deg);
}
<div class="wrap">
    <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" />
</div>