首页 > 其他分享 >CSS之动画

CSS之动画

时间:2023-12-26 19:55:38浏览次数:25  
标签:动画 元素 子项 transform height CSS 200px

一.动画

动画类型

CSS3 可以创建动画,它可以取代许多网页动画图像、Flash 动画和 JavaScript 实现的效果。

transform属性可以定义一些主要的动画属性,

  • translate:平移,translat(100px),向右平移100px
  • scale:缩放,scale(120%),放大20%
  • skew:阴影,skew(30deg),顺时针阴影30度
  • rotate:旋转,rotate(30deg),顺时针旋转30度

transform-origin:改变动画的起始地点,一般以原点为起点

动画过渡

transition:动画过渡定义,有了这个属性,定义的动画才有过程         四个属性:
  • property:需过度的属性,如transform
  • duration:过度的时长,如:1s
  • timing-function:缓动函数,css定义好了四种,可以自行选择,如:ease-in-out
  • delay:开始延迟事件,事件触发后多久触发动画

测试动画:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS动画</title>
    <script src="../static/js/jquery-3.7.1.js"></script>
    <style>
        #box1{
            width: 200px;
            height: 200px;
            background-color: blueviolet;
            transform: translate(100px);
            transform-origin: top left;
            transform: rotate(30deg);
        }
        #box2{
            width: 200px;
            height: 200px;
            background-color: blueviolet;
            transition: transform 2s ease;
        }
        #box3{
            width: 200px;
            height: 200px;
            background-color: blueviolet;
            transition: transform 1s ease-in-out 1s;
        }
        #box4{
            width: 200px;
            height: 200px;
            background-color: aqua;
            border-radius: 200px;
            text-align: center;
        }
        #box5{
            width: 50px;
            height: 50px;
            margin: 0 auto;
            background-color: brown;
            border-radius: 50px;
        }
        #box3:hover{
            transform: translate(100px);
            transform-origin: top left;
        }
        #box2:hover{
            transform: scale(0.5);
            transform-origin: top left;
        }
      
    </style>
   
</head>
<body>
    <div id="box1">
        <p>
            移动的盒子
        </p>
    </div>
    <br>
    <div id="box2">
        <p>
            移动的盒子
        </p>
    </div>
    <br>
    <div id="box3">
        <p>
            移动的盒子
        </p>
    </div>
    <div id="box4" onclick="fun1()">
        <div id="box5">

        </div>
    </div>
</body>
</html>

 

帧动画

@keyframes 规则内指定一个 CSS 样式和动画将逐步从目前的样式更改为新的样式。

一般可以通过0% ~~ 100%来描述一个帧内的过程

0%为帧开始的阶段

50%为帧进行到一般的阶段

100%为此帧完成的阶段

如果此帧动画比较特别,只用起始帧和结束帧,那么可以使用0%和100%,也可以使用from 和 to关键字

@keyframes格式:

@keyframes name{
0%{
transform: ;
}
100%{
transform: ;
}
}

 

解释:

name:表示这个帧动画的名字,全局必须唯一

0%{ }:为帧开始的情况下,执行什么动画类型,由transform描述

100%{ }:为帧结束的情况下,执行什么动画类型,由transfrom描述

有了帧动画后,需要启动事项,它就是 animation

它描述了帧动画的过渡属性

animation:keyframes-name,duration,timing-function,delay,fill-mode,direction,play-state

keyframes-name:帧动画的名字

duration:帧动画执行的单帧时间

timing-function:缓动函数

delay:开始延迟事件,事件触发后多久触发动画

fill-mode:设置动画执行前和执行后的样式,动画初始化为开始帧(none,默认),动画结束后停留在结束帧(forwards),前二者都包含(both)

direction:normal(顺时针,默认的),reverse(逆时针),alternate(先正向后反向)

play-state:帧动画的执行状态,如触发后一直执行动画(infinite),执行一次(running)

帧动画测试:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS动画</title>
    <script src="../static/js/jquery-3.7.1.js"></script>
    <style>
       #box4{
            width: 200px;
            height: 200px;
            background-color: aqua;
            border-radius: 200px;
            text-align: center;
        }
        #box5{
            width: 50px;
            height: 50px;
            margin: 0 auto;
            background-color: brown;
            border-radius: 50px;
        }
        #box4:hover{
            animation: spin 2s linear infinite;
        }
        @keyframes spin {
            0%{
                transform: rotate(0deg);
            }
            25%{
                transform: rotate(180deg);
            }
            100%{
                transform: rotate(360deg);
            }
        }
</style>
</head>
<body>
<div id="box4" onclick="fun1()">
        <div id="box5">

        </div>
    </div>
</body>
</html>

 

解释:

当鼠标悬浮在div盒子上的时候

animation就会被触发

然后根据描述的帧动画动作和过程进行动画

可以直接复制下来去测试是什么效果

 二.CSS补充

1.box-sizing

当我们在css设置一个div盒子的大小时,一般是优先规定width和height,当需要对盒子中的文本内容进行样式的时候,会设置一些边框和内边距

当设置这些属性后,会自增盒子的大小,如:设置了盒子的宽度为200px,但又设置了边框为2px,内边距为20px,那么盒子最后的宽度为为:200px + 2px + 2px + 20px + 20px

多的部分是左右边框和左右内边距

为了对布局进行稳定样式,那么我们在预设值的时候就应当避免后序的样式对盒子的整体进行改变,所以需要使用到box-sizing属性

它一共有两个属性值:

  • content-box: 这是默认值。浏览器对盒模型的解释遵从W3C标准,当定义width和height时,它的参数值不包括border和padding。
  • border-box: 当定义width和height时,border和padding的参数值被包含在width和height之内。

我们需要用到border-box属性值,将后续的盒子边框和内边距都归为初始的盒子

注意点:外边距是不会被限制到的

2.justify-content

justify-content属性用于控制flexbox容器内的弹性子项在主轴(main axis)上的对齐方式。主轴的方向取决于flexbox容器的flex-direction属性。默认情况下,主轴的方向是水平的,从左到右。

前提是当前的结点必须是弹性布局,也就是先设置属性为:display: flex;  就可以设置当前结点为弹性布局

当一个元素被设置为Flex布局(display: flex;)后,其子元素将自动成为弹性项目(flex items),并按照一定的方式进行排列和对齐。Flex布局的主要思想是使父容器能够调节子元素的宽度/高度,以适应不同的屏幕尺寸和显示设备。

justify-context就会对此节点的子元素进行弹性布局,其属性值有以下:

  1. flex-start:弹性子项向行头紧挨着填充,第一个弹性子项的main-start外边距边线被放置在该行的main-start边线,后续弹性子项依次平齐摆放。
  2. flex-end:弹性子项从行尾开始排列,第一个弹性子项的main-end外边距边线被放置在该行的main-end边线,后续弹性子项依次平齐摆放。
  3. center:弹性子项在主轴上居中排列,第一个弹性子项的main-start外边距边线被放置在该行的main-start边线,后续弹性子项依次平齐摆放,且等间距均匀地排列在主轴上。
  4. space-between:弹性子项均匀排列在主轴上,首个元素放置于起点,末尾元素放置于终点。
  5. space-around:弹性子项均匀排列在主轴上,每个元素周围分配相同的间距,首尾元素与父容器边界的距离是另一边间距的一半。
  6. space-evenly:弹性子项均匀排列在主轴上,每个元素之间的间距相等,包括首尾元素与边框的间距

3.background-size

  1. contain:缩小图片来适应元素的尺寸,同时保持图片的原始宽高比。图片会被剪裁以完全适应元素,但不会超出元素边界。
  2. cover:扩展图片来填满元素,同时保持图片的原始宽高比。图片可能会被剪裁以适应元素,确保整个元素被覆盖。
  3. 100px 100px:将图片调整为指定的大小(例如 100px x 100px)。
  4. 50% 100%:将图片调整为相对于包含元素的指定大小。例如,如果元素的宽度为 200px,则图片的宽度将为 100px。

4.<i></i>

对包含的文本进行斜体

需要注意的是,<i>标签只是简单地更改文本的样式,而不是语义。在某些情况下,使用CSS的font-style: italic;属性可能更为合适,因为这样可以保持HTML的语义清晰。

5.height: 100vh

height: 100vh; 是一个CSS样式规则,用于设置HTML元素的高度。

这里的 100vh 是一个视口单位(Viewport Unit),vh 代表视口高度的百分比。100vh 意味着元素的高度将等于视口(浏览器窗口)的高度的100%。换句话说,元素的高度将与浏览器窗口的高度相等,不论窗口大小如何变化。

6.颜色rgba(0~255,0~255, 0~255, 0~1)

我们知道rgb就是三基色,红黄蓝,可以通过这三种颜色配置出其它的颜色

而rgba多了一个属性值,是用来控制此颜色的透明度的

  • 255, 255, 255 分别代表红色、绿色和蓝色的分量。每个分量的值范围从 0 到 255。在这里,每个分量的值都是 255,这意味着红色、绿色和蓝色都被设置为最大值,所以这是一个白色的颜色。
  • .7 是透明度(alpha 值),范围从 0(完全透明)到 1(完全不透明)。在这个例子中,.7 表示有一定的透明度,约为70%的不透明度。

 

标签:动画,元素,子项,transform,height,CSS,200px
From: https://www.cnblogs.com/5ran2yl/p/17909392.html

相关文章

  • 软件测试/测试开发|Python selenium CSS定位方法详解
    简介CSS选择器是一种用于选择HTML元素的模式。它允许我们根据元素的标签名、类名、ID、属性等属性进行选择。CSS选择器的语法简单而灵活,是前端开发中常用的定位元素的方式。selenium中的css定位,实际是通过css选择器来定位到具体元素,css选择器来自于css语法。CSS定位有以下显著......
  • iview 表格列自定义样式 & public.css 公共样式里面引用图片方式
    {title:'操作',key:'action',align:'center',renderHead:()=>{},//自定义表头样式className:'col_oper',width:120,render:(h,params)=&g......
  • css 禁止用户选择字体
    .className{-moz-user-select:none;/*火狐*/-webkit-user-select:none;/*webkit浏览器*/-ms-user-select:none;/*IE10*/-khtml-user-select:none;/*早期浏览器*/-webkit-touch-callout:none;user-select:none;} ......
  • 弹性布局 flex 的公共的css文件
    /*弹性布局*/.flex{display:flex;}.flex1{flex:1;}.flex-column{flex-direction:column;}.justify-start{justify-content:flex-start;}.justify-end{justify-content:flex-end;}.justify-center{justify-content:center;}.justify-betw......
  • css响应布局的@media
    这是css3中的一个特性,允许我们根据屏幕的宽高来应用不同的样式,下面是一些经典的应用:基础语法:mediaType表示媒体类型,如screen、print、speech等。mediaFeature表示媒体特性,如宽度、高度、颜色等。@mediamediaTypeand(mediaFeature){/*样式规则*/}针对屏幕的宽度,我们设......
  • 黑马pink css6
    盒子的圆角边框:圆形和圆角矩形的设置方法:盒子阴影:不占用空间文字阴影:用得不多网页布局的三种方式:标准流:占用一行或共用一行浮动定位实际开发要用这三种方式网页布局第一准则:多个块级元素纵向排列用标准流,多个块级元素横向排列用浮动浮动:将盒子移到一边,直到左边缘或右......
  • Unity引擎2D游戏开发,受伤及死亡的逻辑和动画
    裁切素材制作受伤动画略制作死亡动画由于没有死亡动画素材,所以直接调整Alpha通道数值,使其逐渐消失在Animations中复制野猪受伤动画,命名为boarDeadAnimator中拖入boarDead动画点击AddProperty,选择Color将最后一帧的Alpha值改为0Animator连接动画逻辑从AnyState连接......
  • HTML学习第五天:深入理解CSS与样式
    在今天的HTML学习中,我深入了解了CSS和样式的重要性。早上,我开始学习CSS的基础知识。CSS是一种用于描述网页样式的语言,它可以使网页更加美观和易于阅读。通过使用CSS,我可以控制网页中元素的布局、颜色、字体和许多其他样式属性。我学习了如何将CSS与HTML结合使用,以及如何使用不同的......
  • ie11 css适配
    1. justify-content:space-evenly;兼容性处理justify-content:space-evenly;在IE11中不生效,替换为justify-content:space-between;&:before,&:after{content:'';display:block;}2. background-clipbackground-clip设置元素的背景(背景图片或颜色)是否延......
  • Flutter 页面专场动画
    在不同路由(或界面)之间进行切换的时候,许多设计语言,例如Material设计,都定义了一些标准行为。但有时自定义路由会让app看上去更加的独特。为了更好的完成这一点,PageRouteBuilder提供了一个Animation对象。这个Animation能够通过结合Tween以及Curve对象来自定义路由转换......