我试图在无序列表中创建列表项的效果。
基本上,当你把鼠标悬停在列表上时,它的大小调整为2px的内边距。虽然这是正确的,但它也影响了列表项的整体尺寸,从而将其他列表元素推到右边,并将下面的div推下2px。有人知道解决这个问题的方法吗?
我想让列表项在悬停期间增加2px的填充,而不影响它周围的任何其他元素。
您可以在jsfiddle上找到这里和下面的代码:
HTML<div id="info">
<ul class="projects">
<li class="site wmhr"><a href="#">$</a>
<p>What's My Hourly Rate</p>
</li>
<li class="site proud"><a href="#">P</a>
<p>PROUD</p>
</li>
<li class="site mdy"><a href="#">M</a>
<p>Manda Dougherty Yoga</p>
</li>
<li class="site rr"><a href="#">R</a>
<p>Responsive Resume</p>
</li>
<li class="site dp"><a href="#">D</a>
<p>designpairs (in progress)</p>
</li>
</ul>
</div>
CSS .projects {
margin: 0;
padding: 0 0 50px 0;
}
.projects li {
display: inline-block;
list-style: none;
width: 70px;
height: 70px;
margin: 50px 20px 20px 0;
border: 4px solid #555;
border-radius: 50%;
font-size: 2em;
text-align: center;
line-height: 70px;
background: #414141;
-webkit-transition: all .2s ease;
-moz-transition: all .2s ease;
-ms-transition: all .2s ease;
-o-transition: all .2s ease;
transition: all .2s ease;
}
.projects p {
font-size: .850rem;
line-height: 1.500em;
}
.projects li:hover {
padding: 2px;
display: inline-block;
list-style: none;
border-radius: 50%;
line-height: 71px;
}
.projects li a {
font-family:'Montserrat', sans-serif;
color: #fff;
text-decoration: none;
}
.wmhr:hover {
background: #66CC6E;
border: 4px solid #57ac5e;
}
.proud:hover {
background: #5882c2;
border: 4px solid #4b6da2;
}
.mdy:hover {
background: #fec601;
border: 4px solid #ddad03;
}
.rr:hover {
background: #797b96;
border: 4px solid #606176;
}
.dp:hover {
background: #475161;
border: 4px solid #38404d;
}
如果你不希望项目移动,那么你必须通过减少其他尺寸来抵消填充,或者改变布局结构以不使用内联布局。
这是jsFiddle的一个版本,它使用边距的减少来抵消填充的增加。悬停的项目变大,但其他项目不移动。
.projects li:hover {
padding: 2px;
display: inline-block;
list-style: none;
border-radius: 50%;
line-height: 71px;
margin: 48px 18px 18px 0;
}
注意,我也改变了默认的左边距为2px,所以我可以把它减少到0,因为我讨厌使用负边距(它们有时会导致对象重叠,从而引入意想不到的行为)。
http://jsfiddle.net/jfriend00/6jjcg/我会使用CSS转换属性,而不是添加填充和调整周围
.projects li:hover {
transform: scale3d(1.2,1.2,1);
}
使用scale3d
而不是简单的scale
,因为scale3d
使用硬件加速。您还需要添加-webkit
和-moz
前缀以获得更好的兼容性。