CSS的2D转换

1.转换transform

可实现元素的位移,旋转,缩放等效果

  • 移动:translate

  • 旋转:rotate

  • 缩放:scale

2D 转换之移动 translate

2D移动是2D转换里面的一种功能,可以改变元素在页面中的位置,类似定位

语法:

transform:translate(x,y);或者分开写
transform:translateX(n);
transform:translateY(n);

重点:

  1. 定义 2D 转换中的移动,沿着X和Y轴移动元素

  2. translate最大的优点:不会影响到其他元素的位置

  3. translate中的百分比单位是相对于自身元素(也就是自身盒子的宽度)的translate:(50%,50%);

  4. 对行内标签没有效果(注意)

显示盒子水平垂直居中:

position:absolute   //子绝父相
translate:(50%,50%)  //直接复制

2D 转换之旋转 rotate

2D旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转。

语法:

transform:rotate(度数)

重点:

  1. rotate里面跟度数,单位是deg 比如rotate(45deg)

  2. 角度为正时,顺时针,负时,为逆时针

  3. 默认旋转的中心点是元素的中心点

2D 转换中心点 transform-origin

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

1.语法

transform-origin:xy;

2.重点

  1. 注意后面的参数 x和y用空格隔开

  2. xy默认转换的中心点是元素的中心点(50% 50%)

  3. 还可以给xy设置 像素或者方位名词(top bottom left right center)

当使用CSS2D变换制作动态网页时钟时,我们通常利用CSS的`transform`属性以及JavaScript来更新动画效果。以下是基本步骤: 1. **HTML结构**:首先创建一个简单的HTML结构,包含一个`<div>`元素作为时钟容器。 ```html <div id="clock"></div> ``` 2. **CSS基础样式**:设置初始样式,包括圆角、大小和定位等,并定义一些关键帧动画的基础样式,如旋转角度和时间格式。 ```css #clock { width: 200px; height: 200px; border-radius: 50%; background-color: #f8f9fa; position: relative; text-align: center; display: flex; justify-content: center; align-items: center; font-size: 64px; } ``` 3. **CSS动画**:使用CSS的关键帧动画(@keyframes),定义时针、分针和秒针的移动路径。例如: ```css @keyframes rotateClock { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } #hour-hand, #minute-hand, #second-hand { position: absolute; width: 6px; animation: rotateClock 1s steps(360, end) infinite, moveHands ease-in-out 1s infinite; } ``` 4. **JavaScript交互**:通过JavaScript获取当前时间并计算时针、分针和秒针的角度。然后,每隔一段时间改变它们的CSS `transform-origin` 和 `transform-angle` 来模拟移动。 ```javascript function updateClock() { // 获取当前时间 var now = new Date(); var hour = now.getHours(); // 小于12小时制 var minute = now.getMinutes(); var second = now.getSeconds(); // 设置指针角度 document.getElementById('hour-hand').style.transform = `rotate(${((hour % 12) * 30 + minute / 2) * 6}deg)`; document.getElementById('minute-hand').style.transform = `rotate(${minute * 6}deg)`; document.getElementById('second-hand').style.transform = `rotate(${second * 6}deg)`; // 每隔一秒钟再次更新 setTimeout(updateClock, 1000); } updateClock(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值