在使用asp.net的Menu控件时,用如下的代码: <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal">
<Items>
<asp:MenuItem Text="Item1" Value="Item1"></asp:MenuItem>
<asp:MenuItem Text="Item2" Value="Item2"></asp:MenuItem>
</Items>
</asp:Menu>生成的Html如下:
<DIV style="FLOAT: left; cssFloat: left" id=Menu1 Sys.WebForms.Menu.Mapping="Menu1"><UL style="POSITION: relative; WIDTH: auto; FLOAT: left; cssFloat: left" class="level1 static" role=menubar tabIndex=0 Sys.WebForms.Menu.Mapping="%1">
<LI style="POSITION: relative; FLOAT: left; cssFloat: left" class=static role=menuitem Sys.WebForms.Menu.Mapping="%2"><A class="level1 static" tabIndex=-1 onclick="__doPostBack('Menu1','Item1')" href="#">Item1</A></LI>
<LI style="POSITION: relative; FLOAT: left; cssFloat: left" class=static role=menuitem Sys.WebForms.Menu.Mapping="%3"><A class="level1 static" tabIndex=-1 onclick="__doPostBack('Menu1','Item2')" href="#">Item2</A></LI></UL></DIV><DIV style="CLEAR: left"></DIV>以上省略了许多与本问题无关的代码。
从以上代码我们可以看到,除了生成我们想要的代码外还生成了一个<DIV style="CLEAR: left"></DIV>,这样使我们如果想要在Menu一栏再添加一些内容的话就很难完成,如何才能除去这个<DIV style="CLEAR: left"></DIV>?
<Items>
<asp:MenuItem Text="Item1" Value="Item1"></asp:MenuItem>
<asp:MenuItem Text="Item2" Value="Item2"></asp:MenuItem>
</Items>
</asp:Menu>生成的Html如下:
<DIV style="FLOAT: left; cssFloat: left" id=Menu1 Sys.WebForms.Menu.Mapping="Menu1"><UL style="POSITION: relative; WIDTH: auto; FLOAT: left; cssFloat: left" class="level1 static" role=menubar tabIndex=0 Sys.WebForms.Menu.Mapping="%1">
<LI style="POSITION: relative; FLOAT: left; cssFloat: left" class=static role=menuitem Sys.WebForms.Menu.Mapping="%2"><A class="level1 static" tabIndex=-1 onclick="__doPostBack('Menu1','Item1')" href="#">Item1</A></LI>
<LI style="POSITION: relative; FLOAT: left; cssFloat: left" class=static role=menuitem Sys.WebForms.Menu.Mapping="%3"><A class="level1 static" tabIndex=-1 onclick="__doPostBack('Menu1','Item2')" href="#">Item2</A></LI></UL></DIV><DIV style="CLEAR: left"></DIV>以上省略了许多与本问题无关的代码。
从以上代码我们可以看到,除了生成我们想要的代码外还生成了一个<DIV style="CLEAR: left"></DIV>,这样使我们如果想要在Menu一栏再添加一些内容的话就很难完成,如何才能除去这个<DIV style="CLEAR: left"></DIV>?
可别说用绝对定位,不想用绝对定位
<div id="div_1_2" style:"float:left;"><这里放menu></div>
<div style="float:clear;height:0;"></div>使用浮动和清除浮动相结合的手段
你就能体会到div+css的布局是多么的得心应手了
要布局结构稳定,就要懂得清除float,尤其是这一点,很多开发人员不注意
现在我已经不用这样的设计了,但仍觉得这个讨论是有意义的
你想加的东西是什么,不是菜单项的话干嘛加在<div id="menu">里面?<div id="menu">这个你就看作一个整体,不要想着往里面塞东西,考虑成封装过的,你无法直接访问内部的盒子就行了,至于你加东西这样
<div id="外部容器">
<div id="menu1">这个menu</div>
<div id="比如搜索框">搜索框</div>
</div>现在的问题就是如果menu1和搜索在一行的问题了,方法就是css
比如采用浮动啦,或者定位啦。