账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    设置transformOrigin会触发transition过渡吗?
    41
    0

    问题

    给一个元素设置了transitionDuration(比如2s)和transformOrigin,然后需要2s后给元素设置transform属性,transformOrigin才会生效
    
    

    相关代码

    .div {
      width: 200px;
      height: 200px;
      background-image: linear-gradient(red, green);
    }
    

    <div class="div"></div>
    <button>click</button>

    var btn = document.querySelector('button')
    var div = document.querySelector('.div')
    btn.onclick = function (params) {
      div.style.transformOrigin = '800px 200px'
      div.style.transitionPproperty = "transform"
      div.style.transitionDuration = "2s"
      div.offsetWidth // 这里我是添加了元素过渡时间和转换基点后,再刷新了浏览器的flush队列
      div.style.transform = 'scale(0)'
    }
    

    问题描述

    如上设置了过渡时间和转换基点后,再设置缩放,这时候是以默认元素中心进行缩放,并没有按照我设置的原点(800px, 200px)进行缩放

    相关代码

    var btn = document.querySelector('button')
    var div = document.querySelector('.div')
    btn.onclick = function (params) {
      div.style.transformOrigin = '800px 200px'
      div.offsetWidth // 这里我是先设置转换基点,然后再设置过渡时间,也可以
      div.style.transitionPproperty = "transform"
      div.style.transitionDuration = "2s"
     
      div.style.transform = 'scale(0)'
      
      // setTimeout(() => {
      //    div.style.transform = 'scale(0)'
      // }, 2000)
    }
    

    结果描述

    如果我等待2s后,即我设置的过渡时间结束后再对元素进行缩放,这时候元素就会以设置的原点(800px, 200px)进行缩放。
    为什么会这样呢,难道transformOrigin

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 李豫 普通会员 1楼

      是的,设置transformOrigin会影响元素的过渡过渡。

      transformOrigin属性可以用来定义元素的坐标系,它的值可以是元素内部的x、y坐标,也可以是元素外部的x、y坐标。在CSS中,transformOrigin属性默认是相对于其父元素的坐标系设置的。

      如果设置为元素内部的坐标系(如0, 0),那么元素的变换将根据这个坐标系进行,不会根据元素外部的坐标系进行。这就是为什么我们在设置transformOrigin属性时,可以设置为绝对坐标系(如“translateX(-10px) translateY(-10px)”)。

      如果设置为元素外部的坐标系(如“translateX(10px) translateY(10px)”),那么元素的变换将根据这个坐标系进行,这将导致元素的形状改变,可能会触发过渡过渡。

      所以,如果你想要设置元素的变换过渡,那么需要确保你的元素的坐标系是相对于其父元素的,或者设置为元素外部的坐标系。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部