将CSS应用于dijit按钮

6

我有以下的HTML和CSS:

<button id="myBtn" dojoType="dijit.form.Button">Testing</button>

#myBtn {
    margin-left: 100px;
}

CSS应该将按钮向内推100像素。但由于dijit在按钮周围应用了一些额外的HTML层,所以按钮得到了100像素的填充。JSbin展示问题 编辑:找到一个(不兼容IE6)的解决方案:
[widgetid=myBtn] { margin-left: 100px; }

为什么它不兼容IE6?你能否将你的代码发布到另一个JSbin上,以便我们可以进行调试。 - 2ndkauboy
1
@Kau-Boy IE6不支持CSS中的属性选择器... - peirix
4个回答

4

请参考上面的内容 :-) 用一个 DIV 包围,并在静态 CSS 中使用该 DIV。

我认为使用 HTML 进行装饰可能比尝试将更多内容嵌入小部件或小部件模板更简单。


2

通过类别而非 ID 来应用样式。

样式表:

.myBtn { margin-left: 100px; }

代码:

<button class="myBtn" dojoType="dijit.form.Button" id="myBtn">Testing</button>

http://jsbin.com/ejoma/2


1
在通过命令式方式创建小部件时无法正常工作(您的示例是声明式的)。 - Roy Tinker

1
在这种情况下,您不应将margin-left添加到按钮本身,而是应该添加到创建的按钮周围的其他HTML区域。请尝试以下内容:
.dijitLeft{
    margin-left: 100px;
}

但这确实会为每个按钮添加一个边距。 如果您不想要这样,请在创建附加HTML之后使用JavaScript将边距添加到父级span。


2
这真是太麻烦了。解析器中没有任何选项可以告诉它在应用HTML元素时将“id”属性移动到最顶层吗? - peirix
1
很遗憾,不行。甚至没有办法使用CSS获取具有特定子节点的元素。但是,由于您已经使用了JS框架,因此使用该框架分配CSS应该不成问题。但是,由于我不知道dojo框架,所以无法告诉您该函数的名称。 - 2ndkauboy
dojo.style()会动态地分配样式。也许你还可以把按钮放在一个有ID或class的HTML元素中,并使用静态样式规则。 - peller
@peller:将按钮移动到具有ID的元素中是一个绝妙的主意!然后,在使用dojo.style()之后,按钮将不会“跳动”。 - 2ndkauboy
2
@peller 是的,我也考虑过那个想法,只是希望有更好、更少“无用”的方法来实现它。现在我必须用“无用”的<div><span>来包围每个按钮...但这比在所有按钮上使用javascript要好。 - peirix
显示剩余2条评论

0

内联样式正在工作。

<button id="myBtn" dojoType="dijit.form.Button" style="margin-left:100px">Testing</button>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接