马黑黑 发表于 2025-11-4 12:10

css:scale、rotate和translate属性演示

本帖最后由 马黑黑 于 2025-11-4 22:38 编辑 <br /><br /><div class="codebox" data-prev="1">
&lt;style&gt;
<txt-green>/** scale、rotate、translate 已经可以从 transform 的函数变为属性,skew 保留原样,</txt-green>
<txt-green>    本示例演示元素使用 transform: rotate 做关键帧动画之后依然可以独立使用相关属性</txt-green>
<txt-green>*/</txt-green>
        @import 'https://638183.freep.cn/638183/web/tz/tz.e.css';

        .son {
                position: absolute;
                width: 200px;
                height: 160px;
                border: 1px solid gray;
                display: grid;
                place-items: center;
        }

        .son:nth-child(2) {
                animation: rot 8s linear infinite;
                <txt-green>/* transform: scale(2); 这个无效,与上句冲突,transform: translate/skew 同理 */</txt-green>
                scale: 2; <txt-green>/* scale: 2 1.5 也是合法的*/</txt-green>
                translate: 200px -100px;
                <txt-green>/* skew: 45deg; 这个无效,目前没有 skew 属性 */</txt-green>
                transition: rotate 1s;
        }
       
        .son:nth-child(2):hover {
                <txt-green>/* 鼠标指针滑入时还可以使用 rotate 属性 */</txt-green>
                rotate: 1 -0.5 0.5 180deg;
        }
       
        @keyframes rot {
                from { transform: rotate(0deg); }
                to { transform: rotate(360deg); }
        }
&lt;/style&gt;

&lt;div id="pa" class="pa"&gt;
        &lt;div class="son"&gt;son No.1 - 200 * 160&lt;br&gt;&lt;br&gt;I'm very quiet.&lt;/div&gt;
        &lt;div class="son"&gt;son No.2 - scale: 2&lt;br&gt;&lt;br&gt;&lt;br&gt;and rotating&lt;/div&gt;
&lt;/div&gt;
</div>

<script type="module">
        import linenumber from 'https://638183.freep.cn/638183/web/js/linenumber.js?v0';
        linenumber();
</script>

马黑黑 发表于 2025-11-4 12:32

本帖最后由 马黑黑 于 2025-11-4 12:33 编辑

示例安排两个矩形div子元素,由 CSS 类选择器 .son 制定样式,宽高本来是一致的。

矩形一严格按照 .son 的样式渲染,保持原始尺寸和位置,作为参照;

矩形二执行关键帧动画 rot,并使用 scale 属性整体放大两倍、用 translate 属性右移200px、上移100px,矩形二还通过伪类选择器 :hover 创建指针滑过时的样式——用 rotate 属性令其旋转。

矩形二所使用的 scale、rotate、translate 属性,已经不是寄生在 transform 转换属性下的函数,它们和 transform 一样是CSS属性,平级(副科级享正科级待遇),可独当一面(独立使用),理论上与 transform 此前或此后使用的同名函数不相冲突,但应关切逻辑上的关系(例如都旋转时怎么转、都平移时会不会叠加等等)。

附:CSS属性与函数

下面示例的伪代码,红色的是CSS属性,红紫色的是CSS函数:

.box {
    margin: auto;
    background: url('图片地址');
    transform: rotate(60deg);
   rotate: 120deg;
}

和我们平时在CSS里设置某个选择器的 width 和 height 一样,上面代码中的最后一个属性 rotate,它是属性;而它上方那行中的 rotate,是函数,函数后面会有一对小括号 () 用以装载函数所需要的各种数据(参数)。

杨帆 发表于 2025-11-4 16:36

对CSS Transform 新增独立属性scale、translate、rotate

马老师与时俱进、化难为易、深入浅出地进行了直观演示

并给与简明、通俗、到位的讲解 ,由衷感谢{:4_180:}

樵歌 发表于 2025-11-4 19:46

这个有趣得紧!

樵歌 发表于 2025-11-4 19:47

研究辛苦了{:4_176:}

马黑黑 发表于 2025-11-4 20:24

樵歌 发表于 2025-11-4 19:47
研究辛苦了

学习

马黑黑 发表于 2025-11-4 20:24

樵歌 发表于 2025-11-4 19:46
这个有趣得紧!

css3还在迭代

马黑黑 发表于 2025-11-4 20:25

杨帆 发表于 2025-11-4 16:36
对CSS Transform 新增独立属性scale、translate、rotate

马老师与时俱进、化难为易、深入浅出地进行了直 ...

{:4_191:}

小辣椒 发表于 2025-11-4 22:01

预览看了效果,黑黑真的无所不能{:4_199:}

马黑黑 发表于 2025-11-4 22:35

小辣椒 发表于 2025-11-4 22:01
预览看了效果,黑黑真的无所不能

果酱果酱

红影 发表于 2025-11-5 11:36

也就是因为封装里设置了 transform 转换属性下的函数,所以再设置是有问题的,但是可以直接使用css允许的 scale、rotate、translate 属性,这样就不冲突了。是这样理解吧{:4_187:}

红影 发表于 2025-11-5 11:37

我评分用光了,没法加分了,不好意思,等攒出来再加了 {:4_173:}

马黑黑 发表于 2025-11-5 11:54

红影 发表于 2025-11-5 11:37
我评分用光了,没法加分了,不好意思,等攒出来再加了

这个没关系,不用介意的

马黑黑 发表于 2025-11-5 11:55

红影 发表于 2025-11-5 11:36
也就是因为封装里设置了 transform 转换属性下的函数,所以再设置是有问题的,但是可以直接使用css允许的 s ...

是的
页: [1]
查看完整版本: css:scale、rotate和translate属性演示