前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【CSS3】CSS3 2D 转换 - rotate 旋转 ④ ( 旋转案例 )

【CSS3】CSS3 2D 转换 - rotate 旋转 ④ ( 旋转案例 )

作者头像
韩曙亮
发布2023-10-11 20:20:50
发布2023-10-11 20:20:50
34400
代码可运行
举报
运行总次数:0
代码可运行
一、需求分析

给定一个 盒子模型 ,

鼠标移动上去后 , 通过旋转的方式 , 出现一个 新的 盒子模型 布局 ,

旋转上去后 , 新的布局会覆盖住之前的 盒子模型 ;

实现原理如下 :

在绘制的时候 , 预先绘制了两个 盒子模型 ,

一个是 空的 盒子模型 , 在 空盒子模型 中 , 绘制了一个 子盒子 ,

子盒子 是 有实际元素的 盒子模型 ;

有 实际内容 的 子盒子模型 , 初始状态就 沿着 左下角为中心点 , 顺时针旋转了 90 度 ;

如果 父容器 设置了

代码语言:javascript
代码运行次数:0
运行
复制
            /* 隐藏边界之外的元素 
               旋转前的伪类 div::before 元素需要先隐藏 */
            overflow: hidden;

样式 , 超出 父容器 边界的内容 , 就会自动隐藏 , 表现为下图的样式 :

二、代码示例


实际的盒子模型内容 , 是通过 div::before 伪元素添加进去的 ;

div::before 伪元素 是行内元素 无法设置大小 , 需要 将其设置为行内块元素 才能设置宽高 ;

代码语言:javascript
代码运行次数:0
运行
复制
            /* before 元素是行内元素 无法设置大小 
               将其设置为行内块元素 才能设置宽高 */
            display: block;

为 实际内容 设置 旋转 相关的属性 : 旋转中心点 , 默认的初始角度 , 旋转的动画持续时间 ;

代码语言:javascript
代码运行次数:0
运行
复制
            /* 设置以左下角为中心旋转 */
            transform-origin: left bottom;
            /* 绕 左下角 旋转 180 度 */
            transform: rotate(90deg);
            /* 设置过渡动画 */
            transition: all 1s;

代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS3 2D 转换 - rotate 旋转</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            /* 上下 100 像素外边距, 居中对齐 */
            margin: 100px auto;
            /* 设置 1 像素边框 */
            border: 1px solid pink;
            /* 隐藏边界之外的元素 
               旋转前的伪类 div::before 元素需要先隐藏 */
            /* overflow: hidden; */
        }
        
        div::before {
            content: "2D旋转";
            /* before 元素是行内元素 无法设置大小 
               将其设置为行内块元素 才能设置宽高 */
            display: block;
            width: 100%;
            height: 100%;
            /* 设置背景颜色 */
            background-color: cyan;
            /* 设置以左下角为中心旋转 */
            transform-origin: left bottom;
            /* 绕 左下角 旋转 180 度 */
            transform: rotate(90deg);
            /* 设置过渡动画 */
            transition: all 1s;
        }
        /* 设置 鼠标 移动到 div::before 伪元素 上的效果 */
        
        div:hover::before {
            /* 鼠标移动上去后  */
            transform: rotate(0deg);
        }
    </style>
</head>

<body>
    <div>
    </div>
</body>

</html>

三、运行效果


初始状态为 :

鼠标移动到 盒子 模型上 , 旋转到 一半时的样式 :

旋转完成后的样式 :

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、需求分析
  • 二、代码示例
  • 三、运行效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档