我知道还有其他问题可以解答这个问题。但我的问题特别针对我的问题。
<html>
<body>
<div id="hello">
<div id="s1"></div>
<div id="s2"></div>
<div id="s3"></div>
<div id="s4"></div>
</div>
</body>
<style>
#hello
{
top : 0;
left : 0;
width : 100%;
height : 100%;
/*overflow : hidden;*/
background : #ccc;
}
#s1,#s2,#s3,#s4
{
position: relative;
display : inline-block;
height : 100%;
width : 24.8%;
padding : 0;
margin : 0;
transition : width 0.5s;
}
#s1
{background : red;}
#s2
{background : yellow;}
#s3
{background : blue;}
#s4
{background : green;}
#s1:hover
{width : 28.8%;}
#s1:hover + #s2
{width : 20.8%;}
#s2:hover
{width : 28.8%;}
#s2:hover + #s3
{width : 20.8%;}
#s3:hover
{
width : 28.8%;
}
#s3:hover + #s4
{
width : 20.8%;
}
#s4:hover
{
width : 28.8%;
}
#s4:hover + #s3
{
width : 20.8%;
}
除了最后一个div s4之外,它在任何地方都有效。 div s4在悬停时越来越大,但div s3并没有越来越小。谢谢你的回复。
我会设置一个jsfilddle,但似乎无法让它工作。
答案 0 :(得分:3)
您可以使用jQuery来执行此操作。
$('.s').hover(function() {
$(this).css('width', '29%');
($(this).index() == $('.s').length - 1) ? $(this).prev().css('width', '21%'): $(this).next().css('width', '21%');
},
function() {
$(this).css('width', '25%');
($(this).index() == $('.s').length - 1) ? $(this).prev().css('width', '25%'): $(this).next().css('width', '25%');
})
#hello {
top: 0;
left: 0;
width: 100%;
height: 100%;
/*overflow : hidden;*/
background: #ccc;
}
#s1, #s2, #s3, #s4 {
position: relative;
display: inline-block;
height: 100%;
width: 25%;
padding: 0;
margin: 0;
transition: width 0.5s;
}
#s1 {
background: red;
}
#s2 {
background: yellow;
}
#s3 {
background: blue;
}
#s4 {
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hello">
<div class="s" id="s1">s1</div
><div class="s" id="s2">s2</div
><div class="s" id="s3">s3</div
><div class="s" id="s4">s4</div>
</div>