CSS3 2D转换

鼠标经过盒子时以左下角旋转可见
鼠标经过分页按钮放大效果
案例一 鼠标经过盒子时旋转可见

 <style>
        div {
            /* 内容溢出时被修剪 */
            overflow: hidden;
            width: 200px;
            height: 200px;
            border: 1px solid olive;
            margin: 10px 10px;
            /* 加个浮动 */
            float: left;
        }
        
        div::before {
            content: "哈哈";
            display: block;
            background-color: cyan;
            width: 100%;
            height: 100%;
            transition: all 1s;
            transform-origin: left bottom;
            transform: rotate(180deg);
        }
        /* 鼠标经过div 里面的before 复原 */
        div:hover::before {
            transform: rotate(0deg);
        }
    </style>

案例二 鼠标经过分页按钮放大效果

<style>
        li {
            float: left;
            width: 40px;
            height: 40px;
            line-height: 40px;
            text-align: center;
            border-radius: 50%;
            border: 1px solid green;
            margin: 10px;
            list-style-type: none;
            cursor: pointer;
            transition: all 0.4s;
        }
        
        li:hover {
            transform: scale(1.2);
        }
</style>

相关知识点
一、2D转换

  1. 2D转换之移动 translate
  • 移动盒子的位置:定位、盒子的外边距、2D转换移动
  • 2D移动是2D转换里面的一种功能,可以改变元素在页面中的位置,类似定位。

语法:

transform: translate(x, y);或者分开写
transform: translateX(n);
transform: translateY(n);
<style>
        div {
            width: 100px;
            height: 100px;
            background-color: pink;
            transform: translate(100px, 0px);
            transform: translateX(100px);
            transform: translateY(100px);
        }
</style> 

重点:

  • 定义2D转换中的移动,沿着X和Y轴移动元素
  • translate最大优点:不会影响到其他元素的位置
  • translate中的百分比单位是相对于自身元素的translate:(50%,50%);
  • 对行内标签没有效果

常用场景:盒子中的子元素居中 ”定位+translate“

<style>
        div {
            position: relative;
            width: 400px;
            height: 400px;
            background-color: pink;
            transform: translate(100px, 0px);
            transform: translateX(100px);
            transform: translateY(100px);
        }
        /* 盒子div中的p居中 */
        p {
            position: absolute;
            top: 50%;
            left: 50%;
            width: 200px;
            height: 200px;
            background-color: aqua;
            transform: translate(-50%, -50%); //盒子往上、往左走盒子的一半
        }
</style>
  1. 2D转换之旋转 rotate
  • 2D转换指的是让元素在2维平面内顺时针旋转或者逆时针旋转。
  • 语法:transform:rotate(度数)
  • 重点:
    • rotate里面跟度数,单位是deg,比如rotate(45deg);
    • 角度为正时,顺时针,负时,为逆时针
    • 默认旋转的中心点是元素的中心点
      用法:
/* 设置了圆角图片鼠标滑过时旋转360° */
<style>
        img {
            width: 150px;
            /* 添加圆角边框 */
            border-radius: 50%;
            border: 5px solid black;
            transition: all 0.3s;
        }
        
        img:hover {
            transform: rotate(360deg);
        }
</style>
<body>
    <img src="yuan.png" alt="">
</body>

3,2D转换中心点 transform-origin 设置元素转换的中心点

  • 语法 transform-origin:x y;
  • 重点
    • 注意后面的参数x和y用空格隔开
    • x y默认转换的中心点是元素的中心点(50% 50%)
    • 还可以给x y设置像素或者方位名词(top bottom left right center)
  • 用法:
   <style>
        div {
            width: 200px;
            height: 200px;
            background-color: blue;
            /* auto 左右空白自适应 */
            margin: 100px auto;
            transition: all 1s;
            /* 1.可以跟方位名词 */
            /* transform-origin: left bottom; */
            /* 2.默认的是 50% 50%  等价于center center*/
            /* 3.可以是px像素 */
            transform-origin: 50px 50px;
        }
        
        div:hover {
            transform: rotate(360deg);
        }
    </style>

4,2D转换之缩放scale

  • 语法:
transform:scale(x,y);
  • 注意:
    • 注意其中的x和y用逗号分隔
    • transform:scale(1,1):宽和高都放大一倍,相对于没有放大
    • transform:scale(2,2):宽和高都放大了2倍
    • transform:scale(2):只写一个参数,第二个参数则和第一个参数一样,相当于scale(2,2)
    • transform:scale(0.5,0.5):缩小
    • scale缩放最大的优势:可以设置转换中心点缩放,默认以中心点缩放的,而且不影响其它盒子

5,2D转换之综合写法
注意:

  • 同时使用多个转换,其格式为;transform:translate() rotate() scale()…等
  • 其顺序会影响转换效果(先旋转会改变坐标轴方向)
  • 当同时有位移及其他属性的时候,位移要放到最前面
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值