美文网首页
如何实现滚动条在各浏览器中不占用布局

如何实现滚动条在各浏览器中不占用布局

作者: 一颗蛋_ | 来源:发表于2017-09-08 17:19 被阅读0次

在一般浏览器中,当内容超出容器时,如果不是overflow:hidden,通常都会出现滚动条,由于滚动条并不是浮在布局内容之上,所以通常会带来两个问题:

  • 1,容器内部内容宽度固定,恰好撑满,此时出现滚动条会把内容挤到下一行(如图1.gif);
<div class='container'>
    <div></div>
    <div></div>
    <div></div>
 </div>
.container{
    width:300px;
    height:200px;
    background-color:#efefef;
    overflow-y:hidden;
    overflow-x:hidden;
    padding:10px; 
}
.container:hover{
    overflow-y:auto;
}
.container  div{
    display:inline-block;
    margin-right:5px;
    width:92px;
    height:300px;
    background-color:#777;
}
1.gif
  • 2,容器内容百分比计算,自适应宽度,鼠标经过出现滚动条,鼠标离开滚动条消失,会出现中间内容晃动(如图2.gif)
注:相对于上面的变化部分,仅是将内部div宽度设为百分比自适应
.container  div{
    width:calc(100% - 6px);
}
2.gif

那么我们如何来解决这两个问题呢?

我门可以在DOM布局中做些修改,在container内部再添加一层class="inner-container"的容器,并让其宽度=width(container)+width(scroller),如此便不会在出现滚动条的时候将内容挤下去了,代码如下

<div class='container'>
    <div class='inner-container'>
        <div></div>
        <div></div>
        <div></div>
    </div>
</div>
.container{
    width:300px;
    height:200px;
    background-color:#efefef;
    overflow-y:hidden;
    overflow-x:hidden;
    white-wrap:nowrap;
    padding:10px; 
}
.container:hover{
    overflow-y:auto;
}
.container div div{
    display:inline-block;
    margin-right:5px;
    width:92px;
    height:300px;
    background-color:#777;
}
/*添加部分:一般ie中的滚动条宽度是24px*/
.inner-container{
    width:calc(100% + 24px);
}

原理即是,让包裹子元素内部容器inner-container比外部容器container 的宽度大于一个滚动条宽度,这样即使滚动条出现也不会影响子元素。
一般来说windows下IE的滚动条宽度为24px,所以加上24px即可,如果是在谷歌中既可以设置滚动条宽度,或者设置overflow:overlay 也可(不过这个属性在IE中不兼容)

相关文章

  • 如何实现滚动条在各浏览器中不占用布局

    在一般浏览器中,当内容超出容器时,如果不是overflow:hidden,通常都会出现滚动条,由于滚动条并不是浮在...

  • 移动端

    一、 常见布局 1) 静态布局 传统web布局。固定大小,在屏幕大小进行调整是,出现滚动条,使用滚动条实现页面的浏...

  • 2019-03-25移动端适配

    一、 常见布局 1.静态布局 传统web布局。固定大小,在屏幕大小进行调整使其出现滚动条,使用滚动条实现页面的浏览...

  • height、clientHeight、offsetHeight

    注意默认情况下谷歌浏览器滚动条的区别: MAC:滚动条浮起,不占据页面位置,理解为0px; window:滚动条是...

  • CSS布局

    单列布局 实现方式: 定宽+水平居中 max-width和width的区别:固定宽度当浏览器缩小时页面出现滚动条;...

  • 9. CSS布局

    常见布局(PC) 固定宽度布局——缺点:屏幕尺寸不够时会出现滚动条。 弹性布局(布局随浏览器变化)——缺点:代码复...

  • 模拟滚动条与表格性能优化

    模拟滚动条是在禁用浏览器自带滚动条后使用html和js代码自定义实现滚动条效果 首先需要设置原有出现滚动条的元素 ...

  • 火狐下滚动条消失

    在谷歌 和safari浏览器中滚动条可实现样式自定义 和隐藏但可滚动 方式 样式定义(引用)https://ww...

  • ViewStub 源码学习

    基于 6.0.1_r10 作用 ViewStub 可以用来优化布局,实现布局的懒加载。 ViewStub 不占用屏...

  • 全屏布局

    全屏布局应用:管理系统、监控平台、统计平台等。全屏布局特点:1、缩放屏幕,页面始终撑满浏览器窗口;2、滚动条控制局...

网友评论

      本文标题:如何实现滚动条在各浏览器中不占用布局

      本文链接:https://www.haomeiwen.com/subject/oltwjxtx.html