使用sass mixin的Javascript事件更改样式

时间:2015-05-05 14:25:24

标签: javascript jquery events sass width

我正在使用侧边栏工作的网站。当您按下按钮时,侧边栏从左侧进入并推开主体。

侧边栏的宽度为280像素,最大宽度为80%(适用于移动设备)。目前我的javascript看起来像这样:

  // Left menu moves in the view
  $('.left-menu').toggleClass('in-view');
  // Moves the body to the right 280px
  $('.content-wrapper').toggleClass('to-right');

  // to-right in css
  .to-right {
      @include translate(280px, 0);
  }

  // Mixin
  @mixin transform($transforms) {
   -moz-transform: $transforms;
   -o-transform: $transforms;
   -ms-transform: $transforms;
   -webkit-transform: $transforms;
   transform: $transforms;
  }

  @mixin translate($x,
  $y) {
      @include transform(translate($x, $y));
  }

这适用于台式机和平板电脑,但在移动设备上会导致问题。向右移动身体280px但如果80%低于280px则会留下空间..

如何制作它以便在打开侧边栏时它可以使身体完​​全移动侧边栏的宽度?当然你可以这样做:

.css('-moz-transform', 'sidebar_width')
.css('-o-transform', 'sidebar_width')
.css('-ms-transform', 'sidebar_width')
.css('-webkit-transform', 'sidebar_width')
.css('transform', 'sidebar_width')

但我真的不认为这是正确的做法..

有没有更好的方法来解决这个问题?某种Javascript自定义mixin事件?

感谢阅读!

1 个答案:

答案 0 :(得分:1)

是的,通常最好将css和javascript分开。媒体查询是根据设备属性(如屏幕大小)提供不同样式的有用方法。

.in-view {
    width: 280px;
    max-width: 80%;

    @media only screen and (max-device-width: 350px) {
        max-width: 100%;
    }
}

350px是屏幕宽度,此时80%= 280px。