前端web入门-移动web-day09

简介: 前端web入门-移动web-day09

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

空间转换

空间转换 – 平移

视距 perspective

空间 – 旋转

立体呈现 – transform-style

空间转换 – 缩放

案例-3D导航

动画

动画 - animation

animation属性

案例-逐帧动画

动画 – 多组动画

空间转换

空间:是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间,Z 轴位置与视线方向相同。

空间转换也叫 3D转换

属性:transform

空间转换 – 平移

取值(正负均可)

       像素单位数值

       百分比(参照盒子自身尺寸计算结果)

提示

     默认情况下,Z 轴平移没有效果

视距 perspective

作用:指定了观察者与 Z=0 平面的距离,为元素添加透视效果

透视效果:近大远小、近实远虚

属性: (添加给父级,取值范围 800-1200)

perspective: 视距;

空间 – 旋转

transform: rotateZ(值);

transform: rotateX(值);

transform: rotateY(值);

左手法则 – 根据旋转方向确定取值正负

左手握住旋转轴, 拇指指向正值方向, 其他四个手指弯曲方向为旋转正值方向

拓展

rotate3d(x, y, z, 角度度数) :用来设置自定义旋转轴的位置及旋转的角度

x,y,z 取值为0-1之间的数字

立体呈现 – transform-style

作用:设置元素的子元素是位于 3D 空间中还是平面中

属性名:transform-style

属性值:

flat:子级处于平面中

preserve-3d:子级处于 3D 空间

呈现立体图形步骤

1. 父元素添加transform-style: preserve-3d;

2. 子级定位

3. 调整子盒子的位置(位移或旋转)

提示

空间内,转换元素都有自已独立的坐标轴,互不干扰

空间转换 – 缩放

属性

transform: scale3d(x, y, z);

transform: scaleX();

transform: scaleY();

transform: scaleZ();

案例-3D导航


<!-- 
    案例 – 3D 导航
    1. 搭建立方体
        • 绿色是立方体的前面
        • 橙色是立方体的上面
    2. 添加鼠标悬停的旋转效果
 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D导航</title>
    <style>
        ul 
        {
            margin: 0;
            padding: 0;
            list-style: none;
        }     
        .nav 
        {
            width: 300px;
            height: 40px;
            margin: 50px auto;
        }
        .nav ul
        {
            display: flex;
        }
        .nav li 
        {
            position: relative;
            width: 100px;
            height: 40px;
            line-height: 40px;
            transition: all .5s;
            transform-style: preserve-3d;
        }
        .nav li a
        {
            position: absolute;
            left: 0;
            top: 0;
            display: block;
            width: 100%;
            height: 100%;
            text-align: center;
            text-decoration: none;
            color: #fff;
        }
        .nav li a:first-child 
        {
            background-color: green;
            transform: translateZ(20px);
        }
        .nav li a:last-child 
        {
            background-color: orange;
            transform: rotateX(90deg) translateZ(20px);
        }
        .nav li:hover
        {
            transform: rotateX(-90deg);
        }
    </style>
</head>
<body>
    <div class="nav">
        <ul>
            <li>
                <a href="#">首页</a>
                <a href="#">Index</a>
            </li>
            <li>
                <a href="#">登录</a>
                <a href="#">Login</a>
            </li>
            <li>
                <a href="#">注册</a>
                <a href="#">Register</a>
            </li>
        </ul>
    </div>
</body>
</html>

动画

动画 - animation

过渡:实现两个状态间的变化过程

动画:实现多个状态间的变化过程,动画过程可控(重复播放、最终画面、是否暂停)

实现步骤

1. 定义动画

2. 使用动画

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>动画实现步骤</title>
    <style>
      .box {
        width: 200px;
        height: 100px;
        background-color: pink;
        animation: change 1s;
      }
      /* 动画一:宽度从200变化到800 */
      @keyframes change
      {
        from
        {
          width: 200px;
        }
        to
        {
          width: 800px;
        }
      }
      /* 动画二:从 200*100 变化到 300*300 变化到800*500 */
      @keyframes change
      {
        0%
        {
          width: 200px;
          height: 100px;
        }
        20%
        {
          width: 300px;
          height: 300px;
        }
        100%
        {
          width: 800px;
          height: 500px;
        }
      }
    </style>
  </head>
  <body>
    <div class="box"></div>
  </body>
</html>

animation属性

提示:

动画名称和动画时长必须赋值

取值不分先后顺序

如果有两个时间值,第一个时间表示动画时长,第二个时间表示延迟时间

案例-逐帧动画

核心原理:

1. steps() 逐帧动画

2. CSS 精灵图(http://t.csdn.cn/tvSjm

精灵动画制作步骤

1. 准备显示区域

       盒子尺寸与一张精灵小图尺寸相同

2. 定义动画

  移动背景图(移动距离 = 精灵图宽度)

3. 使用动画

      steps(N),N 与精灵小图个数相同

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div
        {
            width: 140px;
            height: 140px;
            background-image: url(./images/bg.png);
            animation: run 1s steps(12) infinite;
        }
        @keyframes run
        {
            from
            {
                background-position: 0 0;
            }
            to
            {
                background-position: -1680px 0;
            }
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

动画 – 多组动画

以案例-逐帧动画为例,逐帧动画实现的是原地跑动,可以再加一组动画使其实现真实的移动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div
        {
            width: 140px;
            height: 140px;
            background-image: url(./images/bg.png);
            animation: 
            run 1s steps(12) infinite,
            move 3s forwards
            ;
        }
        @keyframes run
        {
            from
            {
                background-position: 0 0;
            }
            to
            {
                background-position: -1680px 0;
            }
        }
        @keyframes move 
        {
            0%
            {
                transform: translate(0);
            }
            100%
            {
                transform: translate(800px);
            }
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>


相关文章
|
1月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
50 3
|
23天前
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
11天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
27 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
14天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
27 6
|
22天前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
26天前
|
编解码 前端开发 JavaScript
从入门到精通:揭秘前端开发中那些不为人知的优化秘籍!
前端开发是充满无限可能的领域,从初学者到资深专家,每个人都追求更快、更稳定、更用户体验友好的网页。本文介绍了四大优化秘籍:1. HTML的精简与语义化;2. CSS的优雅与高效;3. JavaScript的精简与异步加载;4. 图片与资源的优化。通过这些方法,可以显著提升网页性能和用户体验。
19 3
|
1月前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
1月前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
31 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
1月前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
34 3