CSS 在容器内旋转元素

2023-11-21

如果你看一下:http://jsfiddle.net/KA4dz/

在此演示中,您可以清楚地看到内部元素由于旋转而到达外部元素的外部。请求是缩小内部元素(同时保持纵横比和中心位置),使其适合其容器。

用例是用户可以手动旋转这样的内部元件,同时确保其保持在外部元件内。 (因此,简单地缩小尺寸直到适合眼睛并不是解决方案)。

这是我的数学技能明显缺乏的场景。在这个阶段发布我所尝试的内容不会有多大作用。有人能指出我正确的方向吗?

Thanks!

另一项要求是,内部元素仅在需要时缩小,但在不需要时绝不会缩小(需要时意味着保留外部元素的边界)

要保存点击:

.outer{
    border: 1px solid black;
    width: 100px;
    height: 50px;
    margin: 100px;
}

.inner{
    background: blue;
    width: 100px;
    height: 50px;

    transform: rotate(-40deg);
    -webkit-transform: rotate(-40deg);
}

<div class="outer">
    <div class="inner">
    </div>
</div>        

这很有趣。这是我的解决方案:http://jsfiddle.net/fletiv/jrHTe/

JavaScript 看起来像这样:

(function () {

var setRotator = (function () {

    var setRotation,
        setScale,
        offsetAngle,
        originalHeight,
        originalFactor;

    setRotation = function (degrees, scale, element) {
        element.style.webkitTransform = 'rotate(' + degrees + 'deg) scale(' + scale + ')';
        element.style.transform = 'rotate(' + degrees + 'deg) scale(' + scale + ')';
    };

    getScale = function (degrees) {

        var radians = degrees * Math.PI / 180,
            sum;

        if (degrees < 90) {
            sum = radians - offsetAngle;
        } else if (degrees < 180) {
            sum = radians + offsetAngle;
        } else if (degrees < 270) {
            sum = radians - offsetAngle;
        } else {
            sum = radians + offsetAngle;
        }

        return (originalHeight / Math.cos(sum)) / originalFactor;
    };

    return function (inner) {

        offsetAngle = Math.atan(inner.offsetWidth / inner.offsetHeight);
        originalHeight = inner.offsetHeight;
        originalFactor = Math.sqrt(Math.pow(inner.offsetHeight, 2) + Math.pow(inner.offsetWidth, 2));

        return {

            rotate: function (degrees) {
                setRotation (degrees, getScale(degrees), inner);
            }
        }
    };

}());

var outer = document.getElementById('outer'),
    inner = document.getElementById('inner'),
    rotator = setRotator(inner),
    degrees = 0;

window.setInterval(function () {
    degrees += 1;

    if (degrees >= 360) {
        degrees = 0;
    }

    rotator.rotate(degrees);
}, 50);

}());

编辑:这是一张试图解释我的代码逻辑的图像。 :)

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS 在容器内旋转元素 的相关文章

  • 使用 Node.js 构建网站的最佳实践

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想知道如何使用 Node js 从头开始 开发一个网站 我明白我怎么能possibly
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • 滚动时的 CSS 背景模糊

    我有固定的背景图像 滚动时我希望图像变得模糊 我知道如何在 css 中进行模糊 但在特定的滚动位置进行 这是一个例子 https medium com good music f160ba9e6c52 https medium com goo
  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • JavaScript RegEx:不同的结果:使用字符串和使用正则表达式“文字”构建模式?

    使用 RegExp 文字与字符串之间有什么区别吗 http jsfiddle net yMMrk http jsfiddle net yMMrk String prototype lastIndexOf function pattern p
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • Google Maps API (v3) 添加/更新标记

    编辑 它现在可以工作 但如果用户不允许或没有基于位置的服务 则不会加载 请参阅 jsfiddle 示例接受的答案评论 我已经浏览了一些教程和问题 但我无法安静地理解正在发生的事情 或者在这种情况下 没有发生 当用户单击链接时 我正在加载地图
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • $resource.query 返回分割字符串(字符数组)而不是字符串

    我正在使用像下面这样的 Angular resource angular module app factory data function resource var Con resource api data update method P
  • Webpack 4:如何使用 LESS 获取 CSS 源映射?

    多年来我一直在尝试让 CSS 源映射在 webpack 中工作 但没有成功 我不确定链条中哪里出了问题 我希望有人能指出我正确的方向 这是发生的事情 行号是错误的 实际上文件名也是错误的 main less只是包含一堆 import也就是说
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • 如何从 json 文件创建模型? (ExtJS)

    这是我想使用 json 文件创建的模型 Ext define Users extend Ext data Model fields name user id type int name user name type string 为了根据服

随机推荐

  • UPDATE 查询后的 PDO rowCount() 可以显示“未进行更改”和“不存在的行”之间的区别吗?

    我正在使用 PDO 进行更新查询 我想知道我的更新查询是否没有更改数据库中的任何内容 因为 传递的值与数据库中已有的值相同 我知道rowCount 在这种情况下返回0 我尝试更新的行在数据库中不存在 据我所知 rowCount 在这种情况下
  • 如何知道窗口小部件在视口中是否可见?

    我有一个视图 其中包含Scaffold和一个单一的ListView在其主体中 列表的每个子项都是一个不同的小部件 代表视图的各个 部分 部分范围从简单的 TextView 到排列Columns and Rows 我想展示一个Floating
  • Sqlalchemy:从Scrapy项目动态创建表

    我正在使用 sqlalchemy 1 1 和 scrapy 我目前正在使用管道通过 sqlalchemy 将提取的数据存储在 sqllite 表中 我想动态创建一个表来容纳正在抓取的项目 我的静态管道元素如下所示 class SQLlite
  • NSXMLParserDelegate 编译问题 - iPhone SDK 30. vs 4.0

    我的头文件定义如下 import
  • 自动释放何时真正导致 Cocoa Touch 中的释放?

    我明白你需要小心autorelease在 iOS 上 我有一个返回对象的方法allocs 这是调用者需要的 所以在这种情况下 据我所知 我需要发送autorelease返回之前被调用者中的对象 这很好 但是一旦控制权返回到手机 即在处理了我
  • 如何使用 spring boot 和 Liquibase 变更集 yaml 文件访问系统属性

    使用 Liquibase 管理数据库架构更改的 Spring Boot Java 应用程序是通过指定其运行环境的参数 例如 dev int 启动的 有相应的属性文件 例如 dev properties int properties 它们定义
  • 签入时 Visual Studio 崩溃

    当我每次尝试签入挂起的更改时 我的 Visual Studio 2013 都会崩溃 我该如何解决 崩溃日志 System UnauthorizedAccessException Package SccProviderPackage fail
  • OpenCV 结构化边缘检测器的模型文件

    OpenCV实现结构化边缘检测基于基于随机森林的方法概述 用于快速边缘检测的结构化森林 2013 作者 P Doll r 和 C Zitnick 作者已发表Matlab 的实现还有一个用于Python 两者还包含基于 BSDS500 数据集
  • i18n 用于选择框

    我有一个名为 Role 的模型 我正在表单中使用下面的助手 有没有办法将 name 属性的值更改为另一种语言 语言环境 de yml de role admin something editor something something 在模
  • 请求的纹理大小 [0x0] 无效。当我在浏览器中加载图像时出错

    调用预测函数时浏览器中的 Tensorflow js 错误 我正在使用 Node js 来运行 web 应用程序 这是我包含的脚本 我正在 Chrome 中运行 Node js 但无法解决该错误 该项目有 7 个类作为输出 是形状为 1x7
  • 在 C# 中使用 REF 和 OUT 关键字进行按引用传递与按值传递

    到目前为止我的理解如下 价值传递 按值传递意味着传递参数的副本 对该副本的更改不会更改原始版本 通过参考 通过引用传递意味着传递对原始内容的引用 对引用的更改会影响原始引用 参考关键字 REF 告诉编译器该对象在进入函数之前已初始化 REF
  • 如何处理列表推导式中的异常?

    我在 Python 中有一些列表理解 其中每次迭代都可能抛出异常 例如 如果我有 eggs 1 3 0 3 2 1 egg for egg in eggs 我会得到一个ZeroDivisionError第三个元素例外 如何处理此异常并继续执
  • HTML5 Colspan - 替代方案[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我在 HTML 的 td 标签之一中使用 colspan 我不想在 HTML 中使用 c
  • 带有外部 .jar 的 Java 命令行

    我使用 jar 开发一个项目来重用代码 所以我有一个名为 TOOLS jar 的 jar 并且我在文件 HelloWorld java 中开发了一个简单的应用程序 该应用程序从 TOOLS jar 引用我的包 TOOLS 我用这个命令行编译
  • python 输入 UnicodeDecodeError:

    蟒蛇3 x gt gt gt a input hope gt gt gt a hope gt gt gt b input h pe gt gt gt b h pe gt gt gt c input start typing h delete
  • 全局作用域与全局命名空间

    我看到了这两个短语的用法 全局范围和全局名称空间 它们之间有什么区别 在 C 中 每个名称都有其作用域 超出该作用域就不存在 范围可以通过多种方式定义 它可以通过以下方式定义名称空间 功能 classes并且只是 因此 全局或其他命名空间定
  • 旋转分类散景图的小刻度标签

    我正在尝试轮换专业 和短轴在 Bokeh 的多类别图中 类似于对主要刻度标签所做的操作 here并在 matplotlib 中完成here 当有多个类别时 它们的标签 文本经常会混淆在一起 从中汲取一些灵感有关分类数据的 Bokeh 文档结
  • 将字符串转换为整数[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 String 转换为 Int Hi 我在将字符串转换为整数时遇到以下问题 string str line Substring 0 1 This picks an integer at offs
  • 上传文件时出现错误“无法处理部件,因为未提供多部件配置”[重复]

    这个问题在这里已经有答案了 我试图通过 JSP 文件中的表单上传文件 但收到此错误 Servlet 已经具有 MultipartConfig 表示法 我正在使用 servlet 3 0 和 apache tomcat 8 错误信息 java
  • CSS 在容器内旋转元素

    如果你看一下 http jsfiddle net KA4dz 在此演示中 您可以清楚地看到内部元素由于旋转而到达外部元素的外部 请求是缩小内部元素 同时保持纵横比和中心位置 使其适合其容器 用例是用户可以手动旋转这样的内部元件 同时确保其保