父元素width为100%,设置padding,出现滚动条
2018-03-15 10:46
441 查看
父元素设置宽度为100%,子元素也是100%,在设置父元素padding时会出现滚动条
原因:元素的盒子去渲染的时候,是先确定下来content的大小,再去弄padding的大小。整个由盒子的内部向外部计算渲染。如果content是100%了,它又要想办法去弄padding来满足你,那对不起了,来个横向滚动条把,或者整个元素的边界扩张了。解决:1.父元素不设置宽度
拓展:
W3C盒模型
IE盒模型
从上图可以看到 ie 盒子模型的范围也包括 margin、border、padding、content,和标准 w3c 盒子模型不同的是:ie 盒子模型的 content 部分包含了 border 和 pading。两者的不同体现在width和height上IE:width=content+padding+border border-boxW3C:width=content 例:一个盒子的 margin 为 20px,border 为 1px,padding 为 10px,content 的宽为 200px、高为 50px,假如用IE模型解释,那么这个盒子需要占据的位置为:
宽 20*2+1*2+10*2+200=262px、高 20*2+1*2*10*2+50=112px,盒子的实际大小为:宽 1*2+10*2+200=222px、高 1*2+10*2+50=72px;假如用w3c盒子模型,那么这个盒子需要占据的位置为:
宽 20*2+200=240px、高 20*2+50=70px,盒子的实际大小为:宽 200px、高 50px。
那应该选择哪中盒子模型呢?当然是“标准 w3c 盒子模型”了。怎么样才算是选择了“标准 w3c 盒子模型”呢?很简单,就是在网页的顶部加上 doctype 声明。假如不加 doctype 声明,那么各个浏览器会根据自己的行为去理解网页,即 ie 浏览器会采用 ie 盒子模型去解释你的盒子,而 ff 会采用标准 w3c 盒子模型解释你的盒子,所以网页在不同的浏览器中就显示的不一样了。反之,假如加上了 doctype 声明,那么所有浏览器都会采用标准 w3c 盒子模型去解释你的盒子,网页就能在各个浏览器中显示一致了
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>父元素width为100%,设置padding,出现滚动条</title> <style type="text/css"> *{ margin:0; padding:0; } .box{ width:100%; background: #ccc; padding:20px; } .box1{ width:100%; background: #eee; height: 200px; } </style> </head> <body> <div class="box"> <div class="box1"></div> </div> </body> </html>
原因:元素的盒子去渲染的时候,是先确定下来content的大小,再去弄padding的大小。整个由盒子的内部向外部计算渲染。如果content是100%了,它又要想办法去弄padding来满足你,那对不起了,来个横向滚动条把,或者整个元素的边界扩张了。解决:1.父元素不设置宽度
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>父元素width为100%,设置padding,出现滚动条</title> <style type="text/css"> *{ margin:0; padding:0; } .box{ /*width:100%;*/ background: #ccc; padding:20px; } .box1{ width:100%; background: #eee; height: 200px; } </style> </head> <body> <div class="box"> <div class="box1"></div> </div> </body> </html>2.设置box-sizing:border-box
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>父元素width为100%,设置padding,出现滚动条</title> <style type="text/css"> *{ margin:0; padding:0; } .box{ width:100%; background: #ccc; padding:20px; box-sizing: border-box; } .box1{ width:100%; background: #eee; height: 200px; } </style> </head> <body> <div class="box"> <div class="box1"></div> </div> </body> </html>原因是因为使用CSS3中的盒模型,设置其按照IE的标准去解析,及width=padding+border+content。就能正确显示了。
拓展:
W3C盒模型
IE盒模型
从上图可以看到 ie 盒子模型的范围也包括 margin、border、padding、content,和标准 w3c 盒子模型不同的是:ie 盒子模型的 content 部分包含了 border 和 pading。两者的不同体现在width和height上IE:width=content+padding+border border-boxW3C:width=content 例:一个盒子的 margin 为 20px,border 为 1px,padding 为 10px,content 的宽为 200px、高为 50px,假如用IE模型解释,那么这个盒子需要占据的位置为:
宽 20*2+1*2+10*2+200=262px、高 20*2+1*2*10*2+50=112px,盒子的实际大小为:宽 1*2+10*2+200=222px、高 1*2+10*2+50=72px;假如用w3c盒子模型,那么这个盒子需要占据的位置为:
宽 20*2+200=240px、高 20*2+50=70px,盒子的实际大小为:宽 200px、高 50px。
那应该选择哪中盒子模型呢?当然是“标准 w3c 盒子模型”了。怎么样才算是选择了“标准 w3c 盒子模型”呢?很简单,就是在网页的顶部加上 doctype 声明。假如不加 doctype 声明,那么各个浏览器会根据自己的行为去理解网页,即 ie 浏览器会采用 ie 盒子模型去解释你的盒子,而 ff 会采用标准 w3c 盒子模型解释你的盒子,所以网页在不同的浏览器中就显示的不一样了。反之,假如加上了 doctype 声明,那么所有浏览器都会采用标准 w3c 盒子模型去解释你的盒子,网页就能在各个浏览器中显示一致了
相关文章推荐
- DIV里Table的宽度设置为100%后页面出现滚动条的解决办法;DIV下移的解决办法 IE 和 FireFox 都通过
- iframe高度设置100%了,并且设置了无滚动条属性,还是出现滚动条
- iframe设置height为100%,scrolling为no,还是出现垂直滚动条
- flex vbox 当设置height = 100% 时,滚动条不出现的问题
- div设置成100% 当出现滚动条是任然希望div覆盖整个可视区域
- 100%宽度的div如果设置边框,就会出现横向滚动条,怎么去掉?
- iframe高度设置100%了,并且设置了无滚动条属性,还是出现滚动条
- 使用height:100%后出现滚动条
- html,body设置高度100%和默认的滚动条
- textarea 设置width 100%和padding后会溢出
- 动态设置图片宽度为屏幕分辨率宽[并保证其不出现横向滚动条]
- css 父元素设置padding、border、margin的情况下,子元素width100%呈现情况
- 在VS2005中设置DIALOG的属性,将滚动条属性设置为TRUE,这样在界面中出现滚动条样式,但不能实现滚动
- uTorrent缓存设置,防止出现磁盘负荷100%
- div宽度设置width:100%后再设置padding或margin超出父元素的解决办法
- 设置QT中QTreeWidget的水平横向滚动条按需出现
- 100%布局的头部,内部内容960居中出现滚动条的时候,注意的小东西
- 如何去掉ListView设置Padding属性后出现的空白边距?
- input 设置 width:100% 和padding后宽度超出父节点
- 解决input宽度设置成100%与padding的冲突