尝试在动态创建的面板上更改宽度,但不起作用

时间:2015-02-04 10:48:30

标签: css extjs

我有一个动态创建的页面,其中包含以下内容的面板:

<div class="x-panel-body x-panel-body-default x-panel-body-default" id="panel-1026-body" style="left: 0px; top: 0px; width: 1819px; height: 29px;">

我想更改此面板的宽度,但问题是宽度没有被覆盖。

我在css中尝试做的是:

#panel-1026-body {
width: 400px;

}

这不起作用,因为面板自动创建宽度仍然保持1819像素。然而,似乎它只是宽度:它不会接受,如果我是fx。添加margin-left: 400px;background-color: red;即可。

有谁知道宽度没有生效的原因是什么? 我提供了我认为相关的信息,但如果您需要更多信息,请告诉我

谢谢

4 个答案:

答案 0 :(得分:2)

这是因为当您在元素中设置值style="left: 0px; top: 0px; width: 1819px; height: 29px;"时,它将优先于CSS。

快速解决方案:

#panel-1026-body {
  width: 400px !important;
}

但使用!important

是一个非常糟糕的实践

冷溶液

尝试删除元素的所有样式并将其放入CSS类中。之后,把你的CSS代码放在代码之前。

答案 1 :(得分:1)

内联样式的specificity更大,所以通常你不能覆盖它。你需要使用!important:

#panel-1026-body {
width: 400px !important;
}

是边缘左边或背景颜色,因为这些没有以内联样式定义。

答案 2 :(得分:1)

使用CSS更改复杂的组件尺寸(面板,网格,树等)在Ext中通常不是一个好主意。您在DOM中看到的维度,在您的情况下为1819px,也可以根据布局在面板的某些子项上设置。

因此,您需要使用css来解决主容器div和所有必需的子节点。这样的解决方案非常容易受到攻击,因为DOM结构可以(并且确实)随着Ext升级而改变 - 有时即使是轻微的升级也可能会引入DOM的变化。

您应始终以编程方式设置维度panel.setWidth()panel.setHeight()panel.setSize()或类似内容。然后Ext关注自己并将宽度设置为它需要的所有DOM元素。

答案 3 :(得分:0)

正如本主题中提到的所有建议,解决方案是添加:

width: 400px !important;

这解决了我的问题。感谢所有帮助的人