花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 1069|回复: 69

球球自己绕圈圈- CSS之transform-origin简介

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2021-12-31 12:31 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    球球自己绕圈圈(CSS之transform-origin简介)| 马黑黑

    CSS3 的 transform-origin(下称origin)用于设置对象变换时的基点位置。这里要特别注意,origin 设置的不是对象自身的基点,而是对象做 transform 变换如旋转、扭曲、移位、缩放等变化时参照的基点,亦即对象在做transform运动时是围绕 origin 设置的基点而不是围绕自身的中心点。

    二维基点以坐标值表示,即 xy,x 表示横向坐标,y 表示纵向坐标。对象变化时总要参照 xy 值进行,我们以 transform 的旋转(rotate)为例加以说明:如果没有 origin 的参与,则对象旋转任意角度时,它是围绕自己的中心而进行旋转,此时对象的中心就是对象旋转的基点,换言之,怎么旋转它,它的中心点都不会改变;但当 origin 参与进来情况就大不相同,对象旋转以 origin 定义的新基点运行,相当于对象的中心点发生了变化,从而对象自身的位置也就跟着发生变化。通俗地讲,对象发生 transform 旋转变化时在有 origin 参与的情况下,它做旋转动作时已经不再它原来的位置,它的新位置依据 origin 定义的 xy 基点值重新进行计算,将对象放置到 xy 处进行 rotate(旋转))。

    origin 设置对象动作的基点,但却并不能令对象真实改变自己的位置,仅当对象进行 transform 变换时对象的位置才会变更。之前已介绍,CSS3 提供的 transform 变形方法有旋转(rotate)、扭曲(crew)、移位(translate)和缩放(scale),这些动作发生时 origin 所做设定才会有效。

    语法:transform-origin:x y

    其中,x 和 y 分别表示横向和纵向坐标值,可以用数值+像素表达(如300px),也可以用百分比、保留词等表示。百分比和保留词表示法对应如下:

    0% = left(top) - 亦即,用 0% 等同于用 left 或 top,下同
    50% = center
    100% = right(bottom)

    为便于控制 xy 值,像素值和百分比、保留词配套使用更为便捷。

    例子:

    ① transform-origin:100px center;
    ② transform-origin:center -200px;

    例①令对象以坐标{100px,0px}为对象(元素)动作发生时的基点,例②以坐标{50%,-200px}为对象(元素)动作发生时的基点。

    依此原理,我们定义一个小球从0个角度 rotate 为360个角度,变化过程以 origin 设定的基点进行,这样小球发生旋转时就会不停地变换位置,从而达成旋转着绕一大圈的效果,加入循环变换,则可令小球不停运转。请看——

    实例:小球自己绕圈圈

    <style type="text/css">

    .fDiv {
            margin:0 auto;
            width:600px;
            height:600px;
            border:1px solid green;
    }

    .ball {
            width:50px;
            height:50px;
            top:275px;
            border-radius:50%;
            background:coral;
            position:relative; /* 重要:基于子层与父层的位置关系 */
            transform-origin:300px center;
            animation:rotate 10s linear infinite;
    }

    @keyframes rotate {
            to { transform:rotate(360deg); }/* 省略from语句,用其缺省值0deg */
    }

    </style>

    <div class="fDiv">
            <div class="ball"></div>
    </div>

    这里,我们依然设置了一个父层 div,目的是便于观察小球的运动边界,它不是必须的。ball我们设定了长度、高度及原始top值,原始top值是小球基于父层 div 的出发点。

    评分

    参与人数 4威望 +160 金钱 +320 经验 +160 收起 理由
    小辣椒 + 50 + 100 + 50 赞一个!
    加林森 + 30 + 60 + 30 赞一个!
    大猫咪 + 30 + 60 + 30 赞一个!
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2021-12-31 12:32 | 显示全部楼层

    演示效果(注意:球是旋转的):
     

    A
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2021-12-31 13:25 | 显示全部楼层
    transform-origin 理解起来有点困难。这里再给一些理解提示:

    物体(对象)做 transform 变化时,没有引入 transform-origin 之前,是在原位置做 transform 动作;引入 transform-origin 之后,由 origin 来决定物体做动作时的位置。

    二楼演示的效果使用的是一楼提供的实例代码。本例中,我们用 @keyframes 令小球做转一圈即360度(rotate)的运动,我们在 .ball 选择器里引入了 transform-origin 属性,赋予 x 坐标值 300px,垂直位置为 center(相当于50%,说的是以小球自身的中心 y 值参与变化)。小球初始位置在{0px, 275px} 处(阅读完本楼解释后思考一下为什么是0px 275px),从这里开始以 300px 的 x 坐标值做 rotate 变化,从而不是原地转圈圈;这个300px 相当于小球绕圈的半径,其直径刚好与外框的高宽相等。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2021-12-31 13:57 | 显示全部楼层
    这个好,儿子长大成人了,可以不用管父容器,自己独飞了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-30 19:55
  • 签到天数: 577 天

    [LV.9]以坛为家II

    253

    主题

    2万

    回帖

    4万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪春风拂面心曲飞扬活泼开朗女儿情怀花好月圆心香一瓣飞龙在天王者至尊天籁妙音共看流星幸福快乐喜乐安康指尖上的流年花潮版主

    发表于 2021-12-31 14:00 | 显示全部楼层
    必须学习   老黑下午好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2021-12-31 14:07 | 显示全部楼层
    马黑黑 发表于 2021-12-31 13:25
    transform-origin 理解起来有点困难。这里再给一些理解提示:

    物体(对象)做 transform 变化时,没有引 ...

    用275是因为需要用半径300减去小球半径25
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2021-12-31 14:12 | 显示全部楼层
    小球初始位置在{0px, 275px} 处。
    ——看到只设置了275 没有设置0啊,这个缺省就是0么?不设置可以么?

    这个300px 相当于小球绕圈的半径
    ——为什么是300,不需要扣除25么?
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2021-12-31 18:04 | 显示全部楼层
    红影 发表于 2021-12-31 14:12
    小球初始位置在{0px, 275px} 处。
    ——看到只设置了275 没有设置0啊,这个缺省就是0么?不设置可以么?

    ...

    缺省就是0,可以设置
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2021-12-31 18:05 | 显示全部楼层
    红影 发表于 2021-12-31 14:07
    用275是因为需要用半径300减去小球半径25

    这位童鞋回答正确,加10分
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2021-12-31 18:06 | 显示全部楼层
    红影 发表于 2021-12-31 14:12
    小球初始位置在{0px, 275px} 处。
    ——看到只设置了275 没有设置0啊,这个缺省就是0么?不设置可以么?

    ...

    不能只考虑自身。外框是小球的活动范围,它高宽都设定为600px
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2021-12-31 18:11 | 显示全部楼层
    红影 发表于 2021-12-31 13:57
    这个好,儿子长大成人了,可以不用管父容器,自己独飞了

    嗯嗯。再注意观察:小球自转一周正好是公转转一圈。为什么?

    因为,小球做自转运动的时候是在不同的点做的。这些点是 origin 设定的。事实上,origin 设定了一个公转半径,虽然公转半径并不是它设定的——它只设定对象自转的基点。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2021-12-31 18:12 | 显示全部楼层
    大猫咪 发表于 2021-12-31 14:00
    必须学习   老黑下午好

    蟹蟹
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-6-15 10:31
  • 签到天数: 525 天

    [LV.9]以坛为家II

    1383

    主题

    3万

    回帖

    10万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀青草情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀男儿情怀鹰傲苍穹花好月圆飞龙在天王者至尊大将风范天籁妙音共看流星风雨同行幸福快乐喜乐安康指尖上的流年花潮版主

    发表于 2021-12-31 18:48 | 显示全部楼层
    来学习了
     
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2021-12-31 21:06 | 显示全部楼层

    这个不好理解
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-6-15 10:31
  • 签到天数: 525 天

    [LV.9]以坛为家II

    1383

    主题

    3万

    回帖

    10万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀青草情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀男儿情怀鹰傲苍穹花好月圆飞龙在天王者至尊大将风范天籁妙音共看流星风雨同行幸福快乐喜乐安康指尖上的流年花潮版主

    发表于 2021-12-31 21:11 | 显示全部楼层

    我多看几次应该会理解的。谢谢老黑!
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    49

    主题

    4663

    回帖

    1万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪春风拂面飞龙在天共看流星指尖上的流年

    发表于 2021-12-31 21:23 | 显示全部楼层
    想学~~学不会~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2021-12-31 21:28 | 显示全部楼层

    不一定都学
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    49

    主题

    4663

    回帖

    1万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪春风拂面飞龙在天共看流星指尖上的流年

    发表于 2022-1-1 21:44 | 显示全部楼层

    哎~~~看不懂~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-1-1 22:04 | 显示全部楼层

    没关系的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    49

    主题

    4663

    回帖

    1万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪春风拂面飞龙在天共看流星指尖上的流年

    发表于 2022-1-1 22:51 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-16 15:38 , Processed in 0.095173 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表