为什么第一级子菜单和第二级菜单之间存在差距?

时间:2017-02-07 17:18:12

标签: html css navbar navigationbar

我正在尝试从互联网上的某些代码和it runs just fine here创建一个水平菜单系统(基本上是下拉列表),即第一级和第二级子菜单之间没有差距。

enter image description here

然而,当我尝试提取相关的HTML(查看源代码并从上面的链接获取)并链接到相关的CSS(也见上文),并在我的本地系统或jsfiddle上运行它时,存在差距。下面是我的屏幕截图,略有修改(字体1em而不是11px,高度自动而不是1%,主要是我实际需要的顶级菜单项),这里是jsfiddle code基于原始的忠实链接,仍显示差距。造成这种情况的原因是什么?我怎样才能摆脱它?

(最底层是所有的CSS内联,所以SO不会抱怨jsfiddle的链接没有伴随代码;另外我指示使用Bootstrap作为现代外观并且感觉会与我们当前的遗留代码冲突太多)

enter image description here

/*
     FILE ARCHIVED ON 17:27:37 Jan 13, 2010 AND RETRIEVED FROM THE
     INTERNET ARCHIVE ON 16:43:49 Feb 7, 2017.
     JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.

     ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
     SECTION 108(a)(3)).
*/
/*
Author: Craig Erskine
Description: Dynamic Menu System - Horizontal/Vertical
*/

ul#navmenu-h { margin: 0; padding: 0; list-style: none; position: relative; }

ul#navmenu-h ul {
 width: 160px; /* Sub Menu Width */
 margin: 0;
 list-style: none;
 display: none;
 position: absolute;
 top: 100%;
 left: 0;
}

ul#navmenu-h ul ul,ul#navmenu-h ul ul ul { top: 0; left: 100%; }

ul#navmenu-h li { float: left; display: inline; position: relative; }
ul#navmenu-h ul li { width: 100%; display: block; }

/* Root Menu */
ul#navmenu-h a {
 border-top: 1px solid #FFF;
 border-right: 1px solid #FFF;
 padding: 6px;
 float: left;
 display: block;
 background: #DDD;
 color: #666;
 font: bold 11px Arial, sans-serif;
 text-decoration: none;
 height: 1%;
}

/* Root Menu Hover Persistence */
ul#navmenu-h a:hover,ul#navmenu-h li:hover a,ul#navmenu-h li.iehover a {
 background: #BBB;
 color: #FFF;
}

/* 2nd Menu */
ul#navmenu-h li:hover li a,ul#navmenu-h li.iehover li a {
 float: none;
 background: #BBB;
}

/* 2nd Menu Hover Persistence */
ul#navmenu-h li:hover li a:hover,ul#navmenu-h li:hover li:hover a,ul#navmenu-h li.iehover li a:hover,ul#navmenu-h li.iehover li.iehover a {
 background: #999;
}

/* 3rd Menu */
ul#navmenu-h li:hover li:hover li a,ul#navmenu-h li.iehover li.iehover li a {
 background: #999;
}

/* 3rd Menu Hover Persistence */
ul#navmenu-h li:hover li:hover li a:hover,ul#navmenu-h li:hover li:hover li:hover a,ul#navmenu-h li.iehover li.iehover li a:hover,ul#navmenu-h li.iehover li.iehover li.iehover a {
 background: #666;
}

/* 4th Menu */
ul#navmenu-h li:hover li:hover li:hover li a,ul#navmenu-h li.iehover li.iehover li.iehover li a {
 background: #666;
}

/* 4th Menu Hover */
ul#navmenu-h li:hover li:hover li:hover li a:hover,ul#navmenu-h li.iehover li.iehover li.iehover li a:hover {
 background: #333;
}

/* Hover Function - Do Not Move */
ul#navmenu-h li:hover ul ul,ul#navmenu-h li:hover ul ul ul,ul#navmenu-h li.iehover ul ul,ul#navmenu-h li.iehover ul ul ul { display: none; }
ul#navmenu-h li:hover ul,ul#navmenu-h ul li:hover ul,ul#navmenu-h ul ul li:hover ul,ul#navmenu-h li.iehover ul,ul#navmenu-h ul li.iehover ul,ul#navmenu-h ul ul li.iehover ul { display: block; }

1 个答案:

答案 0 :(得分:2)

浏览器将默认左边距填充应用于ul个元素。这将摆脱它。

ul#navmenu-h ul {
  padding: 0; 
}