我正在玩Scala.js,ScalaTags和ScalaCSS。
我了解如何使用ScalaCSS创建内联StyleSheet,以及如何将CSS规则应用于ScalaTags元素。我正在使用ScalaTags在服务器中生成基本的基本HTML页面,并且要访问我的CSS,我会看到以下内容:
html(
UiPageCssInline.render[TypedTag[String]],
head(
...
在该HTML中定义的ScalaTags元素中,我可以轻松地应用CSS规则,例如:
div(UiPageCssInline.logoStyle)(
...
但是,我也使用Scala.js(即js.dom)在页面加载时修改HTML。而且我不知道如何在那里类似地应用CSS规则。我收到编译错误,例如:
type mismatch;
[error] found : scalacss.StyleA
[error] required: scalatags.JsDom.Modifier
[error] (which expands to) scalatags.generic.Modifier[org.scalajs.dom.raw.Element]
[error] val focusedNodeInfoBox = div(UiPageCssInline.focusedNodeInfoStyle)().render
[error] ^
如何将内联CSS应用于动态创建的元素?这应该工作吗(也许我只是搞砸了SBT依赖项)?我可以通过这种方式使用ScalaCSS生成的内联规则吗?
如果不是,如果我不想构建和导出必须显式加载的单独样式表,该怎么办? (还是人们这样做的方式?)
最佳答案
您需要此导入
import scalacss.ScalatagsCss._ //this will do all magic using implicits
如果您未添加ext-scalatags模块,则还必须添加该模块
libraryDependencies += "com.github.japgolly.scalacss" %%% "ext-scalatags" % "0.2.0"
之后
div(UiPageCssInline.logoStyle)
会编译好:)
官方文件:
https://japgolly.github.io/scalacss/book/ext/scalatags.html