extjs portal 实现宽度的自适应

问题描述

在使用extjs portal 与fusionchar结合做展示时,当调整浏览器窗口时,其中的portal无法自动调整大小,来适应窗口的变化,当刷新下页面时,才能适应窗口大小部分代码如下: var c0_r0 = new Ext.ux.Portlet({ xtype:'portlet', id:'panel1', margins:'10 0 0 0',//title: 'Grid in a Portlet',layout:'fit',height:300,collapsible : false,collapsed:false, tools: tools,items: [FCF_Column3DPanel] }); var c0_r1 = new Ext.ux.Portlet({ xtype:'portlet', id:'panel2', margins:'10 0 0 0',//title: 'Grid in a Portlet',layout:'fit',height:300,collapsible : false,collapsed:false, tools: tools,items: [FCF_Pie3DPanel1] }); var c0_r2=new Ext.ux.Portlet({ xtype:'portlet', id:'panel3', margins:'10 0 0 0',//title: 'Grid in a Portlet',layout:'fit',height:300,collapsible : false,collapsed:false, tools: tools,items: [FCF_LinePanel2] }); var col_0 = new Ext.ux.PortalColumn({ columnWidth:.5, style:'padding:10px 0 10px 10px', items:[c0_r0,c0_r1,c0_r2] }); var c1_r0 = new Ext.ux.Portlet({ xtype:'portlet', id:'panel4', margins:'10 0 0 0',//title: 'Grid in a Portlet',layout:'fit',height:300,collapsible : false,collapsed:false, tools: tools,items: [FCF_FunnelPanel3] }); var c1_r1 = new Ext.ux.Portlet({ xtype:'portlet', id:'panel5', margins:'10 0 0 0',//title: 'Grid in a Portlet',layout:'fit',height:300,collapsible : false,collapsed:false, tools: tools,items: [FCF_KagiPanel4] }); var c1_r2 = new Ext.ux.Portlet({ xtype:'portlet', id:'panel6', margins:'10 0 0 0',//title: 'Grid in a Portlet',layout:'fit',height:300,collapsible : false,collapsed:false,items: [FCF_PyramidPanel5] }); var col_1 = new Ext.ux.PortalColumn({ columnWidth:.5, style:'padding:10px 0 10px 10px', items:[c1_r0,c1_r1,c1_r2] });_portal = new Ext.ux.Portal({xtype:'portal',border: false, //region:'center', //margins:'35 5 5 0', items:[col_0,col_1] /* * Uncomment this block to test handling of the drop event. You could use this * to save portlet position state for example. The event arg e is the custom * event defined in Ext.ux.Portal.DropZone. */ ,listeners: { 'drop': function(e){ //Ext.Msg.alert('aaa',dump_obj(this.items)); //Ext.Msg.alert('aaa',dump_obj(this.items)); //Ext.Msg.alert('aaa',dump_obj(e.portal)); Ext.Msg.alert('Portlet Dropped', e.panel.title+':id:'+e.panel.id + '<br />Column: ' + e.columnIndex + '<br />Position: ' + e.position); } }}); _portalContainer = new Ext.Container({ //layout:'border', renderTo:"biportal", height:'100%', width:'100%',margins:'5 5 5 5', frame:false,// //border:false, //bodyBorder :false, items:[ _portal ] });请问该如何调整脚本代码,使得能适应窗口的变化啊? 问题补充:谢谢您的回答,我是使用extjs渲染页面中的div层,使用您给的方法,按页面中的其他元素也就被覆盖了,只有Ext.Viewport中的内容

解决方案

可能是fusionChar的问题。你可以监听fusionChar所属的panel resize事件动态改变fusionChar的宽高
解决方案二:
添加以下代码你测试试试Ext.EventManager.addListener(window, "resize", function() {if(Ext.getBody().getWidth()<_portalContainer.getWidth()){ //如果窗口变小设置_portal宽0,让_portalContainer适应窗口宽。_portal.setWidth(0);}else{_portal.setWidth(_portalContainer.getWidth()); //设置_portal宽度为_portalContainer的宽度 _portal.doLayout();}});
解决方案三:
那你可以监听window 事件处理_portalContainer宽高Ext.EventManager.addListener(window, "resize", function() {});能否截个图看看你现在的效果
解决方案四:
_portalContainer = new Ext.Container({ //layout:'border', renderTo:"biportal", height:'100%', width:'100%', margins:'5 5 5 5', frame:false,// //border:false, //bodyBorder :false, items:[ _portal ] }); 改成 _portalContainer = new Ext.Viewport({ layout:'fit', margins:'5 5 5 5', frame:false,// //border:false, //bodyBorder :false, items:[ _portal ] }); 主要原因是因为你的 _portalContainer 宽高只会在第一次计算好。在窗口改变大小的情况下。_portalContainer 宽高不会跟着改变

时间: 2024-08-07 20:22:09

extjs portal 实现宽度的自适应的相关文章

CSS布局——左定宽度右自适应宽度并且等高布局

今天有位朋友一早从妙味课堂转来一个有关于CSS布局的面试题,需要解决,花了点时间写了几个DEMO,放上来与大家分享受.那么我们在看DEMO之前一起先来看看这个面试题的具体要求吧:   左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到效果其实也并不是太难,只是给人感觉像有点蛋疼的问题一样.但是你仔细看后你会觉得不是那么回事: 左边固定,右边自适应布

解决extjs grid 不随窗口大小自适应的改变问题

 在使用grid的时候窗口改变了但是grid却不能自适应,下面有个不粗的解决方法,大家可以参考下 最近遇到的问题,在使用grid的时候窗口改变了但是grid却不能自适应的改变于是加了一条这行语句  问题就解决了,效果图    拖大后的效果    添加的语句:     代码如下: Ext.EventManager.onWindowResize(function(){  grid1.getView().refresh()  })    参看完整代码:   代码如下: <html xmlns="

解决extjs grid 不随窗口大小自适应的改变问题_extjs

最近遇到的问题,在使用grid的时候窗口改变了但是grid却不能自适应的改变于是加了一条这行语句 问题就解决了,效果图 拖大后的效果 添加的语句: 复制代码 代码如下: Ext.EventManager.onWindowResize(function(){ grid1.getView().refresh() }) 参看完整代码: 复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m

Asp.Net MVC结合ExtJs gridPanel 分页和高度自适应

Ext.onReady(function () { gridPanel(); var panel = Ext.getCmp('gridPanel'); window.onresize = function () { panel.setHeight(document.documentElement.clientHeight); }; }); function gridPanel() { var pagingBar = Ext.widget('pagingtoolbar', { store: sto

ExtJS 获取浏览器宽度

  JS中代码: Ext.onReady(function() { var width=window.screen.availWidth; var height=window.screen.availHeight; Ext.MessageBox.alert('Form','width'+width+'\nheight:'+height); })  

手机端页面rem宽度自适应脚本

  网上关于这方面的文章有很多,重复的东西本文不再赘述,仅提供思路,并解释一些其他文章讲述模糊的地方.重点给大家介绍下rem.有需要的小伙伴可以参考下. 什么是rem 在我看来,rem就是1rem单位就等于html节点fontsize的像素值.所以改变html节点的fontsize是最为关键的一步.根据手机宽度改变相对大小就可以实现自适应了,就不用什么媒体查询那些的. 我们的设计图往往宽度是640或者其他尺寸的,不过我建议是用这个尺寸,以640为基准,以小到大,实现自适应,下面实现的比例为1re

Javascript网页制作技巧:图片列表自适应宽度显示

文章简介:从事网页重构好几年了,Javascript能力一直比较菜,主要还是做得太少.为了提高这方面的能力,这段时间主动承担了一些这方面的工作,真心感到学习和积累的不易,不过时常伴随着一些解决问题之后的小小成就感又让人乐此不疲. 从事网页重构好几年了,Javascript能力一直比较菜,主要还是做得太少.为了提高这方面的能力,这段时间主动承担了一些这方面的工作,真心感到学习和积累的不易,不过时常伴随着一些解决问题之后的小小成就感又让人乐此不疲. 在近期一个项目中,遇到一个图片列表自适应宽度显示的

YUI网页布局:自适应宽度的输入框

YUI中有一种布局思想:栅格决定宽度,内容决定高度,今天讨论的是自适应宽度的输入框,先上代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>宽度自适应输入框</title> <link rel="stylesheet" href="http://yui.yahooapis.com/3.0.0/build/

手机端页面rem宽度自适应脚本_javascript技巧

什么是rem 在我看来,rem就是1rem单位就等于html节点fontsize的像素值.所以改变html节点的fontsize是最为关键的一步.根据手机宽度改变相对大小就可以实现自适应了,就不用什么媒体查询那些的. 我们的设计图往往宽度是640或者其他尺寸的,不过我建议是用这个尺寸,以640为基准,以小到大,实现自适应,下面实现的比例为1rem=40px(640宽度). 为什么这样搞? 这样一套代码就搞定手机端尺寸自适应,不需要媒体查询,而且利用Sass和Less能够给我们节约更多的时间,以及