課程
/前端開發
/HTML/CSS
/css定位 position
后來nav height設置成了auto了,那margin-top 怎么設置高度的一半負值,達到垂直方向上居中
2019-12-03
源自:css定位 position 4-2
正在回答
假如父元素為div,子元素為ul,div高度之所以設置成auto,是因為一開始不知道里面有幾個li,這樣的話,div的高度可以由li來撐開。然后就分為兩種情況了:
第一種,你知道每個li的高度,且知道一共多少個li,假如每個li的高度為40px,一共3個li,那么div的高度就是120px。相應的,給div設置margin-top:-60px就可以達到垂直方向居中的效果。
第二種,你無法確定li的高度和數量的時候,那么div的高度也就無從得知。這個時候可以這么給div設置:
div{
????position:absolute;
????top:50%;
????transform:translateY(-50%);
}
再給div設置top:50%之后,加上transform:translateY(-50%),這句代碼的意思是div沿著垂直方向向下移動自身高度-50%的距離,實際效果也就是div會向上移動自身高度的50%,這樣div在垂直方向上就居中了。
其實比較建議這種設置方法,無論div的高度是否知道,這樣都可以使div絕對垂直居中。
舉報
老師帶你了解CSS中定位的知識,并運用到實際案例中。
2 回答章節4-1中margin的疑問
1 回答我的二級欄目不能居中
2 回答父子元素position中的absolute和relative問題
4 回答為什么我的代碼和老師的一樣,但是效果不一樣???導航不能居中????
3 回答軟件問題?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-12-30
假如父元素為div,子元素為ul,div高度之所以設置成auto,是因為一開始不知道里面有幾個li,這樣的話,div的高度可以由li來撐開。然后就分為兩種情況了:
第一種,你知道每個li的高度,且知道一共多少個li,假如每個li的高度為40px,一共3個li,那么div的高度就是120px。相應的,給div設置margin-top:-60px就可以達到垂直方向居中的效果。
第二種,你無法確定li的高度和數量的時候,那么div的高度也就無從得知。這個時候可以這么給div設置:
div{
????position:absolute;
????top:50%;
????transform:translateY(-50%);
}
再給div設置top:50%之后,加上transform:translateY(-50%),這句代碼的意思是div沿著垂直方向向下移動自身高度-50%的距離,實際效果也就是div會向上移動自身高度的50%,這樣div在垂直方向上就居中了。
其實比較建議這種設置方法,無論div的高度是否知道,這樣都可以使div絕對垂直居中。