纯CSS 常见3D实例
一、正方体
我认为正方体可以算是3D图像的基础吧,首先正方体是由六个相同的面所组成,其次就需要我们依次构造。(据体构造在代码中)
成平图如下:
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>正方体</title>
<style>
.d3{
height: 300px;
width:300px;
perspective: 800px;
margin:140px auto;
border:1px solid #ccc; }
.stage{
height: 300px;
width: 300px;
transform-style: preserve-3d;
position: relative;
transform: rotateX(45deg) rotateY(45deg);
}
.role{
height: 300px;
width: 300px;
position: absolute;
}
.stage{
animation: dong 3s linear infinite;(这是舞台)
}
.stage:hover{
animation: paused;
}
@keyframes dong{(这是使舞台旋转的动画)
from{
transform: rotateX(45deg) rotateY(45deg);
}
to{
transform: rotateX(405deg) rotateY(405deg);
}
}
.di1{(正方体的前面)
background: rgb(21, 163, 52);
transform: translateZ(150px);(沿着z轴向前移动150px)
font-size:100px;
font-family:KaiTi;
text-align: center;
line-height: 300px;
}
.di2{(正方体的后面)
background: blue;
transform: translateZ(-150px) rotateY(180deg);(沿着z轴向前移动150px然后沿着y轴旋转180°*注意顺序哦是先移动后旋转)
font-size:100px;
font-family:KaiTi;
text-align: center;
line-height: 300px;
}
.di3{(正方体的左面)
background: purple;
transform: rotateY(-90deg) translateZ(150px);
font-size:100px;
font-family:KaiTi;
text-align: center;
line-height: 300px;
}
.di4{(正方体的右面)
background: pink;
transform: rotateY(90deg) translateZ(150px);
font-size:100px;
font-family:KaiTi;
text-align: center;
line-height: 300px;
}
.di5{(正方体的上面)
background: red;
transform: rotateX(90deg) translateZ(150px);
font-size:100px;
font-family:KaiTi;
text-align: center;
line-height: 300px;
}
.di6{(正方体的下面)
background: yellow;
transform: rotateX(-90deg) translateZ(150px);
font-size:100px;
font-family:KaiTi;
text-align: center;
line-height: 300px;
}
</style>
</head>
<body>
<div class="d3">
<div class="stage">
(将正方体分为六个相同的面)
<div class="role di1">前</div>
<div class="role di2">后</div>
<div class="role di3">左</div>
<div class="role di4">右</div>
<div class="role di5">上</div>
<div class="role di6">下</div>
</div>
</div>
</body>
</html>
二、动态立体图片册
将图片册设计成立体3D的效果
效果图如下:
利用旋转、移动、倾斜和3D效果让你的图册更加漂亮。
代码如下:
(将第一张定好位置后将后面的依次排列)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事例一</title>
<style>
body{
height: 100vh;
}
.div {
height: 500px;
width: 800px;
perspective: 800px;
margin: 50px auto;
}
.div1 {
height: 500px;
width: 800px;
transform-style: preserve-3d;
position: relative;
/* transform: rotateY(-10deg); */
}
.div_0{
height:400px;
width:600px;
position: absolute;
margin-top:110px;
margin-left:50px;
}
.div_1{
height:400px;
width:600px;
background: url(../day03/timg.jpg);
background-size: 600px 400px;
border-radius: 20px;
transform-origin: right bottom;
transition: 3s;
}
.div_2{
background: url(../day03/timg1.jpg);
border-radius: 20px;
background-size: 600px 400px;
transform-origin: right bottom;
transform: rotateZ(2deg) translateZ(-20px) translateX(20px) translateY(-20px);
}
.div_2:hover{
transform: rotateZ(0) translateZ(0)translateX(0)translateY(0);
transition: 1s;
}
.div_2:hover~.div_1{
/* transform-origin: right bottom; */
transform: rotateZ(2deg) translateZ(20px) translateX(20px) translateY(-20px);
transition: 1s;
}
/* body:hover .div_1{
opacity: 0;
transition: 3s;
} */
.div_3{
background: url(timg2.jpg);
border-radius: 20px;
background-size: 600px 400px;
transform-origin: right bottom;
transform: rotateZ(4deg)translateZ(-40px)translateX(40px)translateY(-40px);
}
.div_3:hover{
transform: rotateZ(0) translateZ(0)translateX(0)translateY(0);
transition: 1s;
}
.div_4{
background: url(timg4.jpg);
border-radius: 20px;
background-size: 600px 400px;
transform-origin: right bottom;
transform: rotateZ(6deg)translateZ(-60px) translateX(60px)translateY(-60px);
}
.div_4:hover{
transform: rotateZ(0) translateZ(0)translateX(0)translateY(0);
transition: 1s;
}
.div_5{
background: url(timg5.jpg);
border-radius: 20px;
background-size: 600px 400px;
transform-origin: right bottom;
transform: rotateZ(8deg)translateZ(-80px) translateX(80px)translateY(-80px);
}
.div_5:hover{
transform: rotateZ(0) translateZ(0)translateX(0)translateY(0);
transition: 1s;
}
.div_6{
background: url(timg3.jpg) no-repeat;
border-radius: 20px;
background-size: 600px 400px;
transform-origin: right bottom;
transform: rotateZ(10deg)translateZ(-100px) translateX(100px)translateY(-100px);
}
.div_6:hover{
transform: rotateZ(0) translateZ(0)translateX(0)translateY(0);
transition: 1s;
}
</style>
</head>
<body>
<div class="div">
<div class="div1">
<div class=" div_0 div_1"></div>
<div class=" div_0 div_2"></div>
<div class=" div_0 div_3"></div>
<div class=" div_0 div_4"></div>
<div class=" div_0 div_5"></div>
<div class=" div_0 div_6"></div>
</div>
</div>
</body>
</html>
三、平面的星空
效果图如下:
代码如下:
(由于没有用js所以只有平面的效果了
你掌握好旋转的中心点就很容易了)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>太阳系</title>
<style>
body {
background: url(timg01.jpg) no-repeat;
background-size: 100%;
}
.box1 {
height: 600px;
width: 600px;
margin: 0 auto;
border: 1px solid #ccc;
border-radius: 50%;
}
.box1_0 {
height: 100px;
width: 100px;
margin: 0 auto;
border: 1px solid white;
border-radius: 50%;
position: absolute;
top: calc(50% - 59px);
left: 322px;
transform-origin: 345.5px;
animation: dong2 5s linear infinite 4s;
}
@keyframes dong2 {
from {
transform: rotate(0)
}
100% {
transform: rotate(360deg);
}
}
.box1_2 {
height: 13px;
width: 13px;
margin: 0 auto;
/* border: 1px solid #ccc; */
border-radius: 50%;
background: white;
position: absolute;
top: calc(50% - 7.5px);
left: 96px;
transform-origin: -45px;
animation: dong3 5.5s linear infinite ;
/* animation-iteration-count: 200; */
}
@keyframes dong3 {
from {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
.box1_1 {
height: 15px;
width: 15px;
margin: 0 auto;
/* border: 1px solid #ccc; */
border-radius: 50%;
background: rgb(7, 100, 223);
position: absolute;
top: 45px;
left: calc(50% - 16.5px);
}
.box2 {
height: 400px;
width: 400px;
margin: 0 auto;
border: 1px solid #ccc;
border-radius: 50%;
position: absolute;
top: calc(50% - 200px);
left: calc(50% - 200px);
}
.box2_1 {
height: 15px;
width: 15px;
margin: 0 auto;
/* border: 1px solid #ccc; */
border-radius: 50%;
background: rgb(198, 208, 221);
position: absolute;
top: calc(50% - 7.5px);
left: 43px;
transform-origin: 157.5px;
animation: dong1 5s linear infinite .5s;
}
@keyframes dong1 {
from {
transform: rotate(0)
}
100% {
transform: rotate(360deg);
}
}
.box2_2 {
height: 15px;
width: 15px;
margin: 0 auto;
border-radius: 50%;
background: #644e11;
position: absolute;
top: calc(50% - 7.5px);
left: -7px;
transform-origin: 207.5px;
animation: dong 5s linear infinite;
}
@keyframes dong {
from {
transform: rotate(0)
}
100% {
transform: rotate(360deg);
}
}
.box3 {
height: 300px;
width: 300px;
margin: 0 auto;
border: 1px solid #ccc;
border-radius: 50%;
position: absolute;
top: calc(50% - 150px);
left: calc(50% - 150px);
}
.box4 {
height: 30px;
width: 30px;
margin: 0 auto;
border-radius: 50%;
background: orange;
position: absolute;
top: calc(50% - 15px);
left: calc(50% - 15px);
}
.boxli{
height: 900px;
width: 900px;
margin: 0 auto;
border: 1px solid #ccc;
border-radius: 50%;
position: absolute;
top:-120px;
left:calc(50% - 450px);
}
.boxli_1{
height: 15px;
width: 15px;
margin: 0 auto;
border-radius: 50%;
background: rgb(116, 100, 56);
position: absolute;
top:500px;
left:-6px;
transform-origin: 455.5px -38px;
animation: dongli 5s linear infinite;
}
@keyframes dongli {
from {
transform: rotate(0)
}
100% {
transform: rotate(360deg);
}
}
</style>
</head>
<body>
<div class="box1">
<div class="box1_0">
<div class="box1_2"></div>
<div class="box1_1"></div>
</div>
<div class="box2">
<div class="box2_1"></div>
<div class="box2_2"></div>
<div class="box3">
<div class="box4"></div>
</div>
</div>
</div>
<div class="boxli">
<div class="boxli_1"></div>
</div>
</body>
</html>
纯CSS 常见3D实例的更多相关文章
- 纯CSS实现3D正方体动画效果
前言 纯CSS实现3D正方体动画效果,此方法是通过transform的旋转(rotate)和位移(translate)实现的,具体效果是鼠标滑过时正方体的一个面会产生位移 效果图
- 纯CSS实现3D按钮效果
今天分享一个用纯CSS实现的3D按钮.css巧妙利用了box-shadow来实现3D物体的立体感,当按钮按下的时候再去修改box-shadow和top值.让人感觉有一种按钮被按下的感觉.css代码非常 ...
- 纯CSS实现3D图像轮转
CSS演武场今天继续,今天看一个纯css实现的3D图像轮转效果,请大家猛戳研究效果先,也可下载收藏先. 首先看html文件,div.billboard为效果的容器,利用10个div.poster分割图 ...
- 纯CSS做3D旋转魔方
昨天偶然看见网友(简单说 用CSS做一个魔方旋转的效果)做的一个3D旋转魔方 效果就是本博客右侧公告栏所示 在这里把做法展现出来 感兴趣的可以试试 做成自己特有的魔方 <!DOCTYPE h ...
- 纯CSS绘制3D立方体
本篇记录的是使用CSS3绘制3D立方体,并旋转起来. 我的思路: 1️⃣ 首先,用div元素画6个正方形摞在一起放在画布中间.为了区分,分别给每个div选择了不同的颜色,并且设置为半透明方便透视. 2 ...
- 纯CSS实现3D照片墙
HTML部分: <body> <div class="photo-wrap"> <!-- 舞台 --> <div class=" ...
- 纯css实现3D字体
下面分别是html,css和js代码: <div class="wrapper"> <h1 contenteditable data-heading=" ...
- 纯 CSS 实现三角形尖角箭头的实例
上次无意中发现了个使用纯 CSS 实现三角形尖角箭头的方法 http://blog.csdn.net/zhouzme/article/details/18901943 ,但没有怎么用上,也没有详细完整 ...
- 纯CSS炫酷的3D旋转
<html><head><meta charset="utf-8"><title>纯CSS炫酷的3D旋转</title> ...
随机推荐
- 记boost协程切换bug发现和分析
在分析了各大开源协程库实现后,最终选择参考boost.context的汇编实现,来写tbox的切换内核. 在这过程中,我对boost各个架构平台下的context切换,都进行了分析和测试. 在maco ...
- [Python3] 024 面向对象 第四弹
目录 11. 类和对象的三种方法 12. 抽象类 12.1 抽象方法 12.2 抽象类 12.3 抽象类的使用 13. 自定义类 接上一篇 [Python3] 023 面向对象 第三弹 11. 类和对 ...
- ubuntu离线安装mysql
一:ubuntu离线安装mysql 转载来源:https://blog.csdn.net/liuhuoxingkong/article/details/80696574 参考文章:https://ww ...
- Docker配置远程访问
近来学习Docker部署微服务,需要配置Docker的远程访问,由于实际环境和学习资料有出入,尝试着根据网上搜索的一些相关资料进行配置,未能成功.最终通过自己摸索,成功配置Docker远程访问.现和大 ...
- docker pull理解误区
docker run 命令 如果local image中有对应 镜像+tag 不会从新拉取镜像 docker pull 会进行拉取 先进行镜像更改 [root@master01 ~]# docker ...
- CodeChef GCD2
GCD2 Problem code: GCD2 Submit All Submissions All submissions for this problem are available. ...
- PHP实现上传文件到服务器
<?php /**************************** *** 功能:上传文件到服务器 ****************************/ session_start() ...
- elasticsearch 深入 —— Top Hits Aggregation
Top Hits Aggregation top_hits指标聚合器跟踪正在聚合的最相关文档. 此聚合器旨在用作子聚合器,以便可以按桶聚合最匹配的文档. top_hits聚合器可以有效地用于通过桶聚合 ...
- 自定义的最简单的可回调的线程任务CallbackableFeatureTask(模仿google的ListenableFutureTask)
1.使该Task继承Callable,Runable import java.util.concurrent.Callable; import java.util.function.Consumer; ...
- windows10安装nodejs 10和express 4
最进做一个个人博客系统,前端用到了semanticUI,但是要使用npm工具包,所以需要安装nodejs,nodejs自带npm 下载 去官网下载自己系统对应的版本,我的是windows:下载 可以在 ...