javascript - 使用 css 中的变换或其他一些高性能方式从圆创建长圆形
问题描述
我正在尝试使用圆形创建一个长圆形,transform: scaleX(2)
但它会导致椭圆。我通过增加宽度得到了 obround,但在我的应用程序中过渡变得很卡。有没有一种高效的方式来进行这种过渡。我在此处附加了一个沙盒链接以显示该行为。
解决方案
是的,但不是单个元素,因为您需要对形状的主体(您可以将其视为矩形)和两个圆圈进行不同的转换。
$(document).ready(() => {
$('button').click(() => {
$('.shape').toggleClass('expanded');
});
});
.shape {
position: relative;
margin-left: 200px;
}
.circle {
position: absolute;
top: 0;
left: -12px;
background: red;
width: 24px;
height: 24px;
border-radius: 24px;
background: blue;
transition: transform .5s;
}
.rect {
width: 1px;
height: 24px;
background: blue;
transition: transform .5s;
}
.shape.expanded .circle.left {
transform: translateX(-32px);
}
.shape.expanded .circle.right {
transform: translateX(32px);
}
.shape.expanded .rect {
transform: scaleX(64);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="shape">
<div class="circle left"></div>
<div class="rect"></div>
<div class="circle right"></div>
</div>
<button>toggle</button>
推荐阅读
- alpine - 如何在不更改启动时安装的软件包列表的情况下安装软件包?
- sapb1 - SAP B1 的 CCC:同步插件时,错误:解析 ard 文件失败
- c# - 验证消息仅适用于所有非特定型号
- css - Django collectstatic 在部署时生成与开发时不同的文件
- jmeter - 并发线程组和吞吐量整形计时器
- request - 为什么 npm install -g firebase-tools 请求已被弃用
- c# - 如何在不使用 iText7 和 C# 覆盖内容的情况下向现有 pdf 添加文本?
- android - 为什么我可以在 Android 主线程以外的线程中运行 UI 操作?
- django - django多数据库切换登录问题
- sas - 文字包含不匹配的引号