我有一个水平菜单的CSS代码:
.vertical-nav {
height:auto;
list-style:none;
width: 100%; /******* MODIFIED ********/
margin-top:0;
margin-bottom:35px;
margin-left:0;
}
.vertical-nav li {
height: 25px;
margin: 0;
padding: 5px 0;
background-color: #666;
border: none;
text-align: center;
display: inline-block;
float: left;
width: 100px; /******* MODIFIED ********/
}
.vertical-nav li:hover {
background-color:#f36f25;
color:#FFFFFF;
}
.vertical-nav li a {
font-family:Calibri, Arial;
font-size:18px;
font-weight:bold;
color:#ffffff;
text-decoration:none;
}
.vertical-nav li.current {
background-color:#F36F25;
}
.vertical-nav li.current a {
color:#FFFFFF;
}
vertical-nav ul li ul {
display:none;
list-style-type:none;
width:125px;
padding:0px;
margin-top:3px;
margin-left:-5px;
}
vertical-nav ul li:hover ul {
display:block;
}
vertical-nav ul li:hover ul li {
background-color:#555555;
width:125px;
height:30px;
display:inline-block;
}
vertical-nav ul li ul li:hover {
background-color:#333333;
}
vertical-nav ul li ul li a {
color:#FFF;
text-decoration:underline;
}
vertical-nav ul li ul li a:hover {
text-decoration:none;
}
.vertical-nav li ul {
display: none;
margin-top: 10px;
padding: 0;
}
.vertical-nav li:hover ul {
display: block;
}
.vertical-nav li:hover .sub-menu
{
display: table;
}
.sub-menu li
{
width: 100%;
min-width: 180px;
white-space: nowrap;
display:table-row;
z-index:1;
position:relative;
}
.sub-menu li a
{
display:inline-block;
padding: 0 10px;
}
但左边有一个边距,我无法理解如何删除。
我试过做保证金:0还有保证金: - 10px等......但它不会去。
这是一个jsFiddle:http://jsfiddle.net/QSEGR/
答案 0 :(得分:4)
实际上它不是保证金。
网络浏览器在HTML列表元素上应用padding-left
,例如<ul>
(Google Chrome设置-webkit-padding-start: 40px;
)。
您可以通过在padding: 0;
元素上设置<ul>
来覆盖用户代理样式表:
.vertical-nav {
padding: 0;
}
以下是 JSFiddle Demo
注意:网络浏览器还在margin: 8px;
元素上应用了<body>
,您可以通过以下方式重置边距:
body {
margin: 0;
}
最佳做法是什么?
不同的浏览器可能有不同的行为。默认情况下,它们在HTML元素上应用几个CSS声明。他们添加了margin
,padding
,text-decoration
等等。
为了解决这个问题,大多数Web开发人员使用一些名为 CSS Reset 的CSS声明来覆盖浏览器的默认样式表,作为起点。
答案 1 :(得分:3)
添加填充:0;到无序列表。