2012-10-23 23 views
2

我想浓缩一下CSS,但是我碰到了这个问题。我正在使用CSS背景为图片换出一些文本链接,并带有一个简单的滚动效果。图像的高度都是相同的(除了每个div中的第一个),所以我试图用2条CSS规则来处理它们,其中一条适用于所有这些规则,另一条适用于较大的第一条链接。这里有一个例子:选择一个类中的所有元素,不管ID是什么

<div id="div1" class="common"> 
    <a id="link0" class="big" href="link"></a> 

    <a id="link1" href="link"></a> 

    <a id="link2" href="link"></a> 

    <a class="class1" href="link"></a> 
    <a id="link3" href="link"></a> 
</div> 
<div id="div2" class="common"> 
    ... 
</div> 

依此类推。我使用下面的CSS:

.class1 
{ 
    background:url(images/pdf.png); 
    display:block; 
    height:38px; 
    width:39px; 
} 

.common a:hover 
{ 
    background-position:0 -38px; 
} 

.common a.big:hover 
{ 
    background-position:0 -117px; 
} 

#div1 
{ 
    background:url(images/bg1.png); 
} 

#link0 
{ 
    background:url(images/big1.png); 
    display:block; 
    height:117px; 
    width:964px; 
} 

#link1 
{ 
    background:url(images/1_1.png); 
    display:block; 
    height:38px; 
    width:425px; 
} 

#link2 
{ 
    background:url(images/1_2.png); 
    display:block; 
    height:38px; 
    width:425px; 
} 

#link3 
{ 
    background:url(images/1_3.png); 
    display:block; 
    height:38px; 
    width:425px; 
} 

的问题是,这似乎并没有给background-position规则适用于具有ID的链接(#link0,#链接1等),但它并选择一个链接,没有ID(.class1)。如果我将.common a:hover选择器更改为#div1 a:hover(如果有效),但是我必须为每个div都有一个规则,这与我正在尝试执行的操作相反。

我在做什么错?我不能使用JQuery,它必须是纯CSS。

回答

0

对于这一点,你有你的ID link0定义背景图像代替背景,链接1等这样写:

#link0 
{ 
    background-image:url(images/big1.png); 
} 

#link1 
{ 
    background-image:url(images/1_1.png); 
} 

#link2 
{ 
    background-image:url(images/1_2.png); 
} 

#link3 
{ 
    background-image:url(images/1_3.png); 
} 
+0

大,工程完全按照我想它。为什么这个工作呢?是因为**背景**是否将**背景位置**值重新应用于null? – jorbas

+0

如果你只是用一个url设置一个'background',剩下的部分定义就会被其余的默认值填充'background:url(你的url)重复0 0透明;' – Reflective

+0

对,而且因为它们是ID选择器,它们有优先权在我用来改变图像的类选择器上,所以用默认值覆盖'background-position:...'值。 – jorbas

相关问题