javascript - 作为 Slim 中元素属性的一部分的内联 Javascript 变量

标签 javascript css ruby-on-rails custom-data-attribute slim-lang

背景:

我正在使用 skrollr作为使用 Slim 进行标记的 Rails 元素的一部分的插件。 该插件需要滚动动画的起点和终点的数据属性。这是一个例子:

#canvas-1 data-0="top:-80px;" data-1180="top:0px;"

该插件基本上会将top css 从data-0(滚动位置0px)动画化到data-1180(滚动位置1180px) .

问题:

页面上的一些需要动画的元素位于具有不同高度的容器下方。因此,data-xxxx 可以根据前面容器中的内容而有所不同。我有一个 javascript 函数,它计算出所有前面元素的高度并返回一个变量,该变量表示 data-xxxx 应该是什么。理论上 Slim 中的输出应该是这样的:

#logo.unit data-#{ "<script>logoPosition</script>" }="top:5px" data-#{ "<script>logoPosition + 200</script>" }="top:-8px;"

小错误。无论我如何尝试添加内联 javascript 属性 - 它都会出错。我目前的解决方案是所有 javascript(完全取代了属性)。但是,我想知道执行内联 javascript 生成属性的正确方法。

可能吗?

最佳答案

如果我对您的理解正确,您可以单独使用 skrollr 来完成此操作。阅读关于相对模式的文档 https://github.com/Prinzhorn/skrollr#absolute-vs-relative-mode

像这样(你懂的):

#logo.unit data-top="top:5px" data-200-top="top:-8px;"

使用 data-anchor-target="#logo.unit",您甚至可以让其他元素的动画取决于 Logo 的位置。

关于javascript - 作为 Slim 中元素属性的一部分的内联 Javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915347/

相关文章:

css - 在 Rails 4 中更改字体不起作用

javascript - JS按数组中的 "x"排序对象

javascript - 将值从对象数组复制到 AngularJS 中的输入字段

javascript - jQuery 验证插件多个复选框

CSS 框阴影不起作用

ruby-on-rails - 如何在 Haml 中撤消 Rails 模板生成?

ruby-on-rails - Rails 功能测试 assert_select 在 AJAX 发布后找不到任何内容

javascript - 在 Redux 中构建 store

javascript - 在单击第二个按钮之前不会添加 .css 类

css - 如何使用 React 更改选定表格行的背景颜色