一、相同点
大多数情况下,两者作用是一样的。
① 父容器width/height: auto
,无论width/height:100%
或者width/height:inherit
表现都是auto。
② 父容器width/height: 100px
,无论width/height:100%
或者width/height:inherit
表现都是100px
高。
例如如下代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> .outer { width: 200px; height: 200px; border: 5px solid #cd0000; margin: 10px; } .height-100 { width: 100%; height: 200px; background-color: #beceeb; } .height-inherit { width: inherit; height: 200px; background-color: #beceeb; } </style> </head> <body> <div class="outer"> <div class="height-100"></div> </div> <div class="outer"> <div class="height-inherit"></div> </div> </body> </html>
效果如下所示:
二、不同点
当子元素为绝对定位时,父元素的position值为static时,由于子元素脱离了文档流,宽度设置为100%即和body的宽度一致了。
如果设置width:inherit的时候,浏览器会将父盒子的宽度赋值给他。
如下代码所示:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> .outer { width: 200px; height: 200px; border: 5px solid #cd0000; margin: 10px; } .height-100 { position: absolute; width: 100%; height: 200px; background-color: #beceeb; } .height-inherit { position: absolute; width: inherit; height: 200px; background-color: #beceeb; } </style> </head> <body> <div class="outer"> <div class="height-100"></div> </div> <div class="outer"> <div class="height-inherit"></div> </div> </body> </html>
效果如下所示:
解决绝对定位脱离文档流从而导致宽度为body宽度的问题,在父元素上加position:relative