欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

高度占页面或者占div百分比无效是什么情况?

程序员文章站 2022-04-28 18:25:22
...
1. 你曾经是否说想要 高度占页面或者占div百分比无效的问题,相信你也搜索过了,就是说 需要 设置父亲父亲一直到祖宗html都要设置百分比,才有效果。

总之一句话:想用百分比设置他的高度,则它的父亲中至少有一个是固定高度,不然的话 全部父亲直到祖宗html(因为html外面就是浏览器,它是有高度的)都必须设置上百分比。 当然要排除那些脱离文档流的div,比如position:absolute,fixed,可以认为他们的父级就是浏览器,所以height百分比总是有效的,因为浏览器的高度是可以直到的啊。

2. 有时候 并不是直接用百分比,可能有部分margin啊,padding啊需要扣除掉,这时候 可以用 height: calc(100% - 1rem); height: calc(50% - 2px); 等等,这种情况有效的条件 也是必须是 第一点说明的,因为它也是用到了height百分比啊。

在如今响应式布局的要求下,很多能自动调整尺寸的元素能够做到高宽自适应,如img,通过{width:50%;height:auto;}实现图片高度跟随宽度比例调整。

然而,用的最多的标签一哥Div却不能做到自动调整(要么从父级继承,要么自行指定px,要么给百分比!但是这个百分比是根据父级的高度来计算的,根本不是根据元素自身的宽度,那么就做不到Div的宽高达成一定的比例=-=)。

要实现这种功能(div的高度:宽度=1:1),通过各种加Buff,得知有以下几种处理方式

1,直接指定div的宽高+zoom来实现自适应

div{width:50px;heigth:50px;zoom:1.1;}

这样能达到初步的等宽高div,但是局限性太大,PASS!

2,通过js动态判断div的宽度来设置高度

div{width:50%;}

window.onresize = function(){div.height(div.width);}

也能实现等宽高div,但是总觉得有点别扭,PASS!

3,通过宽高单位来设置

div{width:20vw;height:20vw;/*20vw为viewport width的20%*/}

但是很多设备不支持这个属性,兼容性太差,PASS!

4,通过float来设置

#aa{background:#aaa;;}
#bb{background:#ddd;;float:left}
#cc{background:#eee;;float:right}

<div id="aa">父div
  <div id="bb">子div</div>
  <div id="cc">子div</div>
  <div style="clear:both">就是这个用于clear错误的</div>
</div>

能够让父级元素aa根据子元素的高度自动改变高度(在子元素里放置自适应元素)来调整高宽比一致,然而太麻烦,PASS!

以上就是高度占页面或者占div百分比无效是什么情况?的详细内容,更多请关注其它相关文章!