angularjs 页面自适应高度的方法


Posted in Javascript onJanuary 17, 2018

需求

在angularjs构建的业务系统中,通过ui-view路由实现页面跳转,初始化进入系统后,右侧内容区域需要自适应浏览器高度。

实现方案

  1. 在ui-view所在的Div添加directive,directive中通过element.css初始化计算div的高度,动态更新div高度
  2. directive监听($$watch)angular的$digest,实时获取body高度,动态赋值model或element.css改变

方案1:添加directive和element.css自适应高度

1.创建directive

define([ "app" ], function(app) {
  app.directive('autoHeight',function ($window) {
    return {
      restrict : 'A',
      scope : {},
      link : function($scope, element, attrs) {
        var winowHeight = $window.innerHeight; //获取窗口高度
        var headerHeight = 80;
        var footerHeight = 20;
        element.css('min-height',
            (winowHeight - headerHeight - footerHeight) + 'px');
      }
    };
  });
  return app;
});

2.div元素添加directive

<div ui-view auto-height></div>

3.效果图

原界面:右侧区域的高度为自适应内容,导致下方存在黑色的背景色

angularjs 页面自适应高度的方法

调整后:右侧区域的高度自适应浏览器

angularjs 页面自适应高度的方法

方案2:$watch监听body高度,赋值改变高度

1.创建resize directive

var app = angular.module('miniapp', []);

function AppController($scope) {
  /* Logic goes here */
}

app.directive('resize', function ($window) {
  return function (scope, element) {
    var w = angular.element($window);
    scope.getWindowDimensions = function () {
      return { 'h': w.height(), 'w': w.width() };
    };
    scope.$watch(scope.getWindowDimensions, function (newValue, oldValue) {
      scope.windowHeight = newValue.h;
      scope.windowWidth = newValue.w;

      scope.style = function () {
        return { 
          'height': (newValue.h - 100) + 'px',
          'width': (newValue.w - 100) + 'px' 
        };
      };

    }, true);

    w.bind('resize', function () {
      scope.$apply();
    });
  }
})

2.在div元素上增加resize directive

<div ng-app="miniapp" ng-controller="AppController" ng-style="style()" resize>
  window.height: {{windowHeight}} <br />
  window.width: {{windowWidth}} <br />
</div>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 剧场版 你必须知道的javascript
May 27 Javascript
jQuery学习笔记之jQuery的DOM操作
Dec 22 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 Javascript
window.open打开页面居中显示的示例代码
Dec 27 Javascript
window.location.href的用法(动态输出跳转)
Aug 09 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
May 26 Javascript
AngularJS 模块详解及简单实例
Jul 28 Javascript
Centos7 中 Node.js安装简单方法
Nov 02 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
Dec 13 Javascript
微信小程序点餐系统开发常见问题汇总
Aug 06 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 Javascript
VueJs监听window.resize方法示例
Jan 17 #Javascript
详解AngularJS之$window窗口对象
Jan 17 #Javascript
React-native桥接Android原生开发详解
Jan 17 #Javascript
vue自定义指令directive实例详解
Jan 17 #Javascript
移动web开发之touch事件实例详解
Jan 17 #Javascript
详解layui弹窗父子窗口之间传参数的方法
Jan 16 #Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
Jan 16 #Javascript
You might like
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
详解Puppeteer 入门教程
2018/05/09 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
node 版本切换的实现
2020/02/02 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
python绘图库Matplotlib的安装
2014/07/03 Python
Mac 上切换Python多版本
2017/06/17 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
Python使用type动态创建类操作示例
2020/02/29 Python
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
五一家具促销方案
2014/01/10 职场文书
本科生求职信
2014/06/17 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
东京审判观后感
2015/06/01 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL
python APScheduler执行定时任务介绍
2022/04/19 Python