javascript - ng 类 $window.innerWidth

标签 javascript html css angularjs angularjs-directive

如果屏幕宽度大于 x(即 1200),我正在尝试找到一种向元素添加类的解决方案。

ng-class="{ large: isLarge() }"

$scope.isLarge = function () {
  return ($window.innerWidth >= 1200);
}

这不起作用,甚至不会添加类。它还需要在浏览器调整大小时更新。考虑指令可能是更好的选择。

编辑:我不想听到这是否应该完成,只要它可以完成。

最佳答案

可以做到这一点。我制作了一个指令示例来完成此操作。为了更简单的 JSFiddle 演示,我在此示例中选择了 500 的宽度。查看以下...

<div class="item" resizer></div>

.item {
    background-color: tomato;
    height: 100px;
    width: 100px;
}

.large {
    background-color: dodgerblue;
}

app.directive('resizer', ['$window', function ($window) {
    return {
        restrict: 'A',
        link: function (scope, elem, attrs) {            
            angular.element($window).on('resize', function () {
                $window.innerWidth > 500 ? 
                    elem.addClass('large') : elem.removeClass('large')
            });
        }
    }
}]);

JSFiddle Example

此外,如果您希望利用 ng-class 解决方案,请尝试以下操作...

<div class="item" resizer ng-class="{ 'large': isLarge }"></div>

app.directive('resizer', ['$window', function ($window) {
    return {
        restrict: 'A',
        link: function (scope, elem, attrs) {      
            angular.element($window).on('resize', function () {
                scope.$apply(function(){
                    scope.isLarge = $window.innerWidth > 500 ? true : false;
                })
            });
        }
    }
}]);

JSFiddle Example - 使用 ng-class

关于javascript - ng 类 $window.innerWidth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604270/

相关文章:

javascript - Angular 6 中的 (keydown) 事件的多键绑定(bind)

javascript - 将 SPAN 替换为 INPUT 时,JQuery 自动完成功能不起作用

html - 如何通过最大宽度限制 div,但在较小时保持内部元素的宽度?

jQuery dragtable 插件打破了可滚动的 HTML 表格布局

javascript - 从链接打开本地文件夹

javascript - 使用 Backbone 和 Backbone.Marionette 进行复杂路由

javascript - 结合 ng-repeat 和 ng-click

javascript - 如何让 JavaScript 函数应用的类一直运行到窗口关闭(网页设计)

html - Flexbox、Flex Wrap 和 Safari

javascript - 提前解决/拒绝后我需要返回吗?