我们使用ExtJS 4.1.2创建一个工具栏停靠在顶部的面板。我们已经覆盖了很多样式来实现我们想要的外观和感觉。尽管我们尽最大努力调整和调整,但我们在Firefox中遇到了一个奇怪的问题,该面板出现的页面默认宽度为20000px。我相信有问题的元素是ExtJS用一类“x-box-inner”创建的内部组件。在DOM浏览器视图中,我可以看到ExtJS内联宽度导致firefox中的宽度错误
<div id="mylist" class="x-panel listpanel x-panel-default">
<div id="toolBar###(ExtJSid)" class="x-toolbar-docked-top x-toolbarhttp://i.stack.imgur.com/ddvdF.png x-toolbar-default x-docked x-docked-top ..." style="width: 735px;..." ...>
<div id="anotherXtJSid" class="x-box-inner " style="width: 735px; ..." ...>
<div id="anotherExtJSid" style="width:20000;..." (no class)>
...
如果我将鼠标悬停在该元素上,我看到 如果在浏览器的DOM探险者1号修改为“自动”,则Firefox窗口滚动条消失的是20000px宽度,并且显示器尺寸合适。
我试图使用重写宽度解决这个问题为“宽度:自动”的div在该水平以下,在SCSS定义面板:
...
.listpanel {
overflow: visible;
background: none;
border: none;
...
.x-toolbar-docked-top {
overflow: visible;
.x-box-inner + div { // added + div
overflow: visible;
width: auto; // added width here.
}
}
...
}
该类创建时所使用的ExtJS的面板:
Ext.define('List', {
extend: 'Ext.panel.Panel',
alias: 'widget.mylist',
... // no width defined. It messes up all components within panel.
height: 750,
frame: false,
cls: 'listpanel',
bubbleEvents: [
...
],
...
initComponent: function() {
this.callParent(arguments);
this.add({
xtype: 'listbody',
ownerCt: this,
...
},
...
的width:auto
和+ div
上x-box-inner
出现以固定宽度,虽然我仍然可以看到ExtJS的元件与width:20000px
在DOM检查。但是,看起来任意,这打破了overfow: visible
--当用户单击下拉按钮时,面板的一个下拉弹出框消失在面板下面。
是否有一些(其他)的方式来强制这个神秘的ExtJS元素的宽度?
通常这是与所选布局的问题,但没有任何代码,没有什么做为了我们。 – Alexander
增加了一些源代码; scss和panel的创建还有很多,但我相信这些是影响超宽div的唯一部分。 – GLaDOS