我正在开发一个网络应用程序,它有一个类似于Facebook顶部蓝色栏的顶部栏。我有一个无序的列表中的div栏列出一些项目,如收件箱,通知等。UL有一个1em的边距,这是由我的浏览器的用户代理样式表定义的。这是一个问题,因为它把我的顶栏推下来了。我如何覆盖它来使ul的边界= 0?我读到过重写用户代理样式表是个坏主意,所以我很想知道最好怎么做。谢谢
下面是CSS文件:
body {
margin:0px;
padding:0px;
}
#topBar{
background-color:#CCCCCC;
height: 50px;
width:100%;
z-index:-1;
}
#mainNav{
margin:0 auto;
width:900px;
}
#logo{
float:left;
}
#mainNav ul li{
float:left;
border:0px;
margin:0;
padding:0;
font-size:10px
}
HTML:
<!DOCTYPE html>
<html>
<head>
<title>ff</title>
<%= stylesheet_link_tag :all %>
<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>
</head>
<body>
<div id="topBar">
<div id="mainNav">
<div id="logo"><%=image_tag("livecove.jpg") %></div>
<ul>
<li>Inbox</li>
</ul>
</div>
</div>
<%= yield %>
</body>
</html>
6条答案
按热度按时间rggaifut1#
如果您 * 可以 * 编辑违规样式表
如果用户代理样式表的样式导致了它应该修复的浏览器的问题,那么你可以尝试删除违规的样式并进行测试,以确保它不会在其他地方产生任何意想不到的负面影响。
如果没有,请使用修改后的样式表。修复浏览器的怪癖是这些工作表的目的--它们修复问题,而不是引入新的问题。
无法编辑违规样式表
如果您无法编辑包含违规行的样式表,您可以考虑使用
!important
关键字。举个例子:
HTML:
Live example
尽量只在真正需要的地方使用
!important
--如果你能重新组织你的样式,这样你就不需要它了,这会更好。hjzp0vay2#
不,它不是。使用Meyers CSS reset:)http://meyerweb.com/eric/tools/css/reset/
qojgxg4l3#
我不明白为什么没有人指出具体问题,有些答案完全是误导性的,尤其是公认的答案。问题是OP没有选择可能覆盖用户代理(UA)直接在
ul
标记上设置的margin属性的规则。让我们考虑OP使用的所有带有margin属性的规则。body元素位于DOM的上方,UA规则匹配下面的元素,因此UA获胜。这就是遗传的方式。继承是一种方法,在没有来自CSS级联应用的任何源的任何特定声明的情况下,从其父元素获得元素的属性值。父元素的特定性是无用的,因为UA规则直接匹配元素。
这是一个更好的尝试,一个更具体的选择器
#mainNav
,它匹配DOM中较低的mainNav元素,但同样的原则适用,因为ul
元素仍然在DOM中这个元素之下。这太过分了!现在,选择器匹配
li
元素,它位于ul
元素下面。因此,假设UA规则使用选择器
ul
而不是!important
,这是最有可能的情况,解决方案将是一个简单的ul { margin: 0; }
,但更安全的是使其更具体,比如#mainNav ul { margin: 0 }
。bttbmeg04#
把这个放在你的index.html的“头”中
bqucvtff5#
您在自己的样式表中编写的所有内容都会覆盖用户代理样式-这就是编写自己的样式表的意义所在。
cdmah0mi6#
我有同样的问题,但没有任何工作。我所做的就是把这个添加到选择器中: