Javascript - 对角剪切图像

时间:2013-05-10 08:25:27

标签: javascript html5 css3

当我分配HTML5项目时,我遇到了一个棘手的问题。

该项目包括在倾斜的斜坡上移动图片。我将在下面的图片中证明这一点 demo

正如你所看到的,我想把奥巴马的照片从AB斜坡上的A移动到B.在移动时,图像被裁剪并受到AB线的限制。 AB线实际上是PNG图像的下边缘。

demo

最好的问候。

2 个答案:

答案 0 :(得分:5)

您可以尝试使用某些变换执行此操作:

想法是旋转外部框并包含图像,然后在内部旋转图像。

演示:http://jsbin.com/ozusic/1/edit

CSS:

  @keyframes "move" {
   0% {
      -webkit-transform: translateX(0px) translateY(0px) rotate(10deg);
      -moz-transform: translateX(0px) translateY(0px) rotate(10deg);
      -o-transform: translateX(0px) translateY(0px) rotate(10deg);
      -ms-transform: translateX(0px) translateY(0px) rotate(10deg);
      transform: translateX(0px) translateY(0px) rotate(10deg);
   }
   100% {
      -webkit-transform: translateX(500px) translateY(70px) rotate(10deg);
      -moz-transform: translateX(500px) translateY(70px) rotate(10deg);
      -o-transform: translateX(500px) translateY(70px) rotate(10deg);
      -ms-transform: translateX(500px) translateY(70px) rotate(10deg);
      transform: translateX(500px) translateY(70px) rotate(10deg);
   }

  }

  @-moz-keyframes move {
   0% {
     -moz-transform: translateX(0px) translateY(0px) rotate(10deg);
     transform: translateX(0px) translateY(0px) rotate(10deg);
   }
   100% {
     -moz-transform: translateX(500px) translateY(70px) rotate(10deg);
     transform: translateX(500px) translateY(70px) rotate(10deg);
   }

  }

  @-webkit-keyframes "move" {
   0% {
     -webkit-transform: translateX(0px) translateY(0px) rotate(10deg);
     transform: translateX(0px) translateY(0px) rotate(10deg);
   }
   100% {
     -webkit-transform: translateX(500px) translateY(70px) rotate(10deg);
     transform: translateX(500px) translateY(70px) rotate(10deg);
   }

  }

  @-ms-keyframes "move" {
   0% {
     -ms-transform: translateX(0px) translateY(0px) rotate(10deg);
     transform: translateX(0px) translateY(0px) rotate(10deg);
   }
   100% {
     -ms-transform: translateX(500px) translateY(70px) rotate(10deg);
     transform: translateX(500px) translateY(70px) rotate(10deg);
   }

  }

  @-o-keyframes "move" {
   0% {
     -o-transform: translateX(0px) translateY(0px) rotate(10deg);
     transform: translateX(0px) translateY(0px) rotate(10deg);
   }
   100% {
     -o-transform: translateX(500px) translateY(70px) rotate(10deg);
     transform: translateX(500px) translateY(70px) rotate(10deg);
   }

  }

  img {
      height: 100px;
      width: 100px;
      position: absolute;

      -webkit-animation: 5s move infinite;
      -moz-animation: 5s move infinite;
      -ms-animation: 5s move infinite;
      -o-animation: 5s move infinite;
      animation: 5s move infinite;
      z-index: -1;
  }

  div.box {
      margin-top: 50px;
      height: 150px;
      border: 3px solid black;

      -webkit-transform: rotate(-10deg);
      -moz-transform: rotate(-10deg);
      -o-transform: rotate(-10deg);
      -ms-transform: rotate(-10deg);
      transform: rotate(-10deg);
      overflow: hidden;
  }

HTML:

<div class='box'>
   <img src='http://www.biography.com/imported/images/Biography/Images/Profiles/O/Barack-Obama-12782369-2-402.jpg' />
</div>

答案 1 :(得分:2)

这是HTML和CSS设置:

#TheImage{
    position:absolute;
    top:100px;
    left:20px;
    z-index:1;}

#TheTriangle{
    width: 0px;
    height: 0px;
    border-top: 200px solid transparent;
    border-bottom: 0px solid transparent;
    border-right: 800px solid blue;
    top:100px;
    left:15px;
    position:absolute;
    z-index:2;}

    <img id="TheImage" src="http://placekitten.com/200/200" />
    <div id="TheTriangle"></div>

您可以在此处查看 jsFiddle 现在,您只需调整尺寸,将三角形更改为白色并使用jQuery的.animate()功能改变图像的左侧位置:只需几行代码。由于这是你的作业,我认为最好暂时把它留在这里,并在你挣扎了一下之后再回来......这是一个非常好的家庭作业问题BTW。

enter image description here

这里的javascript使其与jsFiddle一起使用:

$(document).ready(function () {
    setTimeout(function () {
    $('#TheImage').animate({'left':600}, 2000);
    }, 1000);
});