前端的艺术 星球大战的动画设计!!!

498 阅读5分钟

引言

在现代前端开发中,HTML5和CSS3为我们提供了强大的工具和功能,给我们提供了创建复杂和动态的网页的前提。本文将以“星球大战”为主题,通过具体的代码示例和详细解释,帮助读者理解如何运用HTML5和CSS3建立自己想要的动态网页,为此本篇文章将从HTML5的基本结构、CSS重置、居中技术、CSS动画等多个方面进行探讨。

一、HTML5的基本结构

首先便是HTML5的建立,完成与否决定了你的页面是否符合你的心意。有一个清晰的框架作为基础,这样可以确保我们在设计页面布局和功能时,更好的实现我们想要的功能,以下是一个我的HTML5文档结构:

<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>星球大战</title>
    <link rel="stylesheet" href="./common.css">
</head>

<body>
    <div class="starwars">
        <img src="./images/star.svg" class="star" alt="">
        <img src="./images/wars.svg"class="wars"  alt="">
        <h2 class="byline">
            <span>T</span><span>h</span><span>e</span>
            <span>F</span><span>o</span><span>r</span><span>c</span><span>e</span>
            <span>A</span><span>w</span><span>a</span><span>k</span><span>e</span>
            <span>n</span><span>s</span>
        </h2>
    </div>
</body>

在HTML的设计中,我运用了一下标签来完成我需要的页面:

  • <img> 标签:用于插入图像。
  • <h2> 标签:定义了一个二级标题,用于显示重要的副标题或说明文字。
  • class 属性:为标题分配了一个类名 byline,可以在CSS中用于应用特定的样式。
  • <span> 标签:将每个字母单独包裹在一个 <span> 标签中。这样做可以为每个字母单独应用样式,实现更精细的控制,例如逐个字母的动画效果(后面实现单个字母旋转的效果)。

二、CSS重置 前端必要素养

不同的浏览器厂商对默认样式有不同的实现,这可能导致页面在不同浏览器上的显示效果不一致。为了消除这些差异,我们通常会在页面样式开始之前进行CSS重置。

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
  • * :通配符,表示所有元素。
  • margin: 0; padding: 0; :将所有元素的外边距和内边距设置为0,确保初始样式一致。
  • box-sizing: border-box; :使元素的宽度和高度包括内边距和边框,避免布局问题。

可是在一般情况下,我们都不会使用通配符完成CSS重置,虽然使用通配符 * 可以快速重置所有元素的默认样式,但在实际开发中,这种方法存在一些潜在的问题和缺点。例如:降低页面的加载和渲染性能;导致样式覆盖问题;增加调试难度;导致不必要的样式覆盖;增加CSS文件的大小和复杂性;影响页面的布局和可读性;增加了代码的复杂性等。

因此,我们通常会列出所有常用的标签,进行更精细的重置:

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}

三、利用居中技术 实现页面布局

在前端开发中,居中是一个常见的需求。以下是几种常用的居中技术:

  1. 绝对定位
.absolute {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
  • position: absolute;:使元素脱离正常文档流,相对于最近的非static定位祖先元素定位。
  • transform: translate(-50%, -50%);:将元素自身向左和向上各移动自身宽度和高度的一半,实现精确居中。
  1. 相对定位
.relative {
    position: relative;
    top: 50%;
    left: 50%;
}
  • position: relative; :使元素相对于其正常位置进行定位,然占据文档中的空间,不会脱离正常文档流。

四、CSS动画

CSS动画是现代前端开发中不可或缺的一部分,它可以为页面增添动态效果,提升用户体验。以下是几种常用的CSS动画技术:

  1. animation 属性

    • 基本用法
.animated-element {
    animation: my 2s infinite;
}

@keyframes my {
    0% { transform: scale(1); }
    50% { transform: scale(1.2); }
    100% { transform: scale(1); }
}
  • 解释

    • animation: my= 2s infinite;:应用名为my=的动画,持续时间为2秒,无限循环。
    • @keyframes my:定义关键帧,描述动画的各个阶段。
  1. transform 属性

    • 缩放和位移
.spaceship {
    transform: scale(0.8) translateY(-10px);
}
  • 解释

    • transform: scale(0.8) translateY(-10px);:将飞船缩小80%,并向上下移10像素。
  1. 3D效果

    • 开启3D
.spaceship {
    transform-style: preserve-3d;
    perspective: 800px;
}
  • 解释

    • transform-style: preserve-3d;:开启3D效果,使子元素在3D空间中保持位置。
    • perspective: 800px;:设置视点距离,模拟3D效果。
  1. 关键帧动画

    • 飞船模拟动画
@keyframes name {
    0% { transform: translateX(0); }
    50% { transform: translateX(100vw); }
    100% { transform: translateX(0); }
}
  • 解释

    • @keyframes fly:定义关键帧,描述飞船从左到右再回到左边的动画过程。

inline 元素对动画实现的影响,inline元素默认情况下不支持 transform属性,因为transform 需要元素具有块级或行内块级的特性。为了使 inline元素支持transform,可以运用 display: inline-block; :使元素具有行内块级特性,支持 transform`等属性。

五、总结

本篇文章分享了如何使用HTML5和CSS3创建一个具有动态效果的简单页面,希望小伙伴们能够收获到自己想要了解的知识,在前端开发的道路上更进一步,成为一名更牛的前端开发者。

download.jpg