Jep*_*erg 9 ruby-on-rails right-to-left sprockets asset-pipeline
我想启用从右到左的语言环境以及从左到右,但我只想维护一组样式表.
这个想法是调用application-rtl.css
将服务于rtl转换版本application.css
(使用r2).
此功能有两个用例:
到目前为止,我已经设法实现了一个RTLConverter,使我可以将所有转换为RTL的样式表服务,而不必触及它们:
配置/初始化/ rtl_converter.rb:
require "r2"
require "tilt"
class RTLConverter < Tilt::Template
def prepare; end
def evaluate(context, locals, &block)
R2.r2 @data
end
end
Rails.application.assets.register_preprocessor 'text/css', RTLConverter
Run Code Online (Sandbox Code Playgroud)
您还可以将其实现为sprockets的引擎,以仅转换具有.rtl扩展名的文件:
Rails.application.assets.register_engine 'rtl', RTLConverter
Run Code Online (Sandbox Code Playgroud)
如何挂钩资产管道以便:
笔记:
转换器不能与sass引擎一起使用,但似乎工作得很少.它已被应用于基于twitter-bootstrap的网站,并且像魅力一样工作.
转换器尚未在生产中进行测试.
如果我能找到解决这个问题的合适解决方案,我打算创建并维护一个gem并将其交还给社区.
我的目标是直接使用CSS来处理LTR-RTL差异.CSS可以为您处理这项工作.如果你将CSS定义为LTR,那么,基于CSS类,你可以覆盖你想要的东西.
<body class="RTL">
RTL
"的CSS类来定义默认的所有异常.一个简短的例子.原始"默认"样式:
body { direction: ltr; }
.sidebar { width: 200px; float: right; margin-left: 30px }
Run Code Online (Sandbox Code Playgroud)
然后,在css中稍后覆盖相关的样式:
body.rtl { direction: rtl; }
.rtl .sidebar { float: right; margin-right: 30px; }
/*remember to 'reset' all defaults for example: */
.rtl .sidebar { margin-left: 0; }
Run Code Online (Sandbox Code Playgroud)
使用sass,您有一个共同的位置来定义标准变量,例如上面示例中的margin.你的旅费可能会改变.但对我来说,这听起来比搞乱资产管道更简单.
不幸的是,其他答案都没有真正提出我正在寻找的解决方案,因此在深入研究问题之后,我能够想出一个简单的宝石,可以根据文件名翻转样式表。
因此,通过包含该 gem 并提供名称后附加“-flipped”的样式表版本,我现在可以在开发和生产中提供自动翻转的版本。
在 rubygems.org 上找到 gem:stylesheet_flipper
在 gihub 上找到使用说明:monibuds/stylesheet_flipper
归档时间: |
|
查看次数: |
1341 次 |
最近记录: |