2

我有一个关于 css3 和空中飞人的小问题。我有两个并排的方形图像(每个都向左浮动 - 白点),我希望它们看起来像这样:

并排的形状

你会怎么做?可能吗?

4

3 回答 3

2

如果 pic1 是 a.png并且由梯形边缘的角度创建的负空间是透明的,那么这应该有效:

#pic1, #pic2 {
    float: left;
    position: relative;
}
#pic1 {
   z-index: 2;
}
#pic2 {
   right: 30px; /* Or whatever the difference in image sizes is */
}
于 2013-03-28T21:17:46.473 回答
1

首先,您开始设置一条条,该条将沿着顶部和底部边界切割,以及放置图像的位置:

.demo1 {
    overflow-y: hidden;
}

在里面,会有向左浮动的基本元素,

.base {
    width: 100px;
    height: 100px;
    float: left;
}

在内部,一个剪切元素旋转:

.demo1 .clip {-webkit-transform: rotate(15deg);}

.clip { 
    height: 177%; 
    width: 125%; 
    margin-top: -40%; 
    -webkit-transform-origin: 0% 50%; 
    overflow: hidden
}

在内部,图像,反向旋转 .demo1 .inner { -webkit-transform: rotate(-15deg); } .inner { -webkit-transform-origin: 0% 50%; 左边距:-151%;保证金最高:19%;}

html是:

WEBKITTED DEMO webkitted 表示只使用 webkit 前缀 :-)

由于有人提供 100 万积分,我决定加倍努力。请参阅通过 nth-child() 指定旋转的第二条 (demo2)。这允许为每个过渡获得不同的角度。

完整的 CSS:

.demo1, .demo2 {
overflow-y: hidden;
}
.base {
width: 100px;
height: 100px;
float; left;
}

.clip {height: 177%; width: 125%; margin-top: -40%;-webkit-transform-origin: 0% 50%; overflow: hidden}
.inner {-webkit-transform-origin: 0% 50%;margin-left: -151%;margin-top: 19%;}
.terminator {background-color: white}

.demo1 .clip {-webkit-transform: rotate(15deg);}
.demo1 .inner {-webkit-transform: rotate(-15deg);}
.demo2 :nth-child(odd) .clip {-webkit-transform: rotate(15deg);}
.demo2 :nth-child(odd) .inner {-webkit-transform: rotate(-15deg);}
.demo2 :nth-child(even) .clip {-webkit-transform: rotate(-15deg);}
.demo2 :nth-child(even) .inner {-webkit-transform: rotate(15deg);margin-left: -151%;margin-top: -30%;}

注意准确放置图像的微积分很奇怪;我通过反复试验来结束它。此外,您需要在不丢失兴趣点的情况下切割具有足够余量的图像。

于 2013-03-29T10:17:50.013 回答
1

您可以使用带有透明边框的 CSS 三角形技巧

html

<div class="pic pic-1">Pic 1</div>
<div class="pic pic-2">Pic 2</div>

css

.pic{
    width:100px;
    height:100px;
    float:left;
    text-align:center;
    line-height:100px;
    color:white;
    position:relative;
}
.pic-1{
    background:orange;
}
.pic-2{
    background:limegreen;
}
.pic:after{
    content:'';
    display:block;
    position:absolute;
    height:0;
    width:0;
    z-index:10;
}
.pic-1:after{
    top:0;
    right:-10px; /* must match the border left */
    border-left: 10px solid orange; /*play with width to change angle*/
    border-bottom:50px solid transparent;
}
.pic-2:after{
    bottom:0;
    left:-10px; /* must match the border right*/
    border-right: 10px solid limegreen;/*play with width to change angle*/
    border-top:50px solid transparent;
}

演示在 http://jsfiddle.net/gaby/eh2f3/

于 2013-03-28T21:58:54.487 回答