1. 简介
透视背景是一种常见的Web设计技巧,它可以为网站增加不少的艺术感和视觉效果。透视背景能够让页面的元素呈现出立体感,使得整个页面更加生动有趣。在本篇文章中,我将介绍如何使用CSS构建花式透视背景,为你的网站增添一些不错的观感。
2. CSS中的透视(perspective)
在开始之前,我们需要了解一个CSS属性——perspective,它是用来设置透视变形的。它的作用是定义 3D 元素距离视图的距离,以及一些3D转换元素的基准点,即用户的视点。perspective 只影响 3D 转换元素,而不影响整个元素和其内容的位置或大小。
假设你要设置一个div元素的透视效果,你需要在其父元素中设置perspective属性,例如:
.parent{
perspective: 1000px; /*透视距离为1000像素*/
}
设置perspective的值越小,透视距离就越短,从而3D元素距离视图更近,反之亦然。
3. CSS中的transform-origin
接下来,我们需要了解transform-origin。该属性定义了transform的基点,即3D变换的原点。默认情况下,transform-origin为元素的中心点,但是我们可以通过设置不同的属性值来改变这个基点。如下面的样例代码所示:
.transform-div{
transform-origin: center bottom;
/*注意,这里的center bottom实际上是center 100%的缩写形式*/
}
这里的transform-origin被设置为了div元素的底部中心,然后我们对该元素进行了某种变化,例如旋转。
4. CSS中的旋转和平移
4.1 旋转
对于3D效果的实现,旋转是必不可少的一个技巧。有两种方式可以实现3D旋转效果,一种是通过rotateX、rotateY或者rotateZ来实现,另外一种是使用rotate3d,它能够同时改变三个坐标轴上的旋转角度。下面是它们的使用方法:
/*rotateX,rotateY,rotateZ*/
.rotateX{
transform: rotateX(45deg);
}
.rotateY{
transform: rotateY(45deg);
}
.rotateZ{
transform: rotateZ(45deg);
}
/*rotate3d*/
.rotate3d{
transform: rotate3d(1, 1, 1, 45deg);
}
transform可以同时作用于一个元素的多个属性,因此,如果要对一个元素进行两个或者以上的旋转,可以像下面这样使用:
.rotate{
transform: rotateX(45deg) rotateY(45deg);
/*或者*/
transform: rotateX(45deg) rotateY(45deg) rotateZ(45deg);
}
4.2 平移
平移是指物体在平面内沿X、Y、Z轴移动一定的距离。在CSS中,使用translate函数来实现平移效果。translate函数的参数可以是长度值、百分比或者是calc函数,例如:translateX(100px)、translateY(50%)、translateZ(calc(5*3px))等。
.translateX{
transform: translateX(100px);
}
.translateY{
transform: translateY(50%);
}
.translateZ{
transform: translateZ(3px);
}
5. CSS构建透视背景
基于上述的知识点,我们可以开始通过CSS构建透视背景了。首先,我们需要清零浏览器的默认样式:
body{
margin: 0;
padding: 0;
}
然后,在HTML中添加一个div元素,并将其作为我们透视背景的父容器:
<div class="parent">
</div>
接下来,我们添加需要呈现出3D效果的元素。例如:
<div class="box">
<h3>This is a 3D box!</h3>
<p>This is a paragraph inside the box.</p>
</div>
然后,对box元素进行透视,使其出现3D效果:
.box{
width: 500px;
height: 300px;
background-color: #fff;
box-shadow: 2px 2px 20px rgba(0,0,0,0.3);
transform: rotateY(-10deg) rotateX(8deg);
position: relative;
left: 50%;
top: 50%;
margin-left: -250px;
margin-top: -150px;
/*透视部分*/
transform-style: preserve-3d;
}
对于透视效果,我们需要设置transform-style: preserve-3d,该属性是用来告诉浏览器对子元素进行透视变形。
接下来,我们把box元素的内容向内平移,以便提供更好的视觉效果:
.box h3, .box p{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
然后,我们再添加一些透视背景的效果,例如:
.parent{
background-image: linear-gradient(45deg, transparent 40%, rgba(255,255,255,0.5) 40%, rgba(255,255,255,0.5) 60%, transparent 60%),
linear-gradient(135deg, rgba(255,255,255,0.5) 40%, transparent 40%, transparent 60%, rgba(255,255,255,0.5) 60%);
background-size: 100px 100px;
background-position: center;
}
这里使用了CSS的渐变,可以让背景看起来更加立体。渐变的样式是这样的:
该样式会在父容器中添加两个斜向的渐变背景色。渐变的大小和位置通过background-size和background-position来设置。
6. 结语
透视背景效果并不是很容易实现,需要充分理解3D变形的原理和CSS中相应的属性。在实际应用中,我们还可以使用box-shadow、border、z-index等属性,来达到更加丰富的效果。希望本文对您有所启示,谢谢阅读!