css插入原点,使用H5动画演示CSS3变换原点(transform-origin)工作原理

CSS

语言:

CSSSCSS

确定

:root {

--x: .5;

--y: .5;

--side: 30vmin;

--duration: 1500ms;

--easing: ease-in-out;

}

.shape {

animation: rotate 1000ms infinite linear;

transition: transform-origin var(--duration) var(--easing);

transform-origin: calc(var(--x) * 100%) calc(var(--y) * 100%);

width: var(--side);

height: var(--side);

background: linear-gradient(315deg, hsl(248, 40%, 50%) 10%, transparent 10%, transparent), linear-gradient(225deg, hsl(348, 40%, 50%) 10%, transparent 10%, transparent), linear-gradient(135deg, hsl(48, 40%, 50%) 10%, transparent 10%, transparent), linear-gradient(45deg, hsl(168, 40%, 50%) 10%, hsl(168, 70%, 50%) 10%, hsl(168, 70%, 50%));

position: relative;

will-change: transform, transform-origin;

}

.point {

--point: 1vmin;

background: black;

width: var(--point);

height: var(--point);

border-radius: 50%;

position: absolute;

top: calc(var(--point) * -.5);

left: calc(var(--point) * -.5);

transform: translate(calc(var(--x) * var(--side)), calc(var(--y) * var(--side)));

transition: transform var(--duration) var(--easing);

will-change: transform;

opacity: .6;

}

.origin {

width: var(--side);

height: var(--side);

position: absolute;

z-index: 1;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

border: 1px dashed hsl(233, 70%, 50%);

background: linear-gradient(315deg, hsla(248, 40%, 50%, .2) 10%, transparent 10%, transparent), linear-gradient(225deg, hsla(348, 40%, 50%, .2) 10%, transparent 10%, transparent), linear-gradient(135deg, hsla(48, 40%, 50%, .2) 10%, transparent 10%, transparent), linear-gradient(45deg, hsla(168, 40%, 50%, .2) 10%, transparent 10%, transparent);

}

@keyframes rotate {

100% {

transform: rotate(360deg)

}

}

p {

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, var(--side));

text-align: center;

z-index: 10;

}

span {

display: block;

}

body {

min-height: 100vh;

display: flex;

justify-content: center;

align-items: center;

overflow: hidden;

background: radial-gradient(circle, hsl(198, 70%, 96%), hsl(198, 70%, 90%));

font-family: system-ui, -apple-system, 'Segoe UI', sans-serif;

}

*,

*::before,

*::after {

box-sizing: border-box;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值