您的代码无法正常工作的主要原因是因为您使用position: absolute
作为#textprev
,使其退出当前元素流程,所以您需要删除position: absolute
。这将使width
到正确的一个,但它会看起来像它不存在,因为默认<p>
是block element
,所以它将在新行,但因为您设置height
为#text1
,并使用overflow: hidden
,它不能被看到。
你需要使它的工作是改变style
您paragraph
,与您现有的HTML
<div id="prev"></div>
<div id="text1">
<p id="textup" class="side">Before hovering (1st paragraph)</p>
<p id="textprev" class="side">After (2nd paragraph)</p>
</div>
和修改CSS
到
#prev {
position: relative;
float: right;
background: blue;
width:50px;
height:50px;
}
#prev:hover ~#text1 #textup {
max-width: 0px;
opacity: 0;
visibility: hidden;
transition: all ease-in-out .5s;
}
#prev:hover ~#text1 #textprev {
max-width: 200px;
opacity: 1;
visibility: visible;
transition: all .5s ease-in-out .5s;
}
#text1 {
position: relative;
float: right;
height: 50px;
max-width: 500px;
background: grey;
overflow: hidden;
}
#textup {
visibility: visible;
background: red;
opacity:1;
max-width:500px;
transition: all .5s ease-in-out .5s;
}
#textprev {
visibility: hidden;
max-width:0px;
background: green;
opacity:0;
transition: all ease-in-out .5s;
}
.side {
text-overflow: clip;
white-space: nowrap;
overflow: hidden;
color: white;
display:inline-block;
}
更改paragraph
与.side
类是一个inline-block
元素,这将使它出现在同一行中,如果有空间的话。然后,还需要设置max-width
为#textup
上normal
和hover
状态,所以transition
可以工作(如果你申报max-width
只在一个国家将无法正常工作),那么就normal
和不同的过渡hover
状态一个delay
,所以width
不奇怪的方式改变。 (上normal
和hover
状态移除#textup
和#textprev
的transition
,然后在.side
添加transition: all ease-in-out .5s;
看看我通过改变width
的不可思议的方式平均)
下面是一个Updated Fiddle来看看它是如何工作的。
去,因为它是先帮我了解的问题是接受这一个。漂亮的修复,谢谢。 – itsqualtime 2014-10-31 06:21:19