今天萌發一個想法,用css來實現透視效果。起初,我想到的是我們常見的添加陰影效果的方法,用多個div通過偏移來實現,但這需要很多 div,不夠理想。隨後,我想到CSS的一個屬性:border,在border相連接處可以產生對角線效果。這樣用兩個div就可以實現,我們先看看最終效果,然後再分析實現過程。
首先,我們看看border如何生成的對角線效果,在你的Html的頭部增加以下代碼,你就會看到這樣的效果。
vIEw sourceprint?1.
.border{
width
:
0
;
height
:
0
;
border-width
:
50px
;
border-color
:
#f00
#0f0
#00f
#000
;
border-style
:
solid
;}
有了上面的基礎,我們就可以用兩個額外的div來實現透視效果。
一、Html代碼如下:
vIEw sourceprint?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代碼:
vIEw sourceprint?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,所以為白色。
三、後記
本文只是做一個簡單得測試,其目的在於拋磚引玉。這種方法其實用性究竟有多大,咱姑且不論,但至少可以給我們一種解決問題的思路。希望此文能對你有所幫助。