2012-08-15 307 views
1

似乎我被困住了。 为什么下面的代码显示12px的消息,但不是50px?是不是class1有 如何修复它,如果我不允许更改*属性?即使!重要也无济于事。html css * {...}:无法更改字体大小

<html> 
    <head> 
     <style type="text/css"> 
      * 
      { 
       font-size : 12px 
      } 

      .class1 
      { 
       font-size : 50px; 
      } 
     </style> 
    </head> 
    <body> 
     <div class="class1"> 
      <span>why it is not 50px font size?</span> 
     </div> 
    </body> 
</html> 
+0

不知道为什么你不能更改星形选择器;这是糟糕的代码,并且很明显会导致问题。你不能改变它的原因是什么? – Spudley 2012-08-15 19:36:56

+0

我正在开发项目的扩展(fork)。我最好不要触摸另一个人写的css文件。 – Haradzieniec 2012-08-16 12:13:58

回答

12

这是因为*还会选择你<div><span>标签。

所以*在这种情况下更具体,因此具有优先权。

.class1 span 
{ 
    font-size : 50px; 
} 

以上是可行的。

+1

或者使用body {}而不是* {} – 2012-08-15 08:18:19

1

这应该工作

div.class1 span 
{ 
    font-size : 50px; 
} 

*将选择div中的跨度。作为子元素将删除<span>将工作。或明确的目标。

+0

谢谢。我知道。有没有更好的主意?我的意思是一旦我包含那个包含*的bad.css文件,就会破坏很多员工,所以我必须在很多div中重写很多span。有没有更好的解决方案来“取消”* {font-size:12px;}? – Haradzieniec 2012-08-15 08:02:05

+0

您可以覆盖该值,但无法取消设置。我看到覆盖该值没有问题,您甚至可以使用以逗号(,)分隔的多个选择器。针对不同的标签。 – 2012-08-15 08:03:32

+1

你可以做'.class1 * {font-size:inherit; ''但我怀疑这也可能导致问题。 – steveax 2012-08-15 08:05:36

1

*将包括<span>,所以你可以给span一个id或一个类,并应用css规则。或者不喜欢它:

.class1 span {font-size:50px;} 
1

的选择*是一个包罗万象的(意为它选择一切

因此,对于你span被选中,你需要一个更具体的选择:

.class1 span 

应该可以工作,但您也可以选择它以更具体:

div.class1 span 

或者你可以添加一个类跨度本身并与

span.class2 

:)

1

选择,或者你可以使用重要

.class1 {font-size : 50px !important;} 

的工作!例如:

http://jsfiddle.net/gWQeZ/

+0

试过了。不起作用。 – Haradzieniec 2012-08-15 08:46:23

+0

使用'!important'应始终被视为最后的手段。如果你需要它,那么通常意味着你不了解CSS优先级,或者你的CSS中有其他地方需要修复。 – Spudley 2012-08-15 19:32:28

+0

或者如果您使用的是自动生成CSS的第三方脚本,并且您需要覆盖它,或者如果您需要快速修复或者如果问这个问题的人对CSS没有足够的了解。这里的目的是提供不同的解决方案,然后他可以选择适合他的任何方法。我同意你的评论!重要的应该是最后的手段 – Razmig 2012-08-16 05:58:36