javascript - 使用javascript减去css左值
问题描述
我不得不寻找问题的答案,但找不到解决方案。我找到了一些解决方案,但他们使用的是 px,而不是更难做的事情。我想减去 50% 的 CSS 左值百分比。
JS:
document.addEventListener("keydown", function (e) {
if(e.keyCode == 37){
console.log("left")
$('.fa-circle').css('left','-=3%' )
}
}
CSS:
.fa-circle{
position: absolute;
left: 50%;
top: 50%;
font-size: 30px;
transition: all .3s;
}
对于每个向下键(左箭头),应减去圆圈的左侧位置。
例如,第一次点击 = 左:47%;第二次点击=左:44;第三次点击 = 左:41%...
解决方案
您必须解析出当前值,然后在将其放回之前减去 3:
document.addEventListener("keydown", function (e) {
if(e.keyCode == 37){
console.log("left")
const currentLeft = parseInt($('.fa-circle').css('left'));
$('.fa-circle').css('left', (currentLeft - 3) + '%' );
}
}
编辑:正如评论中的 OP 所指出的,这不能按预期工作 - 因为 jQuery.css('left')
以像素为单位返回值,即使它被明确设置为百分比。jQuery 不提供执行此操作的内置方法 - 参见例如。在这里。
这些答案的一个建议是手动计算百分比,但乘以const currentLeft = 100*(parseInt($('.fa-circle').css('left'))/($("body").width()));
. 在实践中,您可以用"body"
选择器替换最近定位的父元素。
推荐阅读
- java - 线程中运行的方法抛出 java.lang.IllegalMonitorStateException
- plsql - xmltable Oracle 错误:ORA-00905:缺少关键字
- python - ModuleNotFoundError:JENKINS 中没有名为请求的模块
- javascript - 从属性名称和值的数组构建嵌套对象数组
- java - 将秒转换为相对时间
- asp.net - 如何告诉 swagger 特定响应除了状态码之外没有响应类型?
- reactjs - Next.js 页面无法路由
- mocking - 开玩笑:模拟 const 没有定义
- django - 错误 403 CSRF cookie 未设置。axios 向 django 服务器发送请求
- cuda - 是什么让 cuLaunchKernel 因 CUDA_ERROR_INVALID_HANDLE 而失败?