继承CSS如何阻止它?

时间:2013-11-01 17:19:56

标签: html css css3

我是CSS的新手,我知道我遇到的问题是什么,但我无法弄清楚如何阻止它。

我有一个id footer的元素,另一个元素在socialmedia的类中。我正在使用精灵来处理媒体图标。我遇到的问题是#footer ul li的填充(padding: 9px 0px 9px 13px)由.socialmedia继承。

我尝试添加.socialmedia ul li {margin: 0px; padding: 0px;}来阻止它,我还添加了!Important但是填充似乎仍然可以通过。

我想从社交媒体图标中删除13px的左侧填充,因此它们不是那么间隔。有人可以告诉我我做错了吗?

如果你想在这里看到它,我创建了一个JFiddle:http://jsfiddle.net/2Nv59/3/

HTML:

<div id="footer">
        <ul>
    <li><a href="#">Home</a></li>
            <li><a href="#">Company Overview</a></li>
            <li><a href="#">Our Services</a></li>
            <li><a href="#">Registration</a></li>
            <li><a href="#">News & Blog</a></li>
            <li><a href="#">Links</a></li>
            <li><a href="#">Contact us</a></li>
        </ul>

        <div class="FooterAddress"><strong>ABC Comp</strong><br>555 My Street.<br>Boonton, CA 07005<br>1 (800) 555-1111<br><br>

          <div class="socialmedia">
            <ul>
                <li><a href="http://facebook.com" title="Be our friend" target="_blank" class="facebook"></a></li>
                <li><a href="http://www.linkedin.com" title="Let's connect" target="_blank" class="linked"></a></li>
                <li><a href="http://www.twitter.com" title="Follow us!" target="_blank" class="twitter"></a></li>
            </ul>
          </div>

       </div>


    </div>

CSS:

/* Footer */

#footer {background-color: #3B3014; height: 150px; margin-top: 10px;}
#footer ul {padding: 0px; margin: 0px;}
#footer ul li{display: inline-block; padding: 9px 0px 9px 13px;}
#footer ul li a {text-decoration: none; color: #fff; font-weight: bold;font-size: 11px;}
#footer ul li a:hover {text-decoration: none; color: #FF6600; font-weight: bold;}
.FooterAddress {float: right; color: #FFC50B; font-size: 11px; margin-right: 13px; margin-top:-20px; text-align:right;}
.developedby {float: left; color: #fff; font-size: 11px; margin-left: 13px; margin-top: 94px;}
.developedby a {color: #FFC50B; text-decoration:none;}
.developedby a:hover {color: #CCC;cursor:hand;}

/* Soecial Media Sprites */
.nopadding {padding: 0px;float: right; color: #fff; background: #000;}
.socialmedia ul li {margin: 0px; padding: 0px;}
.socialmedia ul li a {display: block; width: 26px; height: 27px; background: url(../images/socialmedia_sprite_sm.png) no-repeat; padding: 0px;}
.socialmedia ul li:last-child {margin-right: 0;}

.socialmedia a.facebook {background-position: -27px -27px;}
.socialmedia a.facebook:hover {background-position: -27px 0;}
.socialmedia a.linked {background-position: -52px -27px;}
.socialmedia a.linked:hover {background-position: -52px 0;}
.socialmedia a.twitter {background-position: left bottom;}
.socialmedia a.twitter:hover {background-position: left top;}

3 个答案:

答案 0 :(得分:5)

更具体。

变化:

.socialmedia ul li {margin: 0px; padding: 0px;}

#footer .socialmedia ul li {margin: 0px; padding: 0px;}

<强> jsFiddle example

你有正确的想法,但#footer ul li规则更具体,所以它的CSS覆盖了你的其他规则。您可以在https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity

了解有关CSS特异性的更多信息

答案 1 :(得分:3)

尝试添加#footer .socialmedia ul li {margin: 0px; padding: 0px;} 要覆盖子元素中的css规则,你的css选择器应该比你试图覆盖的那个更具体。

答案 2 :(得分:1)

因为ID选择器具有比任何其他CSS规则更高的特异性,所以避免使用它更有帮助,至少在广泛适用的选择器中如#footer ul li

虽然已经提供的答案已经解决了您的问题,但最好将原始选择器更改为更具体,因为您似乎不希望将其任何样式应用于社交媒体<li>。例如:

HTML

<div id="footer">
    <ul class="navigation">
        <li><a href="#">Home</a></li>
        ....

CSS

#footer .navigation li{display: inline-block; padding: 9px 0px 9px 13px;}