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 相关文章推荐
用javascript获得地址栏参数的两种方法
Nov 08 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
Mar 05 Javascript
Knockoutjs的环境搭建教程
Nov 26 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
JavaScript运动减速效果实例分析
Aug 04 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
Sep 06 Javascript
React Native实现简单的登录功能(推荐)
Sep 19 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
Nov 02 Javascript
Ajax实现不刷新取最新商品
Mar 01 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
Apr 17 Javascript
webpack file-loader和url-loader的区别
Jan 15 Javascript
js实现全选反选不选功能代码详解
Apr 24 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实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
JavaScript函数详解
2014/11/17 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
Python最长公共子串算法实例
2015/03/07 Python
讲解Python中if语句的嵌套用法
2015/05/14 Python
Python 2与Python 3版本和编码的对比
2017/02/14 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
Python入门之后再看点什么好?
2018/03/05 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
2013年入党人员的自我鉴定
2013/10/25 职场文书
车工岗位职责
2013/11/26 职场文书
无传销社区工作方案
2014/05/13 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
总经理检讨书
2014/09/15 职场文书
销售员岗位职责范本
2015/04/11 职场文书
四则混合运算教学反思
2016/02/23 职场文书
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers