2010-09-16 77 views
1

我正在使用ASP.NET Ajax控件工具包v3.5 TabContainer控件。任何时候,当我使用样式“float:left”时,我的标签容器“放开”它所包含的div,并且所有内容都出现在标签控件的外部/断开连接处(标签区域周围有一个黑色边框)。在线上,有人说设置“overflow:hidden”会有所帮助,但这似乎并不适用于TabContainer的上下文。其全部都在FF和IE中破译。任何人都知道如何解决这个问题?div浮动:一个asp中的左侧样式TabContainer

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TabControl.aspx.cs" Inherits="WebApplication1.TabControl" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:ToolkitScriptManager ID="ToolkitScriptManager2" runat="server"/> 
     <asp:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="2"> 
      <asp:TabPanel ID="TabPanel1" runat="server" HeaderText="TabPanel1"> 
      <ContentTemplate> 
      <div>I'm all nice and pretty inside the tab</div><div>Me too I'm pretty inside tab, but I fall to the nextline.</div> 
      </ContentTemplate> 
      </asp:TabPanel> 
      <asp:TabPanel ID="TabPanel2" runat="server" HeaderText="TabPanel2"> 
      <ContentTemplate> 
      <div style="float:left;">This is messed up on float</div><div style="float:left;">Watch as I fall onto the line</div> 
      </ContentTemplate> 
      </asp:TabPanel> 
     </asp:TabContainer> 
    </div> 
    </form> 
</body> 
</html> 

回答

1

这是一个真正的痛苦。所以,你不能像“BorderStyle = 0”一样向TabContainer添加样式属性,因为它只是忽略它们。相反,必须指定一个自定义样式类。哦,顺便说一句,这意味着你必须自定义整个Css风格,而不是重写一个类! Woot为好设计!

好消息是,您可以下载AJAX Control Toolkit的源代码并查找“Tabs.css”。这是TabContainer的“默认样式”。或者,只需复制所有代码:

/* default layout */ 
.ajax__tab_default .ajax__tab_header {white-space:nowrap;} 
.ajax__tab_default .ajax__tab_outer {display:-moz-inline-box;display:inline-block} 
.ajax__tab_default .ajax__tab_inner {display:-moz-inline-box;display:inline-block} 
.ajax__tab_default .ajax__tab_tab {margin-right:4px;overflow:hidden;text-align:center;cursor:pointer;display:-moz-inline-box;display:inline-block} 

/* xp theme */ 
.ajax__tab_xp .ajax__tab_header {font-family:verdana,tahoma,helvetica;font-size:11px;background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-line.gif")%>) repeat-x bottom;} 
.ajax__tab_xp .ajax__tab_outer {padding-right:4px;background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-right.gif")%>) no-repeat right;height:21px;} 
.ajax__tab_xp .ajax__tab_inner {padding-left:3px;background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-left.gif")%>) no-repeat;} 
.ajax__tab_xp .ajax__tab_tab {height:13px;padding:4px;margin:0;background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab.gif")%>) repeat-x;} 
.ajax__tab_xp .ajax__tab_hover .ajax__tab_outer {background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-hover-right.gif")%>) no-repeat right;} 
.ajax__tab_xp .ajax__tab_hover .ajax__tab_inner {background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-hover-left.gif")%>) no-repeat;} 
.ajax__tab_xp .ajax__tab_hover .ajax__tab_tab {background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-hover.gif")%>) repeat-x;} 
.ajax__tab_xp .ajax__tab_active .ajax__tab_outer {background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-active-right.gif")%>) no-repeat right;} 
.ajax__tab_xp .ajax__tab_active .ajax__tab_inner {background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-active-left.gif")%>) no-repeat;} 
.ajax__tab_xp .ajax__tab_active .ajax__tab_tab {background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-active.gif")%>) repeat-x;} 
.ajax__tab_xp .ajax__tab_body {font-family:verdana,tahoma,helvetica;font-size:10pt;border:1px solid #999999;border-top:0;padding:8px;background-color:#ffffff;} 

/* scrolling */ 
.ajax__scroll_horiz {overflow-x:scroll;} 
.ajax__scroll_vert {overflow-y:scroll;} 
.ajax__scroll_both {overflow:scroll} 
.ajax__scroll_auto {overflow:auto} 

现在你有原来的CSS样式,你需要更新CSS删除<%=WebResource垃圾并将其指向自己的图片(我把那些从阿贾克斯我在文件夹中搜索了一个名为“tab-left.gif”的文件,并将包含所有图像的文件夹拉出来。)还需要将“.ajax__tab_xp”更改为“.CustomTabStyle”或任何名称指定为的CssClass属性:

/* default layout */ 
.ajax__tab_default .ajax__tab_header {white-space:nowrap;} 
.ajax__tab_default .ajax__tab_outer {display:-moz-inline-box;display:inline-block} 
.ajax__tab_default .ajax__tab_inner {display:-moz-inline-box;display:inline-block} 
.ajax__tab_default .ajax__tab_tab {margin-right:4px;overflow:hidden;text-align:center;cursor:pointer;display:-moz-inline-box;display:inline-block} 

/* xp theme */ 
.CustomTabStyle .ajax__tab_header {font-family:verdana,tahoma,helvetica;font-size:11px;background:url(<%=WebResource("AjaxControlToolkit.Tabs.tab-line.gif")%>) repeat-x bottom;} 
.CustomTabStyle .ajax__tab_outer {padding-right:4px;background:url('../images/Tabs/tab-right.gif') no-repeat right;height:21px;} 
.CustomTabStyle .ajax__tab_inner {padding-left:3px;background:url('../images/Tabs/tab-left.gif') no-repeat;} 
.CustomTabStyle .ajax__tab_tab {height:13px;padding:4px;margin:0;background:url('../images/Tabs/tab.gif') repeat-x;} 
.CustomTabStyle .ajax__tab_hover .ajax__tab_outer {background:url('../images/Tabs/tab-hover-right.gif') no-repeat right;} 
.CustomTabStyle .ajax__tab_hover .ajax__tab_inner {background:url('../images/Tabs/tab-hover-left.gif') no-repeat;} 
.CustomTabStyle .ajax__tab_hover .ajax__tab_tab {background:url('../images/Tabs/tab-hover.gif') repeat-x;} 
.CustomTabStyle .ajax__tab_active .ajax__tab_outer {background:url('../images/Tabs/tab-active-right.gif') no-repeat right;} 
.CustomTabStyle .ajax__tab_active .ajax__tab_inner {background:url('../images/Tabs/tab-active-left.gif') no-repeat;} 
.CustomTabStyle .ajax__tab_active .ajax__tab_tab {background:url('../images/Tabs/tab-active.gif') repeat-x;} 
.CustomTabStyle .ajax__tab_body {font-family:verdana,tahoma,helvetica;font-size:10pt;border:0px solid #999999;border-top:0;padding:8px;background-color:#ffffff;float:left;} 

/* scrolling */ 
.ajax__scroll_horiz {overflow-x:scroll;} 
.ajax__scroll_vert {overflow-y:scroll;} 
.ajax__scroll_both {overflow:scroll} 
.ajax__scroll_auto {overflow:auto} 

我将“float:left”添加到“ajax__tab_body”,浮动问题消失了,但它引入了标签和顶部内容结尾之间的丑陋间隙。所以我放弃了边界并将其设置为0像素。

下面是最终asp.net

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TabControl.aspx.cs" Inherits="WebApplication1.TabControl" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <link href="css/Site.css" rel="stylesheet" type="text/css" /> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div style="float:inherit;"> 
    <asp:ToolkitScriptManager ID="ToolkitScriptManager2" runat="server"/> 
     <asp:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="2" CssClass="CustomTabStyle"> 
      <asp:TabPanel ID="TabPanel1" runat="server" HeaderText="TabPanel1"> 
      <ContentTemplate> 
      <div>I'm all nice and pretty inside the tab</div><div>Me too I'm pretty inside tab, but I fall to the nextline.</div> 
      </ContentTemplate> 
      </asp:TabPanel> 
      <asp:TabPanel ID="TabPanel2" runat="server" HeaderText="TabPanel2"> 
      <ContentTemplate> 
      <div style="width:100px;">This is messed up on float<div style="float:left;">Watch as I fall onto the line</div></div> 

      </ContentTemplate> 
      </asp:TabPanel> 
     </asp:TabContainer> 
    </div> 
    </form> 
</body> 
</html> 

容易吧?呃...

0

如果我没有记错,我见过的元素漂浮在某些浏览器父容器外时,父元素没有一个浮点值集。这是在黑暗中的一点点,但我会建议将style="float:inherit"style="float:left"添加到标签容器周围的div。

希望这会有所帮助...

+0

我刚刚试过两种。它在IE或FF中没有任何区别。 – 2010-09-16 20:30:56

+0

您是否尝试过以下解决方案:http://stackoverflow.com/questions/218760/how-do-you-keep-parents-of-floated-elements-from-collapsing?我的猜测是,它最终是一个类似的问题...... – 2010-09-16 21:28:49