ruby-on-rails - Rails 3 中的移动风格切换,辅助方法与媒体查询

标签 ruby-on-rails css mobile

我正在研究为移动应用设计 Rails 应用样式的方法。

这个想法很普遍,为移动浏览器使用一组样式,为传统浏览器使用另一组样式。

据我所知,在 Rails 中有两种基本方法可以做到这一点:

使用辅助方法检测用户代理,然后执行切换。

应用程序 Controller .rb

 private  
 def mobile?  
   request.user_agent =~ /Mobile|webOS/  
 end 

 helper_method :mobile?

应用程序.html.erb

<% unless mobile? %>
 <%= stylesheet_link_tag "core" %>
<%else%>
  <%= stylesheet_link_tag "mobile" %>
  <meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
<% end%>

或者在样式表中使用媒体查询

body {
// basic styles
}

@media all and (max-width: 600px) {
 body {
 // extra styles for mobile
 }
}

@media all and (min-width: 600px) {
 body {
  // extra styles for desktop
 }
}

我的问题是权衡取舍是什么?一种方法通常更好还是两种方法都有很好的用例。

提前致谢

最佳答案

这取决于。

在我的 personal website我使用媒体查询来更改移动浏览器的样式。这在这种情况下效果很好,因为该页面的图像很少,而且大部分样式更改只是为了使网站垂直并缩小字体大小。

然而不幸的是,not every mobile phone understands媒体查询。此外,根据您对媒体查询的处理方式,您可能是 sacrificing performance by using media queries.例如,缩小大图像的显示或隐藏内容会对网络受限手机的性能产生负面影响。

对于复杂的网站,您可能还想呈现完全不同的网站以自定义移动体验。使用“助手”方法允许您自定义的不仅仅是样式表。这也允许移动用户通过传递在您的 mobile? 方法中考虑的附加参数来访问他们手机上的“正常”网站。

总结:如果简单的话,媒体查询是自定义显示的一种简单方法,但是移动体验可能会在整体上有所不同,而不仅仅是微小的显示调整。尝试使用 CSS 来自定义整个体验并不是一个好主意。

关于ruby-on-rails - Rails 3 中的移动风格切换,辅助方法与媒体查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783084/

相关文章:

ruby-on-rails - 如何编写 Rails 4 测试以使用 omniauth-google-oauth2 gem 创建 session ?

javascript - javascript 中用于切换元素显示的 ON/OFF 事件监听器

javascript - 如何使用 onclick 处理程序在 jQuery UI 中添加选项卡?

html - 如何修复 : Text overflowing DIV in CSS/HTML?

html - 我可以在我的移动网站中使用 html5 吗?

ruby-on-rails - 如何在 Rails 中更改 redis amazon elasticache 的 maxmemory-policy?

ruby-on-rails - 为什么我的字符串在使用 .to_i 而不是整数时转换为 Fixnum?

javascript - 如何对本身就是 URL 的 URL 参数进行 URL 编码?

html - 按钮不起作用

iphone - 您将如何根据运营商重定向移动网页?