css height %百分比不生效的解决办法

存在的问题:

  1. 父元素没有固定高度 所以div无法计算百分比

  1. vue 项目中body和html都添加了 100%高度但是仍不能生效

  1. 当son元素为absolute等脱离文档流定位时 根据 第一个拥有 relactive的盒子决定大小 如没有则会以html为定位

解决办法:

  1. 给body,html添加height:100% 或者给父亲盒子增加上固定高度

  1. vue 项目需要给#app也同样添加上100%

  1. 利用相对定位/绝对定位等脱离文档流方法 全屏

  1. 利用 flex布局 来实现全屏

  1. 使用vh/vw + calc实现 布局

🌰:

  1. vue 项目需要给#app也同样添加上100%

  1. 根据第一个拥有 相对定位的元素确定大小

如下图所示 father根据html的10%的高度 而son又根据father的50%的高度

如果我们 给son 添加上绝对定位呢?

可以看到 son的高度沾满了半块屏幕 这是因为 absolute定为都是根据拥有relative的高度宽度计算的

如果父亲盒子没有 relative相对定位 那么会逐层向上查找直到 html/body 再根据html的高度进行计算(我们可以利用绝对定位/相对定位来 跳跃父层关系 )

  1. 利用flex 解决

son1和son2 以2:3的方式 分割father的50%

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto

例如:flex:2 = { flex-grow:2;flex-shrink:2;flex-basis:auto)

  1. 利用vh ----1vh=屏幕可视区/100 也就是将屏幕可视区平均氛围100份 1vh为其中的一份

calc ---为计算函数 (注意⚠️ 两个计算中 符号左右需要添加上空格 )

使用vh 就算 father并没有设置高度也可以通过 计算屏幕可视区的高度来计算

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当使用height: 100%时,元素的高度并不会自动适应父元素的高度。这是因为在CSS中,百分比的高度需要根据父元素容器的高度来计算。如果父元素没有明确设置高度,那么子元素的高度将无法正确计算。\[2\] 为了解决这个问题,可以尝试以下几种方法: 1. 第一种方法是将父元素设置为position: relative,子元素设置为position: absolute。这样子元素的高度将相对于父元素进行计算,并且可以使用height: 100%来设置子元素的高度。\[3\] 2. 第二种方法是给父元素添加一层容器,并使用flex布局。将子元素的高度设置为50%,并且父元素的高度将根据子元素的高度自动调整。\[3\] 3. 第三种方法是给父元素添加display: grid属性。这样子元素的高度将根据网格布局进行计算,并且可以使用height: 100%来设置子元素的高度。\[3\] 4. 第四种方法是给子元素添加min-height: inherit属性。这样子元素的最小高度将继承父元素的高度,并且可以使用height: 100%来设置子元素的高度。\[3\] 通过使用这些方法,你可以解决height: 100%不生效的问题,并使子元素的高度正确适应父元素的高度。 #### 引用[.reference_title] - *1* [设置height:100%无效的原因以及两种解决方法](https://blog.csdn.net/wgh4318/article/details/122308108)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [关于height:100%不生效的问题](https://blog.csdn.net/Wang1996332/article/details/103169509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [关于父元素设置min-height,子元素设置 height 100% 不生效的问题](https://blog.csdn.net/G_ruirui/article/details/112556624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值