赞
踩
现在大多数页面都是采用主体内容水平居中布局
- <body>
- <div></div>
- </body>
- div{
- width:1200px;
- margin:0 auto;
- }
但是,这种布局存在一个问题。现在的浏览器滚动条默认是overflow:auto
类型的,也就是说如果内容高度不足一屏,没有滚动条;如果超出才会出现滚动条。于是,问题来了:
margin: 0 auto
主体元素自然会做偏移——跳动产生。现在有以下三种方法解决这一问题:
1、让浏览器的垂直滚动条一直显示
body { overflow-y: scroll; }
当然这种方法就会造成即使内容高度不足一屏,浏览器右侧也会显示一条灰色的滚动条,影响用户体验。
2、当内容高度超过一屏时,在浏览器左侧同时加上一个滚动条宽的的padding或margin。
- .wrap-outer {
- margin-left: calc(100vw - 100%);
- }
或
- .wrap-outer {
- padding-left: calc(100vw - 100%);
- }
注 : 1、.wrap-outer
指的是居中定宽主体的父级。
2、calc
是CSS3中的计算,IE10+浏览器支持,IE9浏览器基本支持(不能用在background-position
上);
3、100vw
相对于浏览器的window.innerWidth
,是浏览器的内部宽度,注意,滚动条宽度也计算在内!而100%
是可用宽度,是不含滚动条的宽度。
于是,calc(100vw - 100%)
就是浏览器滚动条的宽度大小(如果有,如果没有滚动条则是0
)!左右都有一个滚动条宽度(或都是0
)被占用,主体内容就可以永远居中浏览器啦,从而没有任何跳动!
3、兼容写法
- html {
- overflow-x: hidden;
- overflow-y: auto;
- }
- body {
- width: 100vw;
- overflow: hidden;
- padding-left: calc(100vw - 100%);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。