CSS3制作3D爱心动画

这篇具有很好参考价值的文章主要介绍了CSS3制作3D爱心动画。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CSS3制作3D爱心动画,==========前端=========,CSS,css3,3d,前端

1、什么是CSS

    css,即层叠样式表的简称,是一种标记语言,有浏览器解释执行用来使页面变得更美观。

2、选择器

    css3中新增了一些选择器,如下:

CSS3制作3D爱心动画,==========前端=========,CSS,css3,3d,前端

3、新样式

  • 边框 css3新增了三个边框属性,分别是:
    • border-radius:创建圆角边框
    • box-shadow:为元素添加阴影
    • border-image:使用图片来绘制边框
  • box-shadow 设置元素阴影,设置属性如下(其中水平阴影和垂直阴影是必须设置的)
    • 水平阴影
    • 垂直阴影
    • 模糊距离(虚实)
    • 阴影尺寸(影子大小)
    • 阴影颜色
    • 内/外阴影
  • 背景 新增了几个关于背景的属性,分别是background-clipbackground-originbackground-sizebackground-break
    • background-clip 用于确定背景画区,有以下几种可能的属性:通常情况,背景都是覆盖整个元素的,利用这个属性可以设定背景颜色或图片的覆盖范围
      • background-clip: border-box; 背景从border开始显示
      • background-clip: padding-box; 背景从padding开始显示
      • background-clip: content-box; 背景显content区域开始显示
      • background-clip: no-clip; 默认属性,等同于border-box
    • background-origin 当我们设置背景图片时,图片是会以左上角对齐,但是是以border的左上角对齐还是以padding的左上角或者content的左上角对齐? border-origin正是用来设置这个的
      • background-origin: border-box; 从border开始计算background-position
      • background-origin: padding-box; 从padding开始计算background-position
      • background-origin: content-box; 从content开始计算background-position
      • 默认情况是padding-box,即以padding的左上角为原点
    • background-size 常用来调整背景图片的大小,主要用于设定图片本身。有以下可能的属性:
      • background-size: contain; 缩小图片以适合元素(维持像素长宽比)
      • background-size: cover; 扩展元素以填补元素(维持像素长宽比)
      • background-size: 100px 100px; 缩小图片至指定的大小
      • background-size: 50% 100%; 缩小图片至指定的大小,百分比是相对包 含元素的尺寸
    • background-break 元素可以被分成几个独立的盒子(如使内联元素span跨越多行),background-break 属性用来控制背景怎样在这些不同的盒子中显示
      • background-break: continuous; 默认值。忽略盒之间的距离(也就是像元素没有分成多个盒子,依然是一个整体一样)
      • background-break: bounding-box; 把盒之间的距离计算在内;
      • background-break: each-box; 为每个盒子单独重绘背景
  • 文字
    • word-wrap: normal|break-word
      • normal:使用浏览器默认的换行
      • break-all:允许在单词内换行
    • text-overflow 设置或检索当当前行超过指定容器的边界时如何显示,属性有两个值选择
      • clip:修剪文本
      • ellipsis:显示省略符号来代表被修剪的文本
    • text-shadow 可向文本应用阴影。能够规定水平阴影、垂直阴影、模糊距离,以及阴影的颜色
    • text-decoration CSS3里面开始支持对文字的更深层次的渲染,具体有三个属性可供设置:
      • text-fill-color: 设置文字内部填充颜色
      • text-stroke-color: 设置文字边界填充颜色
      • text-stroke-width: 设置文字边界宽度
  • 颜色
    • css3新增了新的颜色表示方式rgbahsla
    • rgba分为两部分,rgb为颜色值,a为透明度
    • hala分为四部分,h为色相,s为饱和度,l为亮度,a为透明度

4、transition 过渡

  transition属性可以被指定为一个或多个CSS属性的过渡效果,多个属性之间用逗号进行分隔,必须规定两项内容:

  • 过度效果
  • 持续时间
transition: CSS属性,花费时间,效果曲线(默认ease),延迟时间(默认0)

5、transform 转换

  • transform属性允许你旋转,缩放,倾斜或平移给定元素
  • transform-origin:转换元素的位置(围绕那个点进行转换),默认值为(x,y,z):(50%,50%,0)

使用方式:

  • transform: translate(120px, 50%):位移
  • transform: scale(2, 0.5):缩放
  • transform: rotate(0.5turn):旋转
  • transform: skew(30deg, 20deg):倾斜

6、animation 动画

动画这个平常用的也很多,主要是做一个预设的动画。和一些页面交互的动画效果,结果和过渡应该一样,让页面不会那么生硬

animation也有很多的属性

  • animation-name:动画名称
  • animation-duration:动画持续时间
  • animation-timing-function:动画时间函数
  • animation-delay:动画延迟时间
  • animation-iteration-count:动画执行次数,可以设置为一个整数,也可以设置为infinite,意思是无限循环
  • animation-direction:动画执行方向
  • animation-paly-state:动画播放状态
  • animation-fill-mode:动画填充模式

7、其他

  • Flex弹性布局
  • Grid栅格布局
  • 媒体查询 @media screen and (max-width: 960px) {}还有打印print

8、3D爱心实现

这是用css3做出来的一个小小的特效,最主要运用的是css3中transfrom的用法。思路文章来源地址https://www.toymoban.com/news/detail-752818.html

  1. 首先外部有一个heard的大盒子,用来包裹里面的照片盒子cube,将其设置transform-style:preserve-3d;(设置3d环境),并且使其旋转,以便看到cube的3d效果。
  2. cube里面的img分别用一个div包裹,分别做cube的6个面,分别对其设置transform属性,将其位置调到cube的6个面上。
  3. 创建包裹cube的心型。它是由36个大小与heard盒子相同的盒子构成,其中每一个盒子都去掉border-left,border-bottom,设置border-radius: 50% 50% 0/ 40% 50% 0;使其形状变成半个爱心形状。由于心型由36个盒子通过旋转构成的,采用js循环创建每一个盒子,并为其设置 line.style.transform = " rotateY("+ i * 10 +"deg) rotateZ(4时5deg) translateX(150px) ,让每一个盒子随着i的增加,绕Y轴旋转的角度也随之增加10deg
  4. 为heard设置animation(动画)使其达到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>Document</title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            img{
                width: 200px;
                height: 200px;
            }
            body{
                background-color: rgb(181, 179, 179);
                /* 景深 */
                perspective: 1000px;
            }
            #heard {
                width: 300px;
                height: 600px;
                margin: 100px auto;
                position: relative;
                transform-style: preserve-3d;
                /* 使其旋转看到cube的立体效果 */
                transform: rotateX(15deg) rotateZ(40deg);
                animation: rotate 10s linear infinite;
            }
            @keyframes rotate {
                0% {
                    transform: rotateY(0deg) rotateX(0deg) rotateZ(0deg);
                }
                100%{
                    transform: rotateY(720deg) rotateX(360deg) rotate(360deg);
                }
            }
            .cube{
                width: 200px;
                height: 200px;
                position: absolute;
                top:0px;
                left: 0px;
                transform-origin: 50% 50% ;
                 /* 设置3D环境 */
                 transform-style: preserve-3d;
                 /* 移动元素 */
                 transform:  translateX(60px) translateY(300px) translateZ(60px);
            }
            .cube>div{
                width: 100%;
                height: 100%;
                position: absolute;
                top:0px;
                left: 0px;
                border: 1px solid #000;
            }
            .front {
                transform: translateZ(100px);
            }
            .back {
                transform: translateZ(-100px) rotateY(180deg);
            }
            .left {
                transform: translateX(-100px) rotateY(-90deg);
            }
            .right{
                transform: translateX(100px) rotateY(90deg);
            }
            .top{
                transform: translateY(100px) rotateX(90deg);
            }
            .bottom{
                transform: translateY(-100px) rotateX(-90deg);
            }
            /*爱心的连边框*/
            .line {
                width: 300px;
                height: 600px;
                position: absolute;
                top:0;
                left: 0;
                border: 3px solid  #e4393c;
                border-left:0;
                border-bottom: 0;
                border-radius: 50%  50% 0/  40% 50% 0;
            }
        </style>
    </head>
    <body>
        <div id="heard">
            <div class="cube">
                <div class="front">
                    <img src="E:\8、前端\leetcode\test\10-24\loto-z.png" alt="">
                </div>
                <div class="back">
                    <img src="E:\8、前端\leetcode\test\10-24\loto-z.png" alt="">
                </div>
                <div class="left">
                    <img src="E:\8、前端\leetcode\test\10-24\loto-z.png" alt="">
                </div>
                <div class="right">
                    <img src="E:\8、前端\leetcode\test\10-24\loto-z.png" alt="">
                </div>
                <div class="top">
                    <img src="E:\8、前端\leetcode\test\10-24\loto-z.png" alt="">
                </div>
                <div class="bottom">
                    <img src="E:\8、前端\leetcode\test\10-24\loto-z.png" alt="">
                </div>
            </div>
            <!-- <div class="heard"></div> -->
        </div>
    </body>
    </html>
    <script>
        //获取元素
        var heard = document.getElementById("heard");
        for(var i = 0; i < 36 ;i++)
        {
            var line = document.createElement("div");
            line.className = "line";
            line.style.transform = " rotateY("+ i * 10 +"deg)  rotateZ(45deg) translateX(150px) ";
            heard.appendChild(line);
        }
    </script> 
    
    

到了这里,关于CSS3制作3D爱心动画的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Web2D/3D】CSS3的2D/3D转换、过渡、动画(第一篇)

    1. 前言         本篇开始介绍Web2D和3D相关基础知识,会从CSS3的2D/3D转换、过渡、动画,讲到Canvas 2D图形绘制,再到SVG,最后到WebGL。         坐标系:左上点是坐标原点(0,0),x轴正方向向右,y轴正方向向下,z轴正方向向外(垂直屏幕向外)。 2. 2D转换         CSS3的2D/3D旋

    2024年02月04日
    浏览(35)
  • css3-----3D变换,前端开发入门到精通

    x y z 的方向: 2、3d移动 translate3d 1.transform:translateX(npx);在x轴方向移动 2.transform:translateY(npx); 在y轴方向移动 3.transform:translateZ(npx); 在Z轴方向移动 4.transform:translate3d(x,y,z);综合写法 3、视距perspective 给元素添加3D效果,要给其父元素添加3D效果 视距:眼睛到屏幕的距离。视距与物

    2024年04月25日
    浏览(31)
  • CSS3基础之3D转换(1),前端开发架构

    3. 透视perspective 3.1`translateZ` 4. 3D旋转`rotate3d` 5. 3D呈现`transform-style` 1. 三维坐标系 ======================================================================== 三维坐标系 其实就是指立体空间,立体空间是由3个轴共同组成的 x轴: 水平向右 注意: x 右边是正值,左边是负值 y轴: 垂直向下 注意:

    2024年04月13日
    浏览(35)
  • 【CSS3】CSS3 3D 转换 ① ( CSS3 3D 转换简介 | 3D 物体与 2D 物体区别 | 3D 空间坐标系 | 常用的 3D 转换属性 | 3D 位移转换语法 | 代码示例 )

    3D 显示的物体 与 平面 2D 显示的物体有明显的不同 , 3D 显示效果有 近大远小 的 特点 ; 元素的 2D 的 转换效果 有 平移 , 旋转 , 缩放 效果 , 同样有对应的 3D 转换效果 ; 2D 平面坐标系 中 , 只有 x 轴 和 y 轴 ; 3D 空间坐标系 比 2D 平面坐标系 多了一个 Z 轴 ; x 轴 : 水平向右 ; 左侧是

    2024年02月12日
    浏览(31)
  • CSS3提高: CSS3 3D转换

    3D 转换   我们生活的环境是 3D 的 ,照片就是 3D 物体 在 2D 平面 呈现的 例子。 有什么特点 近大远小。 物体后面遮挡不可见 我们在网页上构建 3D 效果的时候参考这些特点就能产出 3D 效果。 三维坐标系 三维 坐标系其实就是指立体空间,立体空间是由 3 个轴共同组成 的。

    2024年02月01日
    浏览(42)
  • 【CSS3】CSS3 3D 转换 ② ( 3D 透视视图 | “ 透视 “ 概念简介 | 视距与成像关系 | CSS3 中 “ 透视 “ 属性设置 | “ 透视 “ 语法设置 | 代码示例 )

    在本博客中引入 3D 效果 透视视图 Perspective 概念 ; 3D 视图中 产生 3D 效果 , 最终要的是有透视效果 , 通俗的讲 \\\" 透视 \\\" 就是实现 \\\" 近大远小 \\\" 的效果 ; 透视 就是 将 3D 空间中的物体 投影显示到 2D 平面中 ; 透视视图 ( Perspective View ) : 近大远小 , 符合正常人眼观察 3D 世界的规律

    2024年02月13日
    浏览(28)
  • CSS3-3D转换

    目录 1.1三维坐标系 1.2 3D移动translate3d 1.3 透视perspective 1.4 3D旋转 rotate3d 1.5 3D呈现 transform-style 2.1两面翻转盒子案例 3D导航栏 旋转木马 有什么特点 近大远小 物体后面遮挡不可见 1.1三维坐标系 x轴:水平向右 注意:x右边是正值,左边是负值 y轴:水平向下 注意:y下边是正值,

    2024年02月05日
    浏览(34)
  • CSS3 立体 3D 变换

    个人主页: 学习前端的小z 个人专栏: HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 什么是3D的场景呢?2D场景,在屏幕水平和垂直的交叉轴线x轴和y轴。 3D场景,在垂直于屏幕的方法,相对于3D多出个Z轴。 Z轴

    2024年04月15日
    浏览(29)
  • CSS3 -- 3D轮播图

    今天在完善我自己的个人网站时,要做一个3D轮播图,就是一个六边体,在六边体的每个面都放一张图片,但是每个边之间都会有一定的间距,效果如下: 点击两边的按钮会旋转切换图片,每隔4秒会自动切换。 在我初学的时候我觉得这个效果非常的有意思,很高大上,哈哈

    2024年02月12日
    浏览(30)
  • CSS3过渡、过渡练习——进度条案例、2D转换(translate、rotate、scale、转换中心点transform-origin)、动画、3D、案例(两面翻转的盒子、3D导航栏、旋转木马案例)

    目录 一、CSS3过渡(transition)(重点) 二、CSS3过渡练习——进度条案例 三、CSS3 2D转换(translate、rotate、scale、转换中心点transform-origin) 四、CSS3 动画 五、CSS3动画常见属性 五、热点图案例(动画) 六、速度曲线之steps步长(案例——奔跑的熊大) 七、CSS3 3D转换(3D 位移:t

    2024年02月03日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包