解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题_extjs

Extjs的Panel和Window等组件在默认情况下是带边框的,通常情况下,单独使用没有什么关系,但是将Panel作为Window组件的子组件时就会出现双重边框的现象,如果Window组件中含有两个或者两个以上的Panel,那么Panel和Panel组件之间的边框会重复累加,也就是说会变成双重边框。实际上双重边框并不是很影响外观,但多少看上去会有些不太令人满意,因此我们就得想办法将两重边框去掉,变成单边框。下面是前后两张对比图,大家仔细观察一下两个window的边框部分,可以发现前者较粗,后者较细。

                    图一

                      图二

下面我们就要想解决的办法了。

首先想到的是我们可以让Window的边框为0,即设置Window组件的属性border:false,此时,可以发现Window四周的边框编程单边框了,但是Window里面上面的GridPanel和下面的Panel之间还是会有双重边框,显得不协调,而且底部的工具条的四周没有了边框(因为“保存”按钮所在的工具条是属于Window,Window的边框没有了之后,当然会影响到底部工具条的边框)。于是这种方案不可行。弃之!

第二种方案是保留Window组件的边框,想办法去掉Panel的边框,通过查ExtJS的帮助文档,发现可以通过定义bodyStyle来控制Panel的样式。于是给上面的Panel分别设置bodyStyle属性,GridPanel:bodyStyle: 'border-width:1px 0 1px 0;',下方的Panel:bodyStyle: 'border-width:1px 0 0 0; background:transparent',之后在刷新重新看效果,发现边框确实编程但边框了,但是还有一部分边框是双重的,即时上面那个GridPanel的表头的两侧,以及下面按个Panel的Header的两侧。开来这种办法还是比较靠谱的。我们在精心修改一下就好了。下一步要做的就是,为每一个Panel定义一个cls属性,然后对通过自己写样式来限制表头以及header的样式,即覆盖ExtJS默认的样式(只是修改border的样式)。通过Chrome的“审查元素”发现:表头默认的一个CSS样式类是x-grid-header-ct,Panel默认的一个样式类是x-panel-header。下面要做的就是自己写样式来覆盖以前的样式了,比如我为两个Panel设置的cls为addr-panel,然后新加CSS样式类.addr-panel .x-grid-header-ct{border-width: 1px 0 0 0 !important;},.addr-panel .x-panel-header{border-width:0;}。保存之后刷新之后查看效果,就是图二的效果了,完成!

如果以后我们在遇到类似的问题都可以考虑用CSS样式来解决。(完)^_^

时间: 2024-09-18 10:07:38

解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题_extjs的相关文章

vuejs动态组件给子组件传递数据的方法详解_javascript技巧

通过子组件定义时候的props可以支持父组件给子组件传递数据,这些定义的props在子组件的标签中使用绑定属性即可,但是如果使用的是<component>动态组件,这个时候就没有显式的子组件标签,要给子组件传递数据需要在<component> 中进行绑定 <div class="app" id="deviceready"> <component :is="currentView" :user_name.s

panel,dialog,window组件越界(超出范围)问题汇总

参考地址 之前分别写过panel,dialog,window三个组件因为拖曳或者reSize造成组件越界而无法还原的问题,两篇文章分别针对拖曳和reSize给出了解决方案.不过根据朋友的反馈,reSize的解决方案和拖曳的解决方案同时使用时存在效率低下的问题,个人也在进一步使用过程中发现了另外一些问题,共修正以下Bug: 原生panel并无拖曳和缩放功能,且继承panel组件的上层组件太多,极容易出问题,故放弃对panel组件的支持. onResize配合onMove使用时,性能低下,原因是由o

extjs每个组件要设置唯一的ID否则会出错_extjs

extjs每个组件要设置唯一的ID,否则会造成各种错误 EXTJS基本上是靠ID来识别组件的,假如你在panel1中有个ID:"keyword"的textfield,而panel2中有个ID相同的textfield ,那么,当你关闭panel2,由于extjs发现panel2中的ID:"keyword"组件在panel1中仍然使用中,是不会销毁掉它的,于是它成为一个孤立的对象,从而造成混乱. 无论如何,你得时刻记着,任何时候,必须确保对象ID是唯一的.这有两个做法:

vue的props实现子组件随父组件一起变化_javascript技巧

本文实例为大家分享了vue的props实现父组件变化子组件一起变化,供大家参考,具体内容如下 类似于用 v-bind 绑定 HTML 特性到一个表达式,也可以用 v-bind 绑定动态 Props 到父组件的数据.每当父组件的数据变化时,也会传导给子组件: <div> <input v-model="parentMsg"> <br> <child v-bind:my-message="parentMsg"></c

extjs报错-extjs中create一个window,里面一个panel加html然后加入buttons就报错了。

问题描述 extjs中create一个window,里面一个panel加html然后加入buttons就报错了. extjs中create一个window,里面一个panel加html然后加入buttons就报错了.代码如: createMapWindows: function() { this.mapWin = Ext.create('Ext.window.Window', { title: '点击获取地理位置', height: 550, width: 700, layout: 'auto'

布局-Extjs中panel嵌套不显示的问题

问题描述 Extjs中panel嵌套不显示的问题 Ext.namespace("ideaproject.js"); var _login = ideaproject.js; _login.createPanel = function(){ var panel = new Ext.Panel({ renderTo : 'loginpanel', layout:"border", width:525, height:290, defaults:{border:false

如何在extjs 的panel里面嵌套echarts 然后把echarts渲染到div上面

问题描述 如何在extjs 的panel里面嵌套echarts 然后把echarts渲染到div上面 如何在extjs 的panel里面嵌套echarts 然后把echarts渲染到div上面 解决方案 Echarts柱状图的点击事件echarts 点击事件 解决方案二: panel的contentEl属性引入一个div ,div里面渲染echart图表 解决方案三: Ext整合显示echarts示例如何导入使用echarts和切换主题

编辑器-extjs的panel中contentEl内容拼接

问题描述 extjs的panel中contentEl内容拼接 本来是一个panel,里面有一个编辑器. 需求是生成的文章有4个tab. 现在要求做成4个含编辑器的panel,做出一个可选的功能,在编辑器A中输入内容,则文章显示出tab A,若编辑器B中无内容,则文章中无tab B. 我不知道如何获取编辑器的内容,然后把他们拼接在一起.最好是,拼接后中间加上分割标签,这样方便修改的时候,把各个编辑器的内容放入对应的编辑器. 声明编辑器的代码如下,我未用过ext,还请大神帮忙说的浅显明了一些. va

编码-Android无法解决permission denied for this window type

问题描述 Android无法解决permission denied for this window type 安卓学者请教各位大哥们:我的代码出现了哪里的问题 当我需要系统弹出一个系统对话框的时候老是报错 代码如下:这是我在Mainfest中注册的内容 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk