使用CSS

时间:2016-02-23 23:47:41

标签: javascript jquery html css

我试图实现以下目标:

enter image description here

对角分割应该从右上角到左下角,以一个精确的角度,使两边的比例完全相等。

我在网上找到了一个例子,但它适用于宽视角图像,在尝试修改它以适应我的1:1比例目的时,我似乎无法使底部图像正确排列,但是最好的一个工作正常。

对角线分割也偏离中心,黄色背景显示应由下方图像填充的区域。较低的图像应与顶部图像的大小相同,只有下半部分而不是上半部分显示。

我创造了一个小提琴演示:https://jsfiddle.net/uxuv17at/2/

HTML

<div class="split-image-container">
    <div class="split-image-bottom">
        <img src="https://merkd.com/usr/members/icons/thumb.php?src=1435366066.9.png&w=300" alt="Just Another Clan" title="Just Another Clan" />
    </div>
    <img src="https://merkd.com/usr/teams/icons/thumb.php?src=1441676463.1.jpg&w=300" alt="ExtraordinaryKillers" title="ExtraordinaryKillers" />
</div>

CSS

.split-image-container{
    height: 300px;
    width: 300px;
    overflow: hidden;
    position: relative;
    border: 1px solid black;
    padding: 0;
    background-color: green;
}
/*Rotate this div and position it to cut the rectangle in half*/
.split-image-bottom{
    transform: rotate(315deg);
    position: absolute;
    top: 85px;
    left: 70px;
    overflow: hidden;
    height: 350px;
    width: 350px;
    background: yellow;
}
/*Apply exact opposite amount of rotation to the .image2 class so image appears straight */
/*Also align it with the top of the rectangle*/
.split-image-bottom img{
    transform: rotate(45deg);
    position: absolute;
    top: -50px;
    left: 15px;
}

1 个答案:

答案 0 :(得分:1)

仅限CSS

使用clip-path属性的纯CSS解决方案。 Browser support虽然非常糟糕。

.split-image-container{
    height: 300px;
    width: 300px;
    position: relative;
}

img{
  width:100%;
  height:100%;
  position:absolute;
}

.clip{
  -webkit-clip-path: polygon(100% 0%, 0% 100%, 100% 100%);
  clip-path: polygon(100% 0%, 0% 100%, 100% 100%);
}
<div class="split-image-container">
    <img src="https://merkd.com/usr/members/icons/thumb.php?src=1435366066.9.png&w=300" alt="Just Another Clan" title="Just Another Clan"/>
    <img src="https://merkd.com/usr/teams/icons/thumb.php?src=1441676463.1.jpg&w=300" alt="ExtraordinaryKillers" title="ExtraordinaryKillers" class="clip"/>
</div>

SVG

这个使用svg clippath。浏览器支持应该更好。

<svg viewBox='0 0 100 100' preserveAspectRatio='none'>
  <clipPath id="clipPolygon">
    <polygon points="100 0,0 100,100 100">
    </polygon>
  </clipPath>
  <image viewBox='0 0 100 100' preserveAspectRatio='none' height="100" width="100" xlink:href="https://merkd.com/usr/members/icons/thumb.php?src=1435366066.9.png&w=300" />
  <image viewBox='0 0 100 100' preserveAspectRatio='none' height="100" width="100" clip-path="url(#clipPolygon)" xlink:href="https://merkd.com/usr/teams/icons/thumb.php?src=1441676463.1.jpg&w=300" />
</svg>