javascript - 为什么 CSS 转换(通过 Javascript)不能使用多个函数
问题描述
非常简单的问题,我有一个使用变换来移动/缩放/旋转的相机,我希望这一切都在 GPU 上完成(所以,使用变换)。使用一次转换 ( translate()
),它可以正常工作并且没有问题。但是,如果我添加其他 2,它会突然变成一个空字符串:
namespace `game.modules`(
class Camera{
constructor(tag){
this.tag = tag;
this.x = 0;
this.y = 0;
this.rotation = 0;
this.scaleX = 1;
this.scaleY = 1;
this.animations = []
}
lookAt(object){
this.x=object.x;
this.y=object.y;
}
onDraw(){
this.setTagFromData();
}
setTagFromData(){
var x = -(this.x-100);
var y = -(this.y-60);
this.tag.style.transform = `translate3d(${x}px, ${y}px, 0px)`
console.log(this.tag.style.transform)
}
}
)
这将输出预期的字符串 ( translate3d(50px, 50px, 0px)
)。但是,像这样添加其他属性:
namespace `game.modules`(
class Camera{
constructor(tag){
this.tag = tag;
this.x = 0;
this.y = 0;
this.rotation = 0;
this.scaleX = 1;
this.scaleY = 1;
this.animations = []
}
lookAt(object){
this.x=object.x;
this.y=object.y;
}
onDraw(){
this.setTagFromData();
}
setTagFromData(){
var x = -(this.x-100);
var y = -(this.y-60);
this.tag.style.transform = `translate3d(${x}px, ${y}px, 0px) rotate(${this.ang}deg) scale(${this.scaleX}, ${this.scaleY})`
console.log(this.tag.style.transform)
}
}
)
记录一个空字符串,甚至不记录translate3d()
. 为什么会这样?
解决方案
正如您在评论中确认的那样:
由于this.ang
未定义,生成的字符串中包含单词undefined
,因此它是无效的 CSS 表达式。众所周知,CSS 会忽略无效表达式,因此整个字符串都会被丢弃。
推荐阅读
- eloquent - 从视图中的where子句获取关系数据
- python - BeautifulSoup 错误:列表索引超出范围
- php - 带有 Ajax 表单提交的 Laravel 5 `Internal Server Error` (500)
- android - 从覆盖函数获取数据
- c# - C# FileStream.Read 不读取最后一个块
- php - php图像和文本上传不起作用
- matlab - 使用 cellfun 对集群进行回归时出错
- windows - 构建规则中的 Bazel 环境变量
- html - Safari 11.3.1 状态栏白底白字
- mysql - SQL 查询 - 从以逗号分隔的一列中获取数据并按行显示