CSS3仿腾讯专题页,实现3D旋转效果
大致思路:
1、将背景图添加并设置background-position: center top;(水平位置,垂直位置)、
background-size: length|percentage|cover|contain;
- length 设置背景图片高度和宽度。第一个值设置宽度,第二个值设置的高度。如果只给出一个值,第二个是设置为 auto(自动)
- percentage 将计算相对于背景定位区域的百分比。第一个值设置宽度,第二个值设置的高度。如果只给出一个值,第二个是设置为"auto(自动)"
- cover 此时会保持图像的纵横比并将图像缩放成将完全覆盖背景定位区域的最小大小。
- contain 此时会保持图像的纵横比并将图像缩放成将适合背景定位区域的最大大小。
2、其次,将引入的四个小图片放入大盒子,并对大盒子进行相对定位,注意:需要添加html,body{height:100%}否则top:70%;无法生效
3、为四个小图片添加入场动画,在style里面添加transform: translateY(300px);让图片出现在y轴上方300px的地方,然后添加关键帧
4、利用伪类添加小图片
.border::after,
.border::before {
content: '';
width: 20.43%;
height: 3px;
background-color: #c32a52;
/* 绝对定位,绘制的图形在哪里显示 */
position: absolute;
top: 0;
left: 0;
}
.border::after {
right: 0;
left: auto;
}
先在after和before都添加伪类,然后再单独设置after,实现添加小图片,然后分别添加颜色:
.box2 .border::before,
.box2 .border::after {
background-color: #f9ec00;
}
.box3 .border::before,
.box3 .border::after {
background-color: #038bd2;
}
.box4 .border::before,
.box4 .border::after {
background-color: #e95413;
}
5、利用js为四个小图片添加旋转特效,需下载jquery
先在style里定义动画
.rotateY {
transition: all 1s ease-out;
transform: rotateY(360deg);
}
然后在script里定义js
<div class="nav">
<div class="box box1"> <a href="#">
<div class="border b1"><img src="./img/n1.png" alt=""></div>
</a> </div>
<div class="box box2"> <a href="#">
<div class="border b2"><img src="./img/n2.png" alt=""></div>
</a> </div>
<div class="box box3"> <a href="#">
<div class="border b3"><img src="./img/n4.png" alt=""></div>
</a> </div>
<div class="box box4"> <a href="#">
<div class="border b4"><img src="./img/n3.png" alt=""></div>
</a> </div>
</div>
<script>
$(function () {
$('.box').mouseenter(function () {
// 找到类名叫.border的元素,为之添加类名class.rotateY
$(this).find('.border').addClass('rotateY');
});
$('.box').mouseleave(function () {
$(this).find('.border').removeClass('rotateY');
});
})
</script>
css
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
background-color: #00002F;
background-image: url('./img/cbg.png');
background-repeat: no-repeat;
background-position: center top;
background-size: 100% auto;
}
html,
body {
height: 100%;
/* 让浏览器y轴不出现 */
overflow: hidden;
}
.nav {
position: relative;
width: 900px;
margin: 0 auto;
top: 70%;
}
.box {
width: 25%;
float: left;
/* forwards 停在最后一帧就不动 */
animation: moveup 0.8s ease-out forwards;
transform: translateY(300px);
}
.border {
width: 60%;
margin: 0 auto;
text-align: center;
padding-bottom: 10%;
border: 3px solid #c32a52;
border-top: none;
position: relative;
}
.border img {
width: 45%;
}
/* 伪类绘制小图形 宽度20.43% 高度3px */
.border::after,
.border::before {
content: '';
width: 20.43%;
height: 3px;
background-color: #c32a52;
/* 绝对定位,绘制的图形在哪里显示 */
position: absolute;
top: 0;
left: 0;
}
.border::after {
right: 0;
left: auto;
}
/* 设置伪类图形颜色 */
.box2 .border::before,
.box2 .border::after {
background-color: #f9ec00;
}
.box3 .border::before,
.box3 .border::after {
background-color: #038bd2;
}
.box4 .border::before,
.box4 .border::after {
background-color: #e95413;
}
.b1 {
border-color: #c32a52;
}
.b2 {
border-color: #f7eb4e;
}
.b3 {
border-color: #3d8acc;
}
.b4 {
border-color: #d75e2d;
}
.box a {
display: block;
}
/* 设置动画延迟 */
.box2 {
animation-delay: 0.2s;
}
.box3 {
animation-delay: 0.4s;
}
.box4 {
animation-delay: 0.6s;
}
@keyframes moveup {
0% {
transform: translateY(300px);
}
100% {
transform: translateY(0);
}
}
/* 先定义围绕y轴旋转的动画 */
.rotateY {
transition: all 1s ease-out;
transform: rotateY(360deg);
}
代码演示:
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果