css的overflow属性怎么定义滚动条

发布时间:2022-03-01 15:07:50 作者:小新
来源:亿速云 阅读:515

这篇文章主要介绍css的overflow属性怎么定义滚动条,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

  一:条件

  滚动条和overflow是紧密相关的。只有当父级的overflow的值是auto或scroll,并且元素的内容超出元素区域时,才有可能出现滚动条

  二:默认

  无论什么浏览器,默认滚动条均来自<html>,而不是<body>。因为<body>元素默认有8px的margin。若滚动条来自<body>元素,则滚动条与页面则应该有8px的间距,实际上并没有间距,所以滚动条来自<html>元素

  三:尺寸

  通过以下代码可得出滚动条会占用浏览器的可用宽度为:

  chrome/firefox/IE17px

  safari21px

  .box{

  width:400px;

  overflow:scroll;

  }

  .in{

  *zoom:1;

  }

  <divclass="box">

  <divid="in"class="in"></div>

  </div>

  console.log(400-document.getElementById('in').clientWidth);

  兼容

  【1】默认情况下IE7-浏览器默认有一条纵向滚动条,而其他浏览器则没有

  //IE7-浏览器

  html{overflow-y:scroll;}

  //其他浏览器

  html{overflow:auto;}

  //去除页面默认滚动条

  html{overflow:hidden;}

  【2】IE7-浏览器与其他浏览器关于滚动条的宽度设定机制不同

  .box{

  width:200px;

  height:100px;

  background-color:pink;

  overflow:scroll;

  }

  .in{

  width:100%;

  height:60px;

  background-color:lightgreen;

  }

  <divclass="box">

  <divclass="in">测试文字</div>

  </div>

  父级box出现纵向滚动条,实际上子级in的可用宽度就缩小了。IE7-浏览器的子级宽度忽略了该滚动条的宽度,子级宽度=400*100%=400px,则出现了横向滚动条;而其他浏览器的子级宽度考虑到该滚动条的宽度,子级宽度=(400-滚动条宽度)*100%

  左边为IE7-浏览器,右边为其他浏览器

  【3】水平居中跳动问题

  当一个元素在页面中水平居中时,页面中出现纵向滚动条会发生水平居中的跳出问题。解决方法如下:

  //IE8-默认

  html{overflow-y:scroll}//IE9+,100vw表示浏览器的宽度,100%表示可用内容的宽度

  .container{padding-left:calc(100vw-100%)}

  自定义

  【1】IE

  IE浏览器支持通过CSS样式来改变滚动条的部件的自定义颜色

  scrollbar-face-color滚动条凸出部分的颜色

  scrollbar-shadow-color立体滚动条阴影的颜色

  scrollbar-highlight-color滚动条空白部分的颜色

  scrollbar-3dlight-color滚动条亮边的颜色

  scrollbar-darkshadow-color滚动条强阴影的颜色

  scrollbar-track-color滚动条的背景颜色

  scrollbar-arrow-color上下按钮上三角箭头的颜色

  scrollbar-base-color滚动条的基本颜色

  【2】webkit

  webkit内核的浏览器支持滚动条自定义样式,但和IE不同,webkit是通过伪类来实现的组成

  ::-webkit-scrollbar滚动条整体部分

  ::-webkit-scrollbar-thumb滚动滑块

  ::-webkit-scrollbar-track外层轨道

  ::-webkit-scrollbar-track-piece内层轨道

  ::-webkit-scrollbar-corner边角

  ::-webkit-scrollbar-button两端按钮

  [注意]当为滚动条设置宽高样式为百分比值时,是相对视窗大小来说的

  [注意]滚动条的层叠关系为scrollbar在最底层,往上依次是track外层轨道,track-piece内层轨道。而button按钮、corner边角和thumb滑块有最顶层

  四:伪类相关

  :horizontal

  //horizontal伪类适用于任何水平方向上的滚动条

  :vertical

  //vertical伪类适用于任何垂直方向的滚动条

  :decrement

  //decrement伪类适用于按钮和轨道碎片。表示递减的按钮或轨道碎片,例如可以使区域向上或者向右移动的区域和按钮

  :increment

  //increment伪类适用于按钮和轨道碎片。表示递增的按钮或轨道碎片,例如可以使区域向下或者向左移动的区域和按钮

  :start

  //start伪类适用于按钮和轨道碎片。表示对象(按钮轨道碎片)是否放在滑块的前面

  :end

  //end伪类适用于按钮和轨道碎片。表示对象(按钮轨道碎片)是否放在滑块的后面

  :double-button

  //double-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一对按钮。也就是轨道碎片紧挨着一对在一起的按钮。

  :single-button

  //single-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一个按钮。也就是轨道碎片紧挨着一个单独的按钮。

  :no-button

  no-button伪类表示轨道结束的位置没有按钮。

  :corner-present

  //corner-present伪类表示滚动条的角落是否存在。

  :window-inactive

  //适用于所有滚动条,表示包含滚动条的区域,焦点不在该窗口的时候。

  ::-webkit-scrollbar-track-piece:start{

  /*滚动条上半边或左半边*/

  }

  ::-webkit-scrollbar-thumb:window-inactive{

  /*当焦点不在当前区域滑块的状态*/

  }

  ::-webkit-scrollbar-button:horizontal:decrement:hover{

  /*当鼠标在水平滚动条下面的按钮上的状态*/

  }

以上是“css的overflow属性怎么定义滚动条”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. 什么是css中overflow属性
  2. 如何使用css的overflow属性定义滚动条

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

css overflow

上一篇:bootstrap图标的概念是什么

下一篇:css中有什么文本属性

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》