如何使用AngularJS根据屏幕尺寸添加类
How to add a class depending on screen dimensions with AngularJS
如何根据当前的屏幕尺寸为元素添加类?
现在我正在使用 Bootstrap 的 hidden-xs
和 visible-xs
来处理它,但这需要在 DOM 中使用重复的代码和元素。
更新:覆盖 Bootstrap 的预定义类对我来说不是一个选择。如果我错了,请纠正我,但这只是一个黑客,在我看来是不好的做法。
您可以为此目的创建指令,如下所示,但使用 CSS 媒体查询似乎是更好的解决方案。
请看这里以及 http://jsbin.com/mukec/1/edit?html,css,js,output
var app = angular.module('app', []);
app.controller('homeCtrl', function($scope) {
});
app.directive('top', function($window) {
return {
restrict: 'AE',
link: function(s, e, a) {
var body = angular.element(document.getElementsByTagName("body"));
$window.onresize = function(event) {
var clientWidth = document.documentElement.clientWidth;
if (clientWidth < 768)
{
e.removeClass('navbar-default')
e.addClass('navbar-fixed-top')
body.addClass('top50')
} else {
e.removeClass('navbar-fixed-top');
e.addClass('navbar-default');
body.removeClass('top50')
}
}
}
}
})
.navbar-fixed-top {
background-color: red
}
.navbar-default {
background-color: green
}
.top50 {
padding-top: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<body ng-app="app">
<div class="navbar" top>
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Brand</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a>
</li>
<li><a href="#">Link</a>
</li>
<li><a href="#">More</a>
</li>
<li><a href="#">Options</a>
</li>
</ul>
</div>
</div>
<h1>SCROLL CONTENT</h1>
<img src="" height="1500px" />
</body>
可能
不是最佳做法,但您可以编写一个函数,该函数采用屏幕大小然后应用该类
function screenLayout() {
var clientWidth = document.documentElement.clientWidth;
}
var classtoadd = angular.element('navbar');
if (clientWidth > 1024) {
classtoadd.addClass('largeScreen')
} else {
classtoadd.addClass('otherScreen')
}
也可以直接做JavaScript或JQuery
相关文章:
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- 为基于Canvas和jQuery的游戏添加一个结束屏幕
- 检测用户是否点击了添加到主屏幕
- 检测网络应用程序是否已在安卓系统的主屏幕上添加书签
- window.open()没有'无法在添加到主屏幕的移动Safari web应用程序中工作
- 如何在Phonegap中进行AJAX调用时添加加载屏幕
- 当屏幕尺寸较小时,可使用Javascript向移动菜单添加链接.不再有效
- 如何使用AngularJS根据屏幕尺寸添加类
- 谷歌网络应用程序添加到主屏幕
- jQuery - 根据屏幕宽度将像素添加到高度
- 根据屏幕宽度添加/删除 CSS ID
- 检测网站(不是webapp!)是否已添加到主屏幕
- 在 DOM 中添加新元素后,保留元素屏幕位置
- iOS:“已添加到主屏幕”网站无法刷新
- “预加载”苹果触摸预组合图标,然后再添加到主屏幕
- Ajax在您“;将网站添加到主屏幕”;在iPhone上
- 当字段为空时,在屏幕中间添加一个弹出框
- 当html元素在屏幕上可见时,在该元素上添加类
- Canvas将箭头键控件添加到ipad和其他设备的屏幕上
- 如何在HTML5/Javascript/Canvas手机游戏中添加屏幕虚拟键盘