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 相关文章推荐
JS与框架页的操作代码
Jan 17 Javascript
firebug的一个有趣现象介绍
Nov 30 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
介绍JavaScript的一个微型模版
Jun 24 Javascript
举例说明如何为JavaScript的方法参数设置默认值
Nov 17 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
jQuery soColorPacker 网页拾色器
Jun 22 Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 Javascript
使用Nuxt.js改造已有项目的方法
Aug 07 Javascript
js实现蒙版效果
Jan 11 Javascript
JavaScript实现4位随机验证码的生成
Jan 28 Javascript
JavaScript实现班级抽签小程序
May 19 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
无线电广播的开始
2002/01/30 无线电
PHP中实现进程间通讯
2006/10/09 PHP
图象函数中的中文显示
2006/10/09 PHP
php 破解防盗链图片函数
2008/12/09 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
Javascript中的arguments与重载介绍
2015/03/15 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
python实现的系统实用log类实例
2015/06/30 Python
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
2015年材料员工作总结
2015/04/30 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers