2012-02-27 113 views
1

我無法在Web上的任何位置找到答案,因此我要回答我自己的問題:如何覆蓋TooltipDialog彈出窗口的內部填充?更改填充Dojo ToolTipDialog

挑戰: 當使用dijit.TooltipDialog存在的內部填充6個像素8像素8像素6像素從克拉羅樣式表分配給類dijitTooltipContainer。我在同一頁面上使用了幾個工具提示,只想從一個工具欄中刪除(因此,不想覆蓋默認樣式表)。這個特殊的工具提示包含一個程式化的無序列表,右邊對齊數字從0到100,以5爲增量,並且從dijitTooltipContainer的額外填充太多了。我如何改變內部填充,以0這裏的:

不幸的是,下面不工作,僅影響父元素(在那個做的事情弄亂):

var dialog = new dijit.TooltipDialog({ 
     content: string, 
     style: "padding: 0;", 
     id: "newDialog" 
    },""); 

答案(使用JavaScript):

// Create the ToolTip 
var dialog = new dijit.TooltipDialog({ 
     content: string, 
     id: "newDialog" 
    },""); 

// Open the popup 
dijit.popup.open({ 
    around: "someNode", 
    orient: ["below"], 
    popup: dialog 
}); 

// Remove the padding from dijitTooltipContainer 
    // Get our main Widget node 
    var mainNode = document.getElementById("newDialog"); 

    // Get all the child DIV nodes created by Dojo 
    var divChildren = mainNode.getElementsByTagName("div"); 

    // Set the element padding to zero 
    // dijitTooltipContainer is the first child node 
    dojo.attr(divChildren[0], "style", {padding: "0px"}); 

也許別人有更好的方式做到這一點非常明顯,我找不到它。哈。

回答

1

當我使用Dojo時,我設置了一個自定義主題並同時使用claro(或任何其他已發貨)和我的自定義主題。然後我在自定義主題中設置這些覆蓋的任何一個。

<body class="claro myTheme"> 

所以,如果我想要覆蓋所有的提示,我能有這個在我的CSS

.myTheme .dijitTooltipContainer { 
    padding: 0; 
} 

但你只想要覆蓋的,所以你可以做到這一點

// Create the ToolTip 
var dialog = new dijit.TooltipDialog({ 
    content: string, 
    id: "newDialog" 
},""); 
dojo.addClass(dialog.domNode, 'noPadding'); 

和css

.myTheme .noPadding .dijitTooltipContainer { 
    padding: 0; 
}