HTML+CSS之过度,变形,动画(14个案例+代码+效果图)

目录

过渡 (Transitions)

transition-property:

案例:鼠标悬浮方逐渐放大

1.代码

2.效果

transition-duration:

案例:鼠标悬停逐渐慢慢放大

1.代码

2.效果

transition-timing-function:

案例:放大速度为ease-out

1.代码

2.效果

transition-delay:

案例:延迟一秒放大

1.代码

2.效果

变换 (Transforms)

平移 (translate):

案例:移动到指定位置

1.代码

2.效果

缩放 (scale):

案例:使用scale放大图片

1.代码

2.效果

倾斜 (skew):

案例:图片倾斜45

1.代码

2.效果

旋转 (rotate):

案例:图片旋转45

1.代码

2.效果

围绕X轴旋转 (rotateX()):

案例:图片围绕x轴旋转45

1.代码

2.效果

围绕Y轴旋转 (rotateY()):

案例:图片围绕Y轴旋转45

1.代码

2.效果

围绕Z轴旋转 (rotateZ()):

案例:图片围绕Z轴旋转45

1.代码

2.效果

围绕X轴平移 (translateX(x)):

案例:图片围绕X轴平移

1.代码

2.效果

围绕Y轴平移 (translateY(y)):

案例:图片围绕Y轴平移

1.代码

2.效果

关键帧动画 (@keyframes 和 Animations)

@keyframes 规则:

animation-name:

animation-duration:

animation-timing-function:

animation-delay:

animation-iteration-count:

animation-direction:

案例:制作一个闪烁放大的效果动画

1.代码

2.效果


过渡 (Transitions)

过渡是CSS中用来平滑地从一种样式变到另一种样式的动画效果。它们通常在用户交互(如鼠标悬停)时触发。

  1. transition-property

    • 指定哪些CSS属性应该具有过渡效果。
    • 值可以是具体的属性名(例如widthcolor)、多个属性用逗号分隔,或者使用all来表示所有属性。
    • 示例:transition-property: width, heigh

案例:鼠标悬浮方逐渐放大

1.代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>鼠标悬浮方逐渐放大</title>

    <style>
        .myDivStyle{
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
        }
        .myDivStyle:hover{
            
            width: 400px;
            height: 400px;
            /**
             * 渐变 放大
             */
            transition-property: width,height;
        }
    </style>
</head>
<body>
    <div class="myDivStyle" ></div>
    
</body>
</html>

2.效果

  1. transition-duration

    • 定义过渡完成所需的时间。
    • 可以设置为秒(s)或毫秒(ms)。
    • 示例:transition-duration: 0.5s;

案例:鼠标悬停逐渐慢慢放大

1.代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>鼠标悬浮方逐渐放大</title>

    <style>
        .myDivStyle{
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
        }
        .myDivStyle:hover{
            
            width: 400px;
            height: 400px;
            /**
             * 渐变 放大
             */
            transition-property: width,height;
            transition-duration: 8s;
        }
    </style>
</head>
<body>
    <div class="myDivStyle" ></div>
    
</body>
</html>

2.效果

  1. transition-timing-function

    • 控制过渡的速度曲线。
    • 常见值包括ease(默认),linearease-inease-outease-in-out,以及自定义的贝塞尔曲线cubic-bezier(n,n,n,n)
    • 示例:transition-timing-function: ease-in-out;

案例:放大速度为ease-out

1.代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>放大速度为ease-out</title>

    <style>
        .myDivStyle{
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
        }
        .myDivStyle:hover{
            
            width: 400px;
            height: 400px;
            /**
             * 渐变 放大
             */
            transition-property: width,height;
            /**
              * 持续时间
              */
            transition-duration: 8s;
            /**
            *线性动画
            */
            transition-timing-function: ease-out;
        }
    </style>
</head>
<body>
    <div class="myDivStyle" ></div>
    
</body>
</html>

2.效果

原始状态

放大状态

  1. transition-delay

    • 设置过渡开始前的延迟时间。
    • 可以是正数(延迟开始)或负数(提前开始)。
    • 示例:transition-delay: 0.2s;

案例:延迟一秒放大

1.代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>放大速度为ease-out</title>

    <style>
        .myDivStyle{
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
        }
        .myDivStyle:hover{
            
            width: 400px;
            height: 400px;
            /**
             * 渐变 放大
             */
            transition-property: width,height;
            /**
              * 持续时间
              */
            transition-duration: 8s;
            /**
            *线性动画
            */
            transition-timing-function: ease-out;
            /**
            * 延迟1s
            */
            transition-delay: 1s;
           
        }
    </style>
</head>
<body>
    <div class="myDivStyle" ></div>
    
</body>
</html>

2.效果

原始状态

鼠标悬浮延迟1s后会慢慢放大 

变换 (Transforms)

变换允许你改变元素的形状、大小和位置。

  1. 平移 (translate)

    • transform: translate(x, y); 在X轴和Y轴上移动元素。
    • 示例:transform: translate(50px, 100px);

案例:移动到指定位置

1.代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>平移到指定位置</title>
    <style>
        .myDivStyle{
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
        }
        .myDivStyle:hover{
            
            transform: translate(300px,300px);
            transition-property: transform;
            transition-duration: 8s;
            
        }
    </style>

</head>
<body>
    <div class="myDivStyle"></div>
</body>
</html>

2.效果

  1. 缩放 (scale)

    • transform: scale(x, [y]); 放大或缩小元素。
    • 如果只提供一个参数,则X轴和Y轴将被相同地放大/缩小。
    • 示例:transform: scale(1.5, 0.8);

案例:使用scale放大图片

1.代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>使用scale放大图片</title>
    <style>
        .myDivStyle {
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
        }

        .myDivStyle:hover {
            transform: scale(5);
            transition-property: transform;
            transition-duration: 8s;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
    </style>
</head>
<body>
    <div class="myDivStyle"></div>
</body>
</html>

2.效果

  1. 倾斜 (skew)

    • transform: skew(x-angle, [y-angle]); 让元素沿X轴和/或Y轴倾斜。
    • 示例:transform: skew(20deg, 10deg);

案例:图片倾斜45

1.代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片倾斜45</title>
    <style>
        .myDivStyle {
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
        }

        .myDivStyle:hover {
            transform: skew(45deg);
            transition-property: transform;
            transition-duration: 8s;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
    </style>
</head>
<body>
    <div class="myDivStyle"></div>
</body>
</html>

2.效果

  1. 旋转 (rotate)

    • transform: rotate(a); 绕Z轴旋转元素a度。
    • 示例:transform: rotate(45deg);

案例:图片旋转45

1.代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片旋转45</title>
    <style>
        .myDivStyle {
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
        }

        .myDivStyle:hover {
            transform: rotate(45deg);
            transition-property: transform;
            transition-duration: 8s;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
    </style>
</head>
<body>
    <div class="myDivStyle"></div>
</body>
</html>

2.效果

  1. 围绕X轴旋转 (rotateX())

    • transform: rotateX(angle); 绕X轴旋转。
    • 示例:transform: rotateX(30deg);

案例:图片围绕x轴旋转45

1.代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片围绕x轴旋转45
    </title>
    <style>
        .myDivStyle {
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
        }

        .myDivStyle:hover {
            transform: rotateX(45deg);
            transition-property: transform;
            transition-duration: 8s;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
    </style>
</head>
<body>
    <div class="myDivStyle"></div>
</body>
</html>

2.效果

  1. 围绕Y轴旋转 (rotateY())

    • transform: rotateY(angle); 绕Y轴旋转。
    • 示例:transform: rotateY(30deg);

案例:图片围绕Y轴旋转45

1.代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片围绕y轴旋转45
    </title>
    <style>
        .myDivStyle {
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
        }

        .myDivStyle:hover {
            transform: rotateY(45deg);
            transition-property: transform;
            transition-duration: 8s;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
    </style>
</head>
<body>
    <div class="myDivStyle"></div>
</body>
</html>

2.效果

  1. 围绕Z轴旋转 (rotateZ())

    • transform: rotateZ(angle); 绕Z轴旋转,与rotate()相同。
    • 示例:transform: rotateZ(30deg);

案例:图片围绕Z轴旋转45

1.代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片围绕z轴旋转45
    </title>
    <style>
        .myDivStyle {
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
        }

        .myDivStyle:hover {
            transform: rotateZ(45deg);
            transition-property: transform;
            transition-duration: 8s;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
    </style>
</head>
<body>
    <div class="myDivStyle"></div>
</body>
</html>

2.效果

  1. 围绕X轴平移 (translateX(x))

    • transform: translateX(x); 仅沿X轴平移。
    • 示例:transform: translateX(50px);

案例:图片围绕X轴平移

1.代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片围绕X轴平移45
    </title>
    <style>
        .myDivStyle {
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
        }

        .myDivStyle:hover {
            transform: translateX(200px);
            transition-property: transform;
            transition-duration: 8s;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
    </style>
</head>
<body>
    <div class="myDivStyle"></div>
</body>
</html>

2.效果

  1. 围绕Y轴平移 (translateY(y))

    • transform: translateY(y); 仅沿Y轴平移。
    • 示例:transform: translateY(100px);

案例:图片围绕Y轴平移

1.代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片围绕X轴平移200px
    </title>
    <style>
        .myDivStyle {
            background: url("aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
        }

        .myDivStyle:hover {
            transform: translateY(200px);
            transition-property: transform;
            transition-duration: 8s;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
    </style>
</head>
<body>
    <div class="myDivStyle"></div>
</body>
</html>

2.效果

关键帧动画 (@keyframes 和 Animations)

关键帧动画允许你创建复杂的动画序列。

  1. @keyframes 规则

    • 定义动画的关键帧,即动画过程中特定点的样式规则。
  2. animation-name

    • 引用由@keyframes定义的动画名称。
    • 示例:animation-name: fadeIn;
  3. animation-duration

    • 设置动画完成一个周期所需的时间长度。
    • 示例:animation-duration: 2s;
  4. animation-timing-function

    • 类似于过渡中的transition-timing-function,定义了动画的速度曲线。
    • 示例:animation-timing-function: ease;
  5. animation-delay

    • 设置动画开始前的等待时间。
    • 示例:animation-delay: 1s;
  6. animation-iteration-count

    • 确定动画应该播放多少次。
    • 可以是一个具体的次数(如2),或者无限循环(infinite)。
    • 示例:animation-iteration-count: infinite;
  7. animation-direction

    • 控制动画是否反向运行。
    • 可能的值包括normal(默认,每次迭代从头到尾正常播放)、reverse(反向播放)、alternate(第一次正向,第二次反向,如此交替)及alternate-reverse(首次反向,随后交替)。
    • 示例:animation-direction: alternate;

案例:制作一个闪烁放大的效果动画

1.代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>制作一个闪烁放大的效果动画</title>
    <style>
        .myDivStyle {
            background: url("./aImg.png");
            width: 200px;
            height: 200px;
            background-size: cover;
            border: 2px solid rgb(18, 197, 197);
            display: flex;
            justify-content: center;
            align-items: center;

            /**
            *动画名字
            */
            animation: myDivAnimation;
            /**
            * 动画持续时间
            */
            animation-duration: 2s;
            /**
            * 动画播放次数(无限播放)
            */
            animation-iteration-count: infinite;
            /**
            * 动画播放方式 ease-in-out
            */
            animation-timing-function: ease-in-out;
            /**
            * 动画延迟时间
            */
            animation-delay: 0.1s;
        }

        /**
        * 动画
        */
        @keyframes myDivAnimation{
            0%{
                transform: scale(1);
                opacity: 1;

            }
            50%{
                transform: scale(2);
                opacity: 0.2;
            }
            100%{
                transform: scale(1);
                opacity: 1;
            }
        }
    </style>
</head>

<body style="display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;">


    <div class="myDivStyle"></div>

</body>

</html>

2.效果

这个效果是放大缩小在放大会闪烁一下

附录

        素材下载

 aMouse.png等2个文件官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值