【问题标题】:How to skew image with CSS?如何用 CSS 倾斜图像?
【发布时间】:2015-07-17 09:29:09
【问题描述】:

我想像这样倾斜图像

当我申请div时它工作了

现在我想将此代码用于img 标记它不起作用。

这是我的实时代码:

https://jsfiddle.net/dbkvdq3u/5/

.steps-widget .step-img-box {
  position: relative;
  text-align: center;
  padding: 12px;
  margin-bottom: 6px;
  height: 60px;
}
.steps-widget .step-img-box:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 51%;
  z-index: -1;
  -webkit-transform: skew(0deg, 6deg);
  -moz-transform: skew(0deg, 6deg);
  -ms-transform: skew(0deg, 6deg);
  -o-transform: skew(0deg, 6deg);
  transform: skew(0deg, 6deg);
}
.steps-widget .step-img-box:after {
  z-index: -1;
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: 50%;
  -webkit-transform: skew(0deg, -6deg);
  -moz-transform: skew(0deg, -6deg);
  -ms-transform: skew(0deg, -6deg);
  -o-transform: skew(0deg, -6deg);
  transform: skew(0deg, -6deg);
}
<div class="step-img-box">
  <img class="img-responsive" src="http://i.imgur.com/E7atspO.jpg" alt="Image">
</div>
<!-- end step-img-box -->

【问题讨论】:

  • 问题是什么?
  • jsfiddle.net/tusharj/dbkvdq3u/6 喜欢这样吗?
  • 您的示例图像看起来没有歪斜 - 它看起来像是在它周围放置了一个白色蒙版。
  • 不确定您所说的 div 等 img 是什么意思,但请查看 this answer。没有 overflow:hidden 在父级上的相同倾斜方法应该适合您。
  • @TheHung:使用skew,您无法使用单个img 元素实现此目的(因为您不能在一个方向上倾斜一半而在另一个方向上倾斜一半)。看看我在之前的评论中提供的链接。这应该足够简单以适应img 标签。或者你可以看看 SVG/CSS 剪辑路径。它可能适用于纯色,可能是因为您为伪元素添加了背景颜色。

标签: jquery html css transform skew


【解决方案1】:

您可以使用伪元素,使用背景位置属性来对齐图像的两个“半”:

div {
  height: 300px;
  width: 300px;
  position: relative;
  margin: 100px auto;
}
div:before,
div:after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 50%;
  background-size: 300px 300px;
}
div:before {
  transform: skewY(10deg);
}
div:after {
  left: 50%;
  background-position: -100% 0;
  transform: skewY(-10deg);
}
.sk:before, .sk:after{  background-image: url(http://lorempixel.com/300/300);}
.sk2:before, .sk2:after{  background-image: url(http://lorempixel.com/400/400);}
<div class="sk"></div>
<div class="sk2"></div>

【讨论】:

  • 感谢@jbutler483 出色的回答。我有一个小问题,如果我想更改背景图像,所以我尝试添加另一个名为 bg-1 的类并将 background-image 添加到此,但它不起作用。
  • @TheHung 请看我的编辑。我使用了一个类来添加 :before:after 元素
  • @jbutler483 非常感谢。很好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
相关资源
最近更新 更多