当前位置:   article > 正文

滚动条出现挤压页面宽度,影响布局_监听宽度时忽略出现滚动条的影响

监听宽度时忽略出现滚动条的影响

问题描述:当页面突然出现滚动条的时候,页面会突然被挤压,因为滚动条也是需要占位的呀。

解决思路:现在目标就是滚动条出现,但是内容位置不变,依然不动。

1、新属性overlay

chrome下overflow有个新的属性值overlay,这个属性简直就是为了这个问题而生,他和auto有点像,但是区别就是在触发滚动条时候并不挤压空间。但是非常遗憾,这个属性值目前只有chrome支持。

  1. html {
  2. overflow-y: overlay;
  3. }

2、margin-right: calc(100% - 100vw)

100vw相对于浏览器的window.innerWidth,是浏览器的内部宽度,注意,滚动条宽度也计算在内!而100%是可用宽度,是不含滚动条的宽度。没有滚动条的时候,相当于margin-right:0,没什么影响;有滚动条的时候就相当于margin-right:-17px(17px就是滚动条的宽度啦),被滚动条占据了17px后,内容再重新往右延伸了17px,效果如同overflow:overlay,很完美,并且兼容性还不错,起码高版本的ie和ff都没问题了。

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. html {
  6. overflow-y: auto;
  7. overflow-x: hidden;
  8. }
  9. .container {
  10. height: 2000px;
  11. margin-right: calc(100% - 100vw);
  12. padding: 17px;
  13. background-color: #00b83f;
  14. text-align: right;
  15. }

3、绝对定位--来自张鑫旭大佬

:root选择器:对于 HTML 来说,:root 表示 <html> 元素,除了优先级更高之外,与 html 选择器相同。

  1. html {
  2. overflow-y: scroll; //这是为了兼容ie8,不支持:root, vw
  3. }
  4. :root {
  5. overflow-y: auto;
  6. overflow-x: hidden;
  7. }
  8. :root body {
  9. position: absolute;
  10. }
  11. body {
  12. width: 100vw;
  13. overflow: hidden;
  14. }

本人是用第三种方法解决的,完美

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号