IMG大小调整和带有斜角边框的问题

5
我希望用一个斜角边框将两张图片分开。我已经成功地给第一张图片设置了大小。但我尝试对第二张图片进行设置,迄今为止什么也没有效果。 我的工作如下: 即使我试图单独设置它,第二张图像也没有得到斜角边框。 背景如下所示,我想让图像匹配这个角度。

.left,
.right {
  background: #000;
  position: relative;
  height: 100px;
  width: 45%;
  float: left;
  margin-top: 10px;
  opacity: 10%;
}

.right,
.right img {
  margin-left: 0px;
  border-top-right-radius: 10px;
  border-bottom-right-radius: 10px;
}

.left,
.left img {
  border-top-left-radius: 10px;
  border-bottom-left-radius: 10px;
}

.left:after {
  content: '';
  line-height: 0;
  font-size: 0;
  width: 0;
  height: 0;
  border-top: 50px solid transparent;
  border-bottom: 100px solid #fff;
  border-left: 30px solid transparent;
  border-right: 0px solid #fff;
  position: absolute;
  top: -50px;
  right: 0;
}

.right:before,
{
  content: '';
  line-height: 0;
  font-size: 0;
  width: 0;
  height: 0;
  border-top: 100px solid #fff;
  border-bottom: 50px solid transparent;
  border-left: 0px solid transparent;
  border-right: 30px solid transparent;
  position: absolute;
  top: 0;
  left: 0;
}

.left img,
.right img {
  position: relative;
  width: 100%;
  height: 100%;
  opacity: 0.5;
}

.left img:hover,
.right img:hover {
  opacity: 1;
  cursor: pointer;
}
<div class="left"><img src="./img/chu.jpg"></div>
<div class="right"><img src="./img/chu.jpg"></div>

2个回答

1
你可以尝试使用 clip-path 属性:

.left,
.right {
  display: inline-block;
  overflow: hidden;
  position: relative;
}

.left {
  border-radius: 10px 0 0 10px;
  -webkit-clip-path: polygon(0 0, 100% 0%, 80% 100%, 0% 100%);
  clip-path: polygon(0 0, 100% 0%, 80% 100%, 0% 100%);
}

.right {
  border-radius: 0 10px 10px 0;
  -webkit-clip-path: polygon(21% 0, 100% 0%, 100% 100%, 0% 100%);
  clip-path: polygon(21% 0, 100% 0%, 100% 100%, 0% 100%);
  margin-left: -40px;
}

img {
  display: block;
}
<div class="left">
  <img src="https://picsum.photos/200/100?image=1069">
</div>
<div class="right">
  <img src="https://picsum.photos/200/100?image=1065">
</div>

这里有一个比使用倾斜变换更受支持的想法:

.container {
  display: inline-block;
  border-radius: 10px;
  overflow: hidden;
}

.left,
.right {
  display: inline-block;
  vertical-align:top;
  width: 200px;
  height: 100px;
  position: relative;
  transform: skew(-20deg);
  overflow: hidden;
}

.left,
.right img {
  margin-left: -20px;
}

.right {
  margin-right: -20px;
  margin-left: 5px;
}

img {
  display: block;
  transform: skew(20deg);
  width: 110%;
}
<div class="container">
  <div class="left">
    <img src="https://picsum.photos/200/100?image=1069">
  </div>
  <div class="right">
    <img src="https://picsum.photos/200/100?image=1065">
  </div>
</div>


@BrainBox 如果您感兴趣,我添加了另一种方法。 - Temani Afif

1
你的代码完全没问题,只需删除.right:before样式后面的逗号(,),在此之后一切都会正常工作。不要更改你的CSS。

.left,
.right {
  background: #000;
  position: relative;
  height: 100px;
  width: 45%;
  float: left;
  margin-top: 10px;
  opacity: 10%;
}

.right,
.right img {
  margin-left: 0px;
  border-top-right-radius: 10px;
  border-bottom-right-radius: 10px;
}

.left,
.left img {
  border-top-left-radius: 10px;
  border-bottom-left-radius: 10px;
}

.left:after {
  content: '';
  line-height: 0;
  font-size: 0;
  width: 0;
  height: 0;
  border-top: 50px solid transparent;
  border-bottom: 100px solid #fff;
  border-left: 30px solid transparent;
  border-right: 0px solid #fff;
  position: absolute;
  top: -50px;
  right: 0;
}

.right:before
{
  content: '';
  line-height: 0;
  font-size: 0;
  width: 0;
  height: 0;
  border-top: 100px solid #fff;
  border-bottom: 50px solid transparent;
  border-left: 0px solid transparent;
  border-right: 30px solid transparent;
  position: absolute;
  top: 0;
  left: 0;
}

.left img,
.right img {
  position: relative;
  width: 100%;
  height: 100%;
  opacity: 0.5;
}

.left img:hover,
.right img:hover {
  opacity: 1;
  cursor: pointer;
}
<div class="left"><img src="./img/chu.jpg"></div>
<div class="right"><img src="./img/chu.jpg"></div>


1
嗯,我不知道我是怎么把它留在那里的。这仍然没有解决我的问题,因为它是背景的样式。我想保持黑色背景,因为两个图像都将具有深色背景的不透明度。 - BrainBox
请问您能否分享具体的需求,以便我能够帮助您。 - Shashank Malviya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接