在CSS中悬停时更改填充

时间:2013-01-15 03:16:41

标签: css css3 css-selectors

好的伙伴们,诺布在这里,编写我的第一个joomla模块(或者尝试无论如何!)。令人惊讶的是,我的css样式存在一些问题,我确定它与我的选择器有关,而且我对发生的事情缺乏了解!

基本上我试图让其中一个li的padding-right在悬停时生长,效果正在发挥作用,但目前这两个都在增长而不仅仅是我正在徘徊的那个。

任何帮助都会很棒!

HTML

<div>
<ul id="social">
<li>one</li>
<li>two</li>
</ul>
</div>

CSS

#social{
    position:fixed;
    z-index:1000;
    top:50%;
    right:0px;
    list-style:none;
        }

#social li{
    padding-right: 5px;
    padding-top:5px;
    padding-bottom:5px;
    padding-left:5px;
    background-color: #202020;
    border-radius: 4px 0 0 4px;
    margin-top:15px;
    -moz-transition: padding-right .3s ease-in;
     -o-transition: padding-right  .3s ease-in;
     -webkit-transition: padding-right  .3s ease-in;
     transition: padding-right  .3s ease-in;
    }

#social li:hover{
    padding-right: 25px;
    padding-top:5px;
    padding-bottom:5px;
    padding-left:5px;
    }

1 个答案:

答案 0 :(得分:2)

我很确定这是因为li是一个块元素,它填充它的父元素(ul)当一个元素增长时,父元素被推出,导致另一个li填补空间。这样li的大小始终相同。

可能有更好的方法,但您可以将以下样式添加到li

float:right;
clear:both;

这是有效的,因为它将元素更改为内联元素,并使它们保持在右侧,但也将每个元素放在一个单独的行上。

另一种方法是将内联元素放在lispana)内,并将li样式更改为a,并添加li样式以简单设置text-align:right。你可能想要一些其他样式,但我只是做了足够的功能来获得功能。

<div>
<ul id="social">
  <li><a href='#'>one</a></li>
  <li><a href='#'>two</a></li>
</ul>
</div>

#social{
    position:fixed;
    z-index:1000;
    top:50%;
    right:0px;
    list-style:none;
        }

#social li{
  text-align:right;
}

#social a{
    padding-right: 5px;
    padding-top:5px;
    padding-bottom:5px;
    padding-left:5px;
    background-color: #202020;
    border-radius: 4px 0 0 4px;
    margin-top:15px;
    -moz-transition: padding-right .3s ease-in;
     -o-transition: padding-right  .3s ease-in;
     -webkit-transition: padding-right  .3s ease-in;
     transition: padding-right  .3s ease-in;
    }

#social a:hover{
    padding-right: 25px;
    padding-top:5px;
    padding-bottom:5px;
    padding-left:5px;
    }