问答详情
源自:3-14 编程练习

为什么只显示em背景只显示蓝色

<style type="text/css">


/*在此定义相关CSS样式*/

ul li{padding:0;margin:0;font-size:12px;}

.topList{

    width:300px;

    height:180px;

    border:1px solid #E8E8E8;

   margin:0 auto;

}

.topList ul {

  

  padding: 0 2px;

  height:28px;

}



.topList li{

   

    padding-right:2px;

    list-style-type:none;

    

   

    

}

.top em{

    

     background-color:blue;

   display:block;

     width:20px;

    height:16px;

    color:white;

    background: url( http://img.mukewang.com/53cf0fa20001d3dc00200032.jpg)no-repeat ;

     background-position:0 0;

     line-height:16px;

}

em{

    font-style:normal;

    font-size:12px;

    float:left;

  display:block;

    width:20px;

    height:16px;

    text-align:center;

    color:#333;

   background-position:-16px 0 ;

     background: url( http://img.mukewang.com/53cf0fa20001d3dc00200032.jpg)no-repeat  ;

     line-height:16px;

}


a{  

    font-size:12px;

    font-family:"微软雅黑";

}

a:link,a:visited{

    text-decoration:none;

    color:gray;

}

a:hover,a :active{

    text-decoration:none;

    color:red;

}





</style>


提问者:qq_格格_7 2017-03-16 16:38

个回答

  • 慕粉18221508921
    2017-03-16 19:51:05
    已采纳

    用上面的就可以了,我来解释下,

    1,em { }要放在上面,因为他指定了所有em标签的样式;这里逻辑就是,先给所有em设灰色背景,然后指定.top中的em背景为蓝色,而你是,先给.top下的设蓝色背景,然后给所有的em设灰色背景,所以就错了,但是错误没展示出来,因为还错了两个地方:

    2、background-position: x y ; 请看文档:x是水平方向,y是垂直方向,表示背景图片的左上角尖尖相对于对象的位置,可以理解为绝对定位,左上角距离对象x像素,右上角距离对象y像素,这里是0 -16px ;这里要把图片上移16像素,左边不动;

    http://www.w3school.com.cn/cssref/pr_background-position.asp

    3、background-position要写在background后面,或者直接在background里说明清楚,放在上面是不起作用的;如下正确:

    background: url( http://img.mukewang.com/53cf0fa20001d3dc00200032.jpg)no-repeat ;

    background-position:0 0;

    或者:background: url( http://img.mukewang.com/53cf0fa20001d3dc00200032.jpg)  no-repeat  0 -16px;

    也可以,但是:

    background-position:0 -16px;

    background: url( http://img.mukewang.com/53cf0fa20001d3dc00200032.jpg)  no-repeat ;

    不行,因为background里面包含了background-position的设置,你先设置了background-position,又在background里没有设置,不就相当于设置成0 0么,根据就近原则,自然是后面有效,background-position就成0 0了,不过这一点,我刚开始也没看出来,后来想起来了,也是学到了,谢谢你~~



  • 慕粉18221508921
    2017-03-16 19:39:20

    em{

        font-style:normal;

        font-size:12px;

        float:left;

      display:block;

        width:20px;

        height:16px;

        text-align:center;

        color:#333;

       

         background: url( http://img.mukewang.com/53cf0fa20001d3dc00200032.jpg)no-repeat  ;

         background-position:0 -16px ;

         line-height:16px;

    }

    .top em{

        

         background-color:blue;

       display:block;

         width:20px;

        height:16px;

        color:white;

        background: url( http://img.mukewang.com/53cf0fa20001d3dc00200032.jpg)no-repeat ;

         background-position:0 0;

         line-height:16px;

    }