”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在没有 JavaScript 的情况下实现 CSS 中 Div 元素的居中扩展?

如何在没有 JavaScript 的情况下实现 CSS 中 Div 元素的居中扩展?

发布于2024-11-15
浏览:732

How to Achieve Centered Expansion of a Div Element in CSS Without JavaScript?

使用 CSS 从中心扩展 Div

在 CSS 转换领域,人们可能会想象 div 元素从其中心轴优雅地扩展,而不是从左上角和左上角展开的默认行为。然而,如果没有 JavaScript,这种期望的效果就会带来挑战。

解决方案:操纵边距

实现这种居中扩展的关键在于使用特定的转换 div 的边距公式。该技术涉及计算目标尺寸和初始尺寸之间的差值并将结果除以二。然后,该值将在转换过程中用作负边距调整。

自定义选项:

根据所需的行为,可以使用三个主要选项:

选项 1:保留空间

此选项会在其周围保留的空间内展开 div,而周围的元素不受影响。

#square {
    -webkit-transition: width 1s, height 1s, margin 1s;
    transition: width 1s, height 1s, margin 1s;
}
#square:hover {
    margin: 55px; /* calculated as initial margin - ((width change and height change)/2) */
}

选项 2:覆盖周围元素

通过设置负边距,此选项会导致 div 扩展到附近的元素,重叠其内容。

#square {
    -webkit-transition: width 1s, height 1s, margin 1s;
    transition: width 1s, height 1s, margin 1s;
}
#square:hover {
    margin: -50px; /* calculated as 0 - ((width change and height change)/2) */
}

选项 3:移动周围元素

此变体会移动 div 并将后续元素沿着文档流向下移动。

#square {
    -webkit-transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
    transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
}
#square:hover {
    top: -50px; /* calculated as initial top - ((new height - initial height)/2) */
    left: -50px; /* calculated as initial left - ((new width - initial width)/2) */
    margin-right: -50px;
    margin-bottom: -50px;
}

注意: 这些计算适用于方形 div。对于非方形元素,边距调整的计算可能会略有不同,具体取决于所需的比例调整大小。

最新教程 更多>
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-15
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-15
  • 如何在不创建实例的情况下访问Go结构体的类型?
    如何在不创建实例的情况下访问Go结构体的类型?
    在不创建物理结构的情况下访问 Reflect.Type在 Go 中,动态加载问题的解决方案需要访问结构的类型,而无需物理创建它们。虽然现有的解决方案要求在类型注册之前创建结构体并清零,但存在一种更有效的方法。人们可以利用 reflect.TypeOf((*Struct)(nil)).Elem()手术...
    编程 发布于2024-11-15
  • Java中如何高效地将整数转换为字节数组?
    Java中如何高效地将整数转换为字节数组?
    Java 中整数到字节数组的高效转换将整数转换为字节数组可用于多种目的,例如网络传输或数据存储。有多种方法可以实现此转换。ByteBuffer 类:一种有效的方法是使用 ByteBuffer 类。 ByteBuffer 是一个存储二进制数据并提供各种操作来操纵它的缓冲区。使用 ByteBuffer ...
    编程 发布于2024-11-15
  • 如何在 Go 中按多个字段对结构体切片进行排序?
    如何在 Go 中按多个字段对结构体切片进行排序?
    按多个字段对切片对象进行排序按多个条件排序考虑以下 Parent 和 Child 结构:type Parent struct { id string children []Child } type Child struct { id string }假设我们有一个...
    编程 发布于2024-11-15
  • Qt 线程与 Python 线程:我应该在 PyQt 应用程序中使用哪个?
    Qt 线程与 Python 线程:我应该在 PyQt 应用程序中使用哪个?
    PyQt 应用程序中的线程:Qt 线程与 Python 线程寻求使用 PyQt 创建响应式 GUI 应用程序的开发人员经常遇到执行的挑战长时间运行的任务而不影响 UI 的功能。一种解决方案是使用单独的线程来完成这些任务。这就提出了是使用 Qt 线程还是原生 Python 线程模块的问题。Qt 线程提...
    编程 发布于2024-11-15
  • 为什么我的PHP提交按钮没有触发回显和表格显示?
    为什么我的PHP提交按钮没有触发回显和表格显示?
    PHP 提交按钮困境:不可用的回显和表格您的代码打算在单击“提交”按钮时显示回显和表格在 PHP 表单上。但是,您遇到了这些元素仍然隐藏的问题。这是因为您使用 if(isset($_POST['submit'])) 来控制这些元素的显示,但提交按钮缺少 name 属性。解决方案:提供...
    编程 发布于2024-11-15
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-15
  • 为什么我的 @font-face EOT 字体无法在 Internet Explorer 中通过 HTTPS 加载?
    为什么我的 @font-face EOT 字体无法在 Internet Explorer 中通过 HTTPS 加载?
    @font-face EOT 无法通过 HTTPS 加载:解决方案遇到 @font-face EOT 文件在 Internet 中无法通过 HTTPS 加载的问题在 Explorer 版本 7、8 和 9 中,用户发现无论 HTTPS 上包含的 HTML 页面的托管状态如何,问题仍然存在。经过实验,...
    编程 发布于2024-11-15
  • 为什么通过 Makefile 运行 Go 程序时出现“权限被拒绝”错误?
    为什么通过 Makefile 运行 Go 程序时出现“权限被拒绝”错误?
    权限被拒绝:调查“go run”和 Makefile 调用之间的差异通过 Makefile 运行 Go 程序时遇到权限被拒绝错误可能会令人困惑。此问题源于 GNU make 或其 gnulib 组件中的错误。根本原因在于系统 PATH 中存在一个名为“go”的目录,该目录位于实际 Go 可执行文件所...
    编程 发布于2024-11-15
  • 可以使用 CSS 设计 SVG 背景图像吗?
    可以使用 CSS 设计 SVG 背景图像吗?
    您可以使用 CSS 设计 SVG 背景图像吗?作为 SVG 爱好者,您精通将 SVG 用作背景图像。然而,仍然存在一个持续存在的问题:您是否也可以在同一个文件中使用 CSS 设计 SVG 样式?遗憾的是,答案是不。用作背景图像的 SVG 被视为与 CSS 样式表隔离的单个实体。 CSS 文件中的样式...
    编程 发布于2024-11-15
  • 能否结合使用 LIKE 和 IN 来实现更强大的 SQL 查询?
    能否结合使用 LIKE 和 IN 来实现更强大的 SQL 查询?
    结合LIKE和IN进行高级SQL查询在SQL中,LIKE运算符经常用于模式匹配,而IN运算符允许我们将一个值与一系列特定值进行匹配。虽然这些运算符有不同的用途,但可以将它们组合起来创建更强大的查询。让我们考虑以下场景:您有一个表,其中有一列名为“company_id”,并且您想要选择其中包含该列的所...
    编程 发布于2024-11-15
  • 为什么PHP中逗号可以用于回显但不能用于返回?
    为什么PHP中逗号可以用于回显但不能用于返回?
    为什么用逗号回显有效,而用逗号返回却不起作用?在 PHP 中使用 echo 和 return 连接值时,有使用句号和逗号之间的细微差别。具体来说:Echo:允许以逗号分隔的多个表达式回显到输出。返回:只能返回一个单个表达式。使用句点句点 (.) 运算符将字符串或其他数据类型连接成单个字符串。例如:e...
    编程 发布于2024-11-15
  • 如何将 Django 数据库从 SQLite 迁移到 MySQL:分步指南
    如何将 Django 数据库从 SQLite 迁移到 MySQL:分步指南
    将 Django DB 从 SQLite 迁移到 MySQL将数据库从 SQLite 迁移到 MySQL 可能是一项艰巨的任务。由于可用的工具和脚本过多,因此很难确定最可靠和最直接的方法。一位经验丰富的 Django 开发人员建议了一个经受时间考验的解决方案。他们建议执行以下步骤:转储现有的 SQL...
    编程 发布于2024-11-15
  • 如何确保 JavaScript 中准确的整数验证:哪种方法最好?
    如何确保 JavaScript 中准确的整数验证:哪种方法最好?
    如何在 JavaScript 中验证整数输入无论是需要检查整数以确保数据一致性,还是需要向用户提示准确的错误消息,JavaScript 提供了多种验证方法整数输入。一种常见的方法是使用 parseInt() 函数。但是,如果您想要处理可能被解析为整数的字符串等场景,仅此方法可能不够。稳健的整数验证函...
    编程 发布于2024-11-15

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3