浏览器窗口变化实时获取window当前大小

主要步骤是两步:
1、获取屏幕尺寸和浏览器文本区域的尺寸
通过window的内置属性(innerwidth和innerheight)、document的内置对象(documentElement和body;对应的属性是clientwidth和clientheight)来获取
主要内容就是如下function:

   
//----chart尺寸默认值----
    var defaultwidth = "240px";
    var defaultheight = "100%";
    //----panel默认宽度----
    var panelwight = "100%";

    function _init_followSizeChange(){
        //获取显示器屏幕和浏览器inner内容大小
        var swidth = screen.width;
        var sheight = screen.height;
        //alert("显示器屏幕分辨率是:"+swidth+"X"+sheight);
        var wwidth = 0;
        var wheight = 0;
        if(document.documentElement && document.documentElement.clientWidth && document.documentElement.clientHeight){
            wwidth = document.documentElement.clientWidth;
            wheight = document.documentElement.clientHeight;
        }else if(window.innerWidth && window.innerHeight){
            wwidth = window.innerWidth;
            wheight = window.innerHeight;
        }else if(document.body && document.body.clientWidth && document.body.clientHeight){
            wwidth = document.body.clientWidth;
            wheight = document.body.clientHeight;
        }
        //alert("浏览器当前文本区域大小是:"+wwidth+"X"+wheight);
        var width = (wwidth-550)/3;  //550是固定文本区域的宽度,要放置3个相同大小的chart,所以除3
        if(width >=240 ){   //如果宽度大于chart的默认宽度就均匀分布(百分比会自动适配大小)
            //defaultwidth = 100*width/wwidth+"%";
            defaultwidth="25%"
            panelwight = "100%";
        }else{          //否则就使用固定宽度来现实chart  效果就是通过滚动条来浏览全部 保证chart的数据分布的合理性与整体美观性
            defaultwidth = "240px";
            panelwight = "1000px";
        }
        //alert("每个chart的显示宽度:"+defaultwidth+"  "+"panel宽度是"+panelwight);
    }


2、添加浏览器窗口变动事件的响应

  
 window.onresize = _windowonResize;   //浏览器窗口变动事件
    
    //浏览器窗口尺寸变化 就重新加载下面的内容
    function _windowonResize(){
        _init_followSizeChange(); //获取size
        _init_Panel9();   //再次初始化panel的size
        _init_Panel10();   
        _init_Panel5();
        _init_Panel6();
        _initdiv();  //再次初始化包含chart的div模块size
    }


    function _init_Panel5(){
        if(!_Panel5){
            _Panel5=new mx.containers.Panel({width:panelwight,height:"100px",title:"总览", id:"Panel5"});
            
            //_HSplit2Area0.addControl(_Panel5);
            _Container1.addControl(_Panel5);
        }else{
            _Panel5.resizeTo(panelwight,"100px");
        }        
    }
    
    function _init_Panel6(){
        if(!_Panel6){
            _Panel6=new mx.containers.Panel({width:panelwight,height:"70px",title:"容量视图", id:"Panel6"});
            //_HSplit2Area1.addControl(_Panel6);
            _Container1.addControl(_Panel6);
        }else{
            _Panel6.resizeTo(panelwight,"70px");
        }
    }

    function _init_Panel9(){
        if(!_Panel9){
            _Panel9=new mx.containers.Panel({width:panelwight,height:"270px",title:"资源视图",id:"Panel9"});
            //_HSplit3Area0.addControl(_Panel9);
            _Container1.addControl(_Panel9);
        }else{
            _Panel9.resizeTo(panelwight,"270px");
        }
    }
    
    function _init_Panel10(){
        if(!_Panel10){
            _Panel10=new mx.containers.Panel({width:panelwight,height:"280px",title:"应用视图",id:"Panel10",css:{"background-color":"#F0F0F0"}});
            
            //_HSplit3Area1.addControl(_Panel10);
            _Container1.addControl(_Panel10);
        }else{
            _Panel10.resizeTo(panelwight,"280px");
        }
    }

    function _initdiv() {
        if (!divfixinfochart) {    //如果此div不存在就初始化一个
            divfixinfochart = new mx.containers.Container({
                        id : "divfixinfochart",
                        width : defaultwidth,
                        height : defaultheight
                    });
            _Panel9.addControl(divfixinfochart);
        }else{                     //如果存在就不能在初始化了  那样会出现同id的两个div在页面上  通过resizeTo重置chart的宽高
            divfixinfochart.resizeTo(defaultwidth, defaultheight);
        }
        if (!divcountchart) {
            divcountchart = new mx.containers.Container({
                        id : "divcountchart",
                        width : defaultwidth,
                        height : defaultheight
                    });
            _Panel9.addControl(divcountchart);
        }else{
            divcountchart.resizeTo(defaultwidth, defaultheight);
        }
        if (!divx86chart) {
            divx86chart = new mx.containers.Container({
                        id : "divx86chart",
                        width : defaultwidth,
                        height : defaultheight
                    });
            _Panel9.addControl(divx86chart);
        }else{
            divx86chart.resizeTo(defaultwidth, defaultheight) ;
        }
        if (!divfuwutongji) {
            divfuwutongji = new mx.containers.Container({
                        id : "divfuwutongji",
                        width : defaultwidth,
                        height : defaultheight
                    });
            _Panel10.addControl(divfuwutongji);
        }else{
            divfuwutongji.resizeTo(defaultwidth, defaultheight) ;
        }
        if (!divjisuantongji) {
            divjisuantongji = new mx.containers.Container({
                        id : "divjisuantongji",
                        width : defaultwidth,
                        height : defaultheight
                    });
            _Panel10.addControl(divjisuantongji);
        }else{
            divjisuantongji.resizeTo(defaultwidth, defaultheight) ;
        }
        if (!divziyuantongji) {
            divziyuantongji = new mx.containers.Container({
                        id : "divziyuantongji",
                        width : defaultwidth,
                        height : defaultheight
                    });
            _Panel10.addControl(divziyuantongji);
        }
        else{
            divziyuantongji.resizeTo(defaultwidth, defaultheight) ;
        }
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 答:``` const { innerWidth, innerHeight } = window; console.log(`Browser window width: ${innerWidth}px, height: ${innerHeight}px`); ``` ### 回答2: 在React中,获取浏览器窗口的长宽可以通过使用JavaScript的window对象来实现。下面是一个获取浏览器窗口长宽的完整代码示例: ``` import React, { useEffect, useState } from 'react'; const WindowDimensions = () => { const [windowWidth, setWindowWidth] = useState(window.innerWidth); const [windowHeight, setWindowHeight] = useState(window.innerHeight); useEffect(() => { const handleResize = () => { setWindowWidth(window.innerWidth); setWindowHeight(window.innerHeight); }; window.addEventListener('resize', handleResize); return () => { window.removeEventListener('resize', handleResize); }; }, []); return ( <div> <p>浏览器窗口宽度:{windowWidth}px</p> <p>浏览器窗口高度:{windowHeight}px</p> </div> ); }; export default WindowDimensions; ``` 上述代码中,我们使用了useState来定义了windowWidth和windowHeight两个state变量,用于保存浏览器窗口的宽度和高度。利用useEffect钩子函数,在组件挂载时添加了resize事件的监听器,并在监听器中通过setWindowWidth和setWindowHeight更新state变量的值。同时,也在组件卸载时移除了resize事件的监听器,以防止内存泄漏。 最后,在组件的返回值中,我们使用了windowWidth和windowHeight,将宽度和高度的数值显示在页面上。 当组件被渲染时,它将显示当前浏览器窗口的宽度和高度,并在窗口大小发生变化时自动更新。 ### 回答3: 在React中,我们可以使用`window.innerWidth`和`window.innerHeight`属性来获取浏览器窗口的宽度和高度。 首先,我们需要在React组件中创建一个state来存储窗口的宽度和高度。在构造函数中初始化state: ``` constructor(props) { super(props); this.state = { windowWidth: window.innerWidth, windowHeight: window.innerHeight }; } ``` 然后,我们需要在组件挂载时添加一个事件监听器来更新窗口的尺寸,并在组件卸载时移除事件监听器。可以使用`componentDidMount`和`componentWillUnmount`生命周期方法来实现: ``` componentDidMount() { window.addEventListener('resize', this.handleResize); } componentWillUnmount() { window.removeEventListener('resize', this.handleResize); } ``` 在`handleResize`方法中,我们可以更新state中的窗口尺寸: ``` handleResize = () => { this.setState({ windowWidth: window.innerWidth, windowHeight: window.innerHeight }); } ``` 最后,在组件的render方法中,我们可以使用state中的窗口尺寸来显示它们: ``` render() { return ( <div> <h2>浏览器窗口尺寸:</h2> <p>宽度: {this.state.windowWidth}</p> <p>高度: {this.state.windowHeight}</p> </div> ); } ``` 这样,我们就可以获取并显示浏览器窗口的完整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值