今天萌发一个想法,用css来实现透视效果。起初,我想到的是我们常见的添加阴影效果的方法,用多个div通过偏移来实现,但这需要很多 div,不够理想。随后,我想到css的一个属性:border,在border相连接处可以产生对角线效果。这样用两个div就可以实现,我们先看看最终效果,然后再分析实现过程。
首先,我们看看border如何生成的对角线效果,在你的html的头部增加以下代码,你就会看到这样的效果。
1.
.border{
width
:
0
;
height
:
0
;
border-width
:
50px
;
border-color
:
#f00
#0f0
#00f
#000
;
border-style
:
solid
;}
有了上面的基础,我们就可以用两个额外的div来实现透视效果。
一、html代码如下:
1.
<
div
class
=
"perspective-outer"
>
2.
<
div
class
=
"perspective-r"
></
div
>
3.
<
div
class
=
"perspective-b"
></
div
>
4.
<
div
class
=
"perspective-inner"
>透视效果元素</
div
>
5.
</
div
>
二、Css代码:
01.
.perspective-outer{
02.
position
:
relative
;
03.
width
:
170px
;
/*要实现透视效果元素的宽度+透视距离*/
04.
height
:
140px
;
/*要实现透视效果元素的高度+透视距离*/
05.
}
06.
.perspective-inner{
07.
border
:
1px
solid
#f60
;
08.
height
:
118px
;
09.
width
:
148px
;
10.
background-color
:
#fff
;
11.
}
12.
.perspective-r,
13.
.perspective-b{
14.
position
:
absolute
;
15.
width
:
0
;
16.
height
:
0
;
17.
}
18.
.perspective-r{
19.
right
:
0
;
20.
height
:
100px
;
/*要实现透视效果元素的高度(120px) - (border-top:20px)*/
21.
border-left
:
20px
solid
#000
;
/*右边透视距离*/
22.
border-top
:
20px
solid
#fff
;
/*下边透视距离*/
23.
}
24.
.perspective-b{
25.
bottom
:
0
;
26.
width
:
150px
;
/*最外元素的宽度(170px) - border-left*/
27.
border-left
:
20px
solid
#fff
;
28.
border-top
:
20px
solid
#000
;
29.
}
.perspective-outer定义高度和宽度,并相对定位,确保右边和下边的透视区域能定位的相应的位置,高度值和宽度值为要实现透视效果元素的高度加上相应的透视距离。.perspective-r只需设置高度值,其值为.perspective-outer的高度减去border-top,.perspective-b只需设置宽度值,其值为.perspective-outer的宽度减去border-left。.perspective-r的border-top和.perspective-b的border-left的width值决定透视角度。.perspective-r的border-left和.perspective-b的border-top的width值 决定透视距离。其中.perspective-r的border-top和.perspective-b的border-left的color为父元素的背景颜色,我这里的测试页面父元素为body,所以为白色。
三、后记
本文只是做一个简单得测试,其目的在于抛砖引玉。这种方法其实用性究竟有多大,咱姑且不论,但至少可以给我们一种解决问题的思路。希望此文能对你有所帮助。