新手问题 rails 怎么实现根据分辨率切换 css 文件这样的响应式?

posebear1990 · 2015年04月20日 · 最后由 posebear1990 回复于 2015年04月20日 · 1992 次阅读

新手问题,求各位前辈解答: 不使用用库,因为所有 scss 文件最后都会被 application.scss 打包成一个 css 文件,所以不知道怎么实现最初静态页面中的

<link rel="stylesheet" media="(min-width: 992px)" href="css/nav.css"> <!-- 大于992px,加载正常css -->
<link rel="stylesheet" media="(max-width: 992px)" href="css/nav_m.css"> <!-- 小于992px,加载移动css -->

这样的响应式效果。

分开打包。

myApp.config(function($routeProvider, $cssProvider) {

  angular.extend($cssProvider.defaults, {
    breakpoints: {
      mobile: '(max-width: 480px)',
      tablet: '(min-width: 768px) and (max-width: 1024px)',
      desktop: '(min-width: 1224px)'
    }
  });

  $routeProvider
    .when('/my-page', {
      templateUrl: 'my-page/my-page.html',
      css: [
        {
          href: 'my-page/my-page.mobile.css',
          breakpoint: 'mobile'
        }, {
          href: 'my-page/my-page.tablet.css',
          breakpoint: 'tablet'
        }, {
          href: 'my-page/my-page.desktop.css',
          breakpoint: 'desktop'
        }
      ]
    });

});

https://github.com/door3/angular-css 供你参考

#1 楼 @Rei 大神说什么意思,真的没听明白。

#2 楼 @winnie 思路很不错,但是这意味着我要再引入一个 angular 库?js 部分打算用 jquery 写。

因为所有 scss 文件最后都会被 application.scss 打包成一个 css 文件

config.assets.precompile += ['nav.css', 'nav_m.css']
<%= stylesheet_link_tag "nav", media: "(min-width: 992px)" %>
<%= stylesheet_link_tag "nav_m", media: "(max-width: 992px)" %>

http://guides.ruby-china.org/asset_pipeline.html

#5 楼 @Rei 嗯,解决了,谢谢。^_^

你可以用 media query 把所有的 nav_m 内容包裹起来再正常打包。按惯例写,不要 hack。

#7 楼 @billy 这个方法开始也想到了,只不过突然处女座情节突然犯了。话说这是 media query 的惯例吗?

@posebear1990 这是 CSS 的惯例,无区别加载。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号