CSS3学习---2d转换

声明:以下内容为个人学习总结,初衷是方便自己学习复习记录。如有错误之处,烦请多多指正!

2d转换:

2D 转换是改变标签在二维平面上的位置和形状。

  1. 移动:translate
  2. 旋转:rotate
  3. 缩放:scale

移动:translate

ransform: translate(x, y)
transform: translateX(n)
transfrom: translateY(n)

特点:

  • 不影响其他元素的位置
  • 100%单位,是相对于本身的宽度和高度来计算

案例:盒子居中时,“子绝父相”,中,子盒子回退宽高时可设置,见:盒子在页面中水平垂直方向居中方法总结方法二

旋转:rotate

/* 单位是:deg */
transform: rotate(度数)

特点:

  • rotate 里面跟度数,单位是 deg
  • 角度为正时,顺时针,角度为负时,逆时针
  • 默认旋转的中心点是元素的中心点

案例:
①实现效果:当鼠标放上图片时,图片旋转360度
在这里插入图片描述
代码实现:

<!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>
        img {
     
     
            width: 200px;
            border: 5px solid pink;
            border-radius: 50%;
            /* transform: rotate(45deg); */
            /* 动画过渡:过渡写到自身上,谁做动画给谁加 */
            transition: all 0.3s;
        }
        /* 鼠标经过图片时,旋转图片 */
        
        img:hover {
     
     
            transform: rotate(360deg);
        }
    </style>
</head>

<body>
    <img src="imgs/q.png" alt="">
</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>
        .box {
     
     
            width: 300px;
            height: 50px;
            border: 1px solid red;
            position: relative;
        }
        /* 伪元素:在元素内部的后面插入内容,属于行内元素 */
        
        .box::after {
     
     
            content: "";
            border-right: 1px solid black;
            border-bottom: 1px solid black;
             /* 设置定位后,改变元素的显示属性(不再是行内元素) */
            position: absolute;
            top: 15px;
            right: 13px;
            width: 10px;
            height: 10px;
            /* 旋转45度 */
            transform: rotate(45deg);
            /* 动画过渡 */
            transition: all .3s;
        }
        /* 鼠标经过盒子,里面的三角旋转 */
        
        .box:hover::after {
     
     
            transform: rotate(225deg);
        }
    </style>
</head>

<body>
    <div class="box">

    </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>
        .father {
     
     
            width: 200px;
            height: 200px;
            border: 1px solid pink;
            margin: 10px;
            /* 溢出隐藏,不显示其他内容 */
            overflow: hidden;
            /* 使盒子水平排列 */
            float: left;
        }
        
        .father::before {
     
     
            content: "内容";
            /* 伪元素是行内元素,无法设置宽高,因此转换为块状元素 */
            display: block;
            width: 100%;
            height: 100%;
            background-color: pink;
            /* 以左下角为旋转中心,旋转180度 */
            transform: rotate(180deg);
            transform-origin: left bottom;
            /* 动画过渡效果 */
            transition: all .3s;
        }
        /* 鼠标经过盒子时,旋转0度 */
        
        .father:hover::before {
     
     
            transform: rotate(0deg);
        }
    </style>
</head>

<body>
    <div class="father">

    </div>
    <div class="father">

    </div>
    <div class="father">

    </div>

</body>

</html>

缩放:scale

transform: scale(x, y)

特点:

  • 可以设置转换中心点缩放,默认以中心点缩放,而且不影响其他盒子
  • 数字是倍数的含义,所以不需要加单位

案例:
①图片放大
实现效果:
在这里插入图片描述代码实现:

<!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>
        * {
     
     
            margin: 0;
            padding: 0;
        }
        
        li {
     
     
            list-style: none;
            float: left;
            margin: 5px;
            /* 溢出隐藏 */
            overflow: hidden;
        }
        
        ul li a img {
     
     
            width: 200px;
            /* 动画过渡 */
            transition: all .4s;
        }
        /* 鼠标经过图片时,放大1.2倍 */
        
        ul li a img:hover {
     
     
            transform: scale(1.2);
        }
    </style>
</head>

<body>
    <ul>
        <li>
            <a href="#"><img src="imgs/scene.jpg" alt=""></a>
        </li>
        <li>
            <a href="#"><img src="imgs/scene.jpg" alt=""></a>
        </li>
        <li>
            <a href="#"><img src="imgs/scene.jpg" alt=""></a>
        </li>
    </ul>
</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>
        li {
     
     
            list-style: none;
            width: 30px;
            height: 30px;
            line-height: 30px;
            text-align: center;
            border: 1px solid skyblue;
            float: left;
            margin: 5px;
            /* 鼠标经过变为小手样式 */
            cursor: pointer;
            /* 正方形变为圆形 */
            border-radius: 50%;
            transition: all .3s;
        }
        
        li:hover {
     
     
            transform: scale(1.2);
        }
    </style>
</head>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
    </ul>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/pilgrim_121/article/details/111321598