如何在父级p高度是auto的情况下,子级p为父级p的一半,子级p里面有个图片高度为60(图片自己的高度,并没有给图片高度)。有没有实现的可能
光阴似箭催人老,日月如移越少年。
確實描述不清,我想改問題但又怕不是題主想問的問題。試著答一下。
首先你要知道,auto、50%、em這樣的關鍵字或相對單位長度是要計算成確切的值(如px)。 如果父元素的高度是auto,那麼他是根據子元素的高度計算的。
根據題主描述,最容易想到的是:
<p id="p1" style="height:auto"> <p id="p2" style="height:50%"></p> </p>
你可以試試,這樣不管用,為什麼呢? #p1的高度是根據#p2的高度計算的。而#p2的高度是#p1的一半。這就產生了相互依賴。
而CSS中的相對單位都是根據父元素計算的,em除外,但在這裡用不上。
解決方法
如果你的圖片是確定的高度,那麼設定為#p2設定確定的padding-top是最簡單的辦法
如果圖片的高度不是確定的,就用JS吧。
問題描述的稍微有點亂、可以編輯一下問題重新說明清楚嗎、還有是用JS實作還是只能用CSS
以CSS來說,高度auto是由內容撐起的,父與子元素都沒有設定高度,那實際高度就只有那張圖片而已
總覺得怪怪的! 要實現的話透過js取得子級p的高度h,再設定父p的高度為h*2
(父auto,子級p中只有一張圖片,子p的高度也就都是圖片高度,直接設定父高120)
不可能,只有不是auto時子才能依父調整大小
你這不是雞生蛋還蛋生雞的問題麼
都沒高度的話,子p就是圖片高度
可以透過js先取得圖片的高度,再設定子p和父p的高度
確實描述不清,我想改問題但又怕不是題主想問的問題。試著答一下。
首先你要知道,auto、50%、em這樣的關鍵字或相對單位長度是要計算成確切的值(如px)。
如果父元素的高度是auto,那麼他是根據子元素的高度計算的。
根據題主描述,最容易想到的是:
你可以試試,這樣不管用,為什麼呢? #p1的高度是根據#p2的高度計算的。而#p2的高度是#p1的一半。這就產生了相互依賴。
而CSS中的相對單位都是根據父元素計算的,em除外,但在這裡用不上。
解決方法
如果你的圖片是確定的高度,那麼設定為#p2設定確定的padding-top是最簡單的辦法
如果圖片的高度不是確定的,就用JS吧。
問題描述的稍微有點亂、可以編輯一下問題重新說明清楚嗎、還有是用JS實作還是只能用CSS
以CSS來說,高度auto是由內容撐起的,父與子元素都沒有設定高度,那實際高度就只有那張圖片而已
總覺得怪怪的!
要實現的話透過js取得子級p的高度h,再設定父p的高度為h*2
(父auto,子級p中只有一張圖片,子p的高度也就都是圖片高度,直接設定父高120)
不可能,只有不是auto時子才能依父調整大小
你這不是雞生蛋還蛋生雞的問題麼
都沒高度的話,子p就是圖片高度
可以透過js先取得圖片的高度,再設定子p和父p的高度