Javascript 事件通过 sass mixin 改变样式

标签 javascript jquery events sass width

我正在开发一个带有侧边栏的网站。当您按下按钮时,侧边栏从左侧进入并将主体推开。

侧边栏的宽度为 280px,最大宽度为 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));
  }

这在台式机和平板电脑上效果很好,但在移动设备上这会导致问题。向右移动主体 280 像素,但如果 80% 低于 280 像素,则会留下空间..

我怎样才能做到当你打开侧边栏时它会将主体移动到侧边栏的宽度?当然你可以这样做:

.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 事件?

感谢您的阅读!

最佳答案

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

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

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

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

关于Javascript 事件通过 sass mixin 改变样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30055731/

相关文章:

javascript - 我无法访问 DOM

javascript - jQuery:如果单击复选框,则为 div 动画

javascript - 如何从 iframe 中获取当前 iframe 偏移量?

javascript - 引用Javascript中的对象调用函数

javascript - React Hooks 的奇怪 'id' 和复选框行为

jquery - 如何在bootstrap中添加动态div?

python - QtWebkit 和 hasPendingEvents() 始终为 True

javascript - 如何使用 polymer 将 HTML 注入(inject)模板

javascript - 如何在本地存储中设置每次点击记录并获取所有这些记录列表?

javascript - 在谷歌地图中显示点击标记的弹出信息