1、在如今响应式布局的要求下,很多能自动调整尺寸的元素能够做到高宽自适应,如img,通过{width:50%;height:auto;}实现图片高度跟随宽度比例调整。
2、然而,用的最多的标签一哥Div却不能做到自动调整(要么从父级继承,要么自行指定px,要么给百分比!但是这个百分比是根据父级的高度来计算的,根本不是根据元素自身的宽度,那么就做不到Div的宽高达成一定的比例。
3、要实现这种功能(div的高度:宽度=1:1),通过各种加Buff,得知有以下几种处理方式:直接指定d足毂忍珩iv的宽高+zoom来实现自适应div{width:50px;heigth:50px;zoom:1.1;}这样能达到初步的等宽高div,但是局限性太大。
4、通过js动态判断div的宽度来设置高度div{width:50%;}window.onresize = function(){div.height(div.width);}也能实现等宽高div,但是总觉得有点别扭。
5、通过宽高单位来设置div{width:20vw;height:20vw;/*20vw为viewport width的20%*/}但是很多设备不支持这个属性,兼容性太差,。
6、能够让父级元素aa根据子元素的高度自动改变高度(在子元素里放置自适应元素)来调整高宽比一致,然而太麻烦。终于到最终大杀器了,通过padding来实现此功能。通过以上几个方案的搏皋咬夼实验,发现宽度的自适应是根据viewport的width来调整的,比如{width:50%}就是浏览器可视区域的50%,resize之后也会自动调整。