改变旋转中心点,邦邦!

改变旋转中心点

.big{
            width: 300px;
            height: 300px;
            border: 3px solid black;
            border-radius: 50%;
            margin: 100px auto;
            position: relative;
}
.second{
            width: 2px;
            height: 110px;
            background: green;
            position: absolute;
            left: 50%;
            top: 50%;
            margin-left: -1px;
            margin-top: -110px;
            transform-origin: left bottom;
            animation: miao 60s steps(360) infinite;
        }

怎么把second的中心点改到这里啊

img

如果设置transform-origin: left bottom;的话,只会到这里

img


邦邦!

可以支持百分比吧 你试试50% 0%这种

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 2D转换之旋转与缩放中的 2D转换中心点transform-origin 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    我们可以设置元素转换的中心点。

    transform-origin: x y;
    
    1. 注意后面的参数 x和 y 用空格隔开
    2. x y 默认转换的中心点是元素的中心点(50% 50%)
    3. 还可以给x y设置像素或者方位名词(top bottom left right center)
    

    命令演示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            div{
                overflow: hidden;
                width: 200px;
                height: 200px;
                border: 1px solid palegreen;
                margin: 10px;
                float: left;
            }
    
            div::before {
                content: "马腾";
                display: block;
                width: 100%;
                height: 100%;   
                background-color: palegreen;
                transform:rotate(180deg);
                transform-origin: left bottom;
                transition: all 0.4s;
            }
            /* 鼠标经过div里面的before 复原 */
            div:hover::before{
                transform: rotate(0deg);
            }
        </style>
    </head>
    <body>
        <div></div>
        <div></div>
        <div></div>
    </body>
    </html>
    

    网页显示图:

    在这里插入图片描述

    做一个旋转中心点案例:

    命令演示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            div{
                overflow: hidden;
                width: 200px;
                height: 200px;
                border: 1px solid palegreen;
                margin: 10px;
                float: left;
            }
    
            div::before {
                content: "马腾";
                display: block;
                width: 100%;
                height: 100%;   
                background-color: palegreen;
                transform:rotate(180deg);
                transform-origin: left bottom;
                transition: all 0.4s;
            }
            /* 鼠标经过div里面的before 复原 */
            div:hover::before{
                transform: rotate(0deg);
            }
        </style>
    </head>
    <body>
        <div></div>
        <div></div>
        <div></div>
    </body>
    </html>
    

    网页显示图:

    在这里插入图片描述

  • 以下回答来自chatgpt:

    解答:

    可以使用transform-origin属性来改变一个元素的旋转中心点。通过设置transform-origin的x、y参数为"second",即可将元素的旋转中心点设置为"second"。代码如下:

    .element {
        width: 100px;
        height: 100px;
        background-color: #ccc;
        transform-origin: second;
    }
    

    然而,在CSS中并没有"second"这个关键字,这个关键字只是为了描述旋转中心点的位置。如果要真正将旋转中心点设置为"second",需要通过计算和设置实际的x和y值。

    具体来说,可以通过JavaScript来获取到"second"这个元素相对于父元素的位置,然后将这个位置设置为transform-origin的x和y。示例如下:

    <div class="parent">
      <div class="element">Hello, world!</div>
      <div class="second"></div>
    </div>
    
    <script>
    var element = document.querySelector('.element');
    var second = document.querySelector('.second');
    var rect = second.getBoundingClientRect(); // 获取second元素相对于视口的位置
    
    // 计算second元素相对于父元素的位置
    var x = rect.left - element.offsetLeft;
    var y = rect.top - element.offsetTop;
    
    // 将x、y设置为transform-origin的值
    element.style.transformOrigin = x + 'px ' + y + 'px';
    </script>
    

    注意:上述代码只是示例,需要根据实际情况进行修改。此外,还需要注意浏览器兼容性问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^