2011-06-14 67 views
0

我很新的CSS,但我希望这只是我明显缺少的东西。 在www.sonogenics.co.uk上,Twitter块看起来漂浮在右边或具有40px的左边距。我已明确设置边距为0px并清除浮动等,但没有效果。从Firefox WebDeveloper插件看,它似乎是.tweet ul的问题,但我似乎无法解决它。有人可以向我解释发生了什么事吗? 干杯 克里斯CSS块位置问题

+0

哪些浏览器(和版本)您使用​​的? – 2011-06-14 09:56:52

+0

我试过Firefox 3.6,4.0和Chrome 12和iOS Safari – 2011-06-14 09:58:45

回答

2

它实际上有left-padding而不是保证金。这是ul元素的默认样式。要取消它,您应该在样式声明中放入padding:0;

一对夫妇的建议:

  • 使用Firebug的发展,这是远远优于WebDeveloper附加。我能够立即发现使用它的问题
  • 使用CSS重置样式表,删除这些默认样式声明并在浏览器中对其进行规范化(默认值在浏览器之间不一致)。最有名的是CSS reset by Eric Meyer,我个人在我开发的每个网站上使用。
+1

默认情况下,大多数情况下,浏览器之间的合理一致,但列表是他们没有的地方之一。 IE使用边距缩进列表;其他浏览器使用填充。 – 2011-06-14 10:01:51

+0

感谢您的输入,Firebug很棒1 – 2011-06-14 10:16:10

+0

为什么downvote ...? – 2011-06-14 10:30:33

2

这应该修复它

#tweets ul { padding: 0px; } 

ul S按默认在大多数浏览器(即WebKit的40像素)有一个左填充。

+0

@downvoter:我想知道,为什么你低估了。如果我的回答错误,我也喜欢学习。 – DanielB 2011-06-14 10:20:49

+0

也许它被拒绝了,因为tweet是一个id,而不是一个类?如果你解决它,也许它会再次投票? – 2011-06-14 10:26:36

+1

@酷夏威夷thx很多。这可能确实是重点,而倒退是有道理的。这就是为什么我赞赏对反对意见的评论。知道故障比想知道更好:-)你帮我解决了问题。 – DanielB 2011-06-14 10:39:40

1

由于您的css选择器,您的样式没有被应用。你的选择是

.twitter ul, li {} 

,而你的HTML元素是

<div id="tweets"> 
    <ul class="twitter">...</ul> 
</div> 

你的CSS选择器说“的风格所有UL和李是用‘推特’类中的任何元素的后代”。由于ul不包含在具有“twitter”类的祖先元素中,因此不会使用该规则进行样式设计。

如果您希望规则实际应用,你可以只使用选择

.twitter {...} 

,或者你可以重新类“推特”父DIV,

<div id="tweets" class="twitter"> 
    <ul class="twitter">...</ul> 
</div> 

,或者你可以使用此选择器代替,

#tweets ul, li {...} 

它更接近您的原始选择器。

2

@chris robinson;我检查了你的twitter/style.css你的主要问题是你错误地声明了CSS,为什么这些属性不起作用。

错误的CSS声明:

.twitter #tweets { 
    background: #111; 
    padding: 0 0px; 
    padding-bottom:20px; 
    text-align:left; 
    -moz-border-radius: 5px; 
    border-radius: 5px; 
    border-color:#AAA; 
    border-style:solid; 
    border-width:2px; 
    margin:0px; 
} 

.twitter ul, li { 
    list-style-type: none; 
    background: #222; 
    -moz-border-radius: 5px; 
    border-radius: 5px; 
    border-color:#AAA; 
    border-style:solid; 
    border-width:1px; 
    padding-left:0px; 
    padding-right:0px; 
    padding-bottom:0px; 
    margin:0px; 
    -webkit-padding-start:10x; 
} 

.twitter #tweets a { 
    color: #AAA; 
    text-decoration:none; 
} 

.twitter #tweets a:hover { 
    color: #AAA; 
} 

,如果你检查你的HTML你的Twitter类是境内关外#tweets它不是。所以,首先纠正你的CSS。

正确的CSS:

#tweets .twitter { 
     background: #111; 
     padding: 0 0px; 
     padding-bottom:20px; 
     text-align:left; 
     -moz-border-radius: 5px; 
     border-radius: 5px; 
     border-color:#AAA; 
     border-style:solid; 
     border-width:2px; 
     margin:0px; 
    } 

    #tweets ul.twitter li { 
     list-style-type: none; 
     background: #222; 
     -moz-border-radius: 5px; 
     border-radius: 5px; 
     border-color:#AAA; 
     border-style:solid; 
     border-width:1px; 
     padding-left:0px; 
     padding-right:0px; 
     padding-bottom:0px; 
     margin:0px; 
     -webkit-padding-start:10x; 
    } 

    #tweets .twitter a { 
     color: #AAA; 
     text-decoration:none; 
    } 

    #tweets .twitter a:hover { 
     color: #AAA; 
    } 
+0

@Chris我认为sandeep已经完成了修复选择器的足够工作。另一个提示是,虽然不使用以短划线“ - ”开头的css规则,但这些规则不是标准规则,可能不会被正式接受到css标准中。 – 2011-06-14 10:31:06

+0

对不起。在他发布修补程序之前,我跳了一下枪并发布了评论。我只是试验-webkit填充的东西,但我的印象是,在Firefox中有圆角边框,你需要'-moz-border-radius'规则? – 2011-06-14 10:53:16

+0

@Chris -moz-border-radius被Firefox 4+中的标准边界半径规则替代,请参阅http://developer.mozilla.org/en/css/border-radius。为什么你只想为Firefox开发呢?无论如何,你可以看到一个例子jsfiddle我在h​​ttp://jsfiddle.net/V4YCn/使用border-radius做了。它适用于IE 9,Chrome和Opera。我使用Firefox 5测试版测试了它,它工作正常,我相信它也可以用于Firefox 4。我在Safari上试了一下,并没有发挥作用,这是令人惊讶的。不过,这是5个浏览器中的4个... – 2011-06-15 06:04:07