您的代碼無法正常工作的主要原因是因爲您使用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