Html 绝对元素浮动
我正在构建一个下拉式导航菜单,当我将Html 绝对元素浮动,html,css,Html,Css,我正在构建一个下拉式导航菜单,当我将位置:绝对应用到li的第二层时浮动:左一点也不麻烦。如果是skipPosition:absolute,它会将第一组li拧紧,并扩展原始div。我创建了两个Jsfiddle链接来显示我在这一个中的问题,看起来我想用span将float左移到li 市场 出售 销售1 销售2 #导航菜单{ 显示:内联块; 背景:红色; } #导航菜单{ 列表样式:无; 保证金:0; 填充:0; } #Navul li菜单{ 浮动:左; 显示:块; 填充:0
位置:绝对
应用到li的第二层时
浮动:左
一点也不麻烦。如果是skipPosition:absolute
,它会将第一组li
拧紧,并扩展原始div。我创建了两个Jsfiddle链接来显示我在这一个中的问题,看起来我想用span
将float左移到li
- 市场
- 出售
- 销售1
- 销售2
#导航菜单{
显示:内联块;
背景:红色;
}
#导航菜单{
列表样式:无;
保证金:0;
填充:0;
}
#Navul li菜单{
浮动:左;
显示:块;
填充:0.5em;
光标:指针;
位置:相对位置;
}
#navmenu ul li ul{
显示:无;
}
#导航菜单ul li:悬停ul{
显示:块;
}
#navmenu-ul-li-ul-li{
浮动:左;
}
您不能浮动
绝对元素。您必须通过指定它们相对于最近定位的父对象的位置,将它们定位在绝对(固定)位置。因此,定位将通过top:0
和left:calc(350px-100%)
等方法完成。需要进行一些调整才能使布局像这样工作。如果您正在构建一个只有一层深的导航菜单,那么此代码将工作正常,无需以任何特殊方式使用绝对定位。要记住的关键是列表项应该相对定位,它们的ul子项应该绝对定位。无论您是单级还是多级导航菜单的建筑,这一点都适用
现在,这里有一个相关的插头。在我的书的最后一章中,我考虑了一个多层次导航菜单的例子,它根据浏览器视口空间以四种不同的方式显示。这是一个结合了定位、flexbox和媒体查询的简洁案例。现在,你应该可以从亚马逊免费获得这本书
* {
margin: 0;
padding: 0;
border: 0;
}
ul {
list-style-type: none;
}
#navmenu > ul > li {
float: left;
padding: 10px 15px;
cursor: pointer;
background-color: red;
position: relative;
}
#navmenu ul ul {
top: 100%;
width: calc(100% * 5);
position: absolute;
display: none;
}
#navmenu ul ul > li {
float: left;
}
#navmenu li:hover > ul {
display: block;
}
添加
位置:固定的(到ul),而不是相对的或绝对的。它将解决这个问题。而float
将不适用于绝对元素等。
如果您还需要什么,请告诉我。
祝你好运这与我的小提琴“绝对”有什么不同?我以为你在试图修复校准。请参见更新的代码块以水平显示嵌套的列表项。float:left不起作用的原因是绝对块受其父列表项的宽度约束。增加嵌套ul的宽度可以显式修复它。这是一个快速修复,虽然我更喜欢一些不太明确的东西。
* {
margin: 0;
padding: 0;
border: 0;
}
ul {
list-style-type: none;
}
#navmenu > ul > li {
float: left;
padding: 10px 15px;
cursor: pointer;
background-color: red;
position: relative;
}
#navmenu ul ul {
top: 100%;
width: calc(100% * 5);
position: absolute;
display: none;
}
#navmenu ul ul > li {
float: left;
}
#navmenu li:hover > ul {
display: block;
}