首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

随心所欲滚动条,远离产品汪(一)

我们开发生活,相信很多人都会遇到形形色色项目需求,比如更改浏览器默认样式,在产品定下需求后给网页设计图中我们最常遇到是自定义滚动条样式,或者当你想构建一个很有特色和创意网页,那么也肯定希望自己能够去设置滚动条样式...结构布局分析 我们开发项目中会时不时碰到这种情况,当滚动块B超出了父级可视部分,我们总会设置overflow属性值来隐藏超出部分,根据默认滚动条来操作隐藏内容,当将可视A设置overflow...此时我们会发现,有些时候设计师给出设计图滚动条样式是不同或者默认滚动条样式会影响到我们对网页整体感觉,所以我们需要隐藏默认滚动条,将可视设置为overflow:hidden,自己去重新设置滚动条样式...如何将两者关联起来呢,实际上细心你已经发现:滚动条C高度/滚动D高度 = 可视A高度/ 滚动块B高度,即滚动滚动距离和滚动条滚动距离它们比都是存在联系。...= scHeight + "px"; // 当滚动块B实际高度小于可视时,滚动条隐藏 if (cnHeight < bxHeight) {

1.5K50

偏移量、客户大小、口大小、滚动大小、确定元素大小

客户大小指的是元素内容及其内边距所占空间大小。...像textarea、html这些元素,当内容超过所设置宽高后,就会出现一个滚动条滚动大小计算差不多就是指把元素内容平铺后大小。...scrollHeight:没有滚动条情况下(平铺开),内容高度。 scrollWidth:没有滚动条情况下(平铺开),内容总宽度。...(上面两者主要是用于确定内容实际大小) scrollLeft:被隐藏在内容区域左侧像素数。 scrollTop:被隐藏在内容区域上方像素数。...right和bottom,给出了元素页面相对于位置 ①由于ie8及更早版本认为文档左上角坐标是(2,2),而其他浏览器包括ie9则将(0,0)作为起点坐标,所以用函数使用它自身属性来确定是否要对坐标进行调整

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

动手练一练,手写一个价格对比、固定表头滚动表格

scrollHeight: 因为子元素比父元素高,父元素不想被子元素撑一样高就显示出了滚动条滚动过程本元素有部分被隐藏了,scrollHeight代表包括当前不可见部分元素高度。...在有滚动条时讨论scrollHeight才有意义,没有滚动条时scrollHeight==clientHeight恒成立。单位px,只读元素。...scrollTop: 代表在有滚动条时,滚动条向下滚动距离也就是元素顶部被遮住部分高度没有滚动条时scrollTop==0恒成立。单位px,可读可设置。...获取用户从口顶部滚动距离(pageYOffset) 获取最后一部分内容区域距离窗口顶部高度(getBoundingClientRect().top) 检测滚动条是否滚动到表格区域。...如果滚动到表格区域,获取重置后表头宽度。 接下来我们来判断第三部分内容区域距离口顶部高度是否大于表头高度

3.2K31

何为 content-visibility?

好,我们实际开始进行滚动,看看会发生什么: 由于下方元素滚动过程,出现在口范围内才被渲染,因此,滚动条出现了明显飘忽不定抖动现象。...当然,向下滚动过程,上方消失已经被渲染过且消失元素,也会因为消失口中,重新被隐藏。因此,即便页面滚动到最下方,整体滚动条高度还是没有什么变化。...从上面的例子,也能看到,利用 content-visibility: auto 处理长文本、长列表时候。滚动页面的过程滚动条一直抖动,这不是一个很好体验。...} 如此之后,浏览器会给未被实际渲染口之外 .paragraph 元素一个高度,避免出现滚动条抖动现象: 你可以自己亲自尝试感受一下:CodePen Demo -- content-visibility...: auto 元素高宽,可以有效避免滚动条滚动过程抖动; content-visibility: auto 无法直接替代 LazyLoad,设置了 content-visibility: auto

1.5K10

虚拟滚动之原理及其封装

前端业务开发中会遇到一些不分页且数据条数超过1000加载列表(长列表),不分页需求一般前端程序员看来是不可思议。...可视渲染有个更出名名字,叫做虚拟滚动——指的是只渲染可视区域列表项,非可见区域完全不渲染,滚动条滚动时动态更新列表项。...[注]:实际上考虑页面流畅性,不可能完全不渲染之外内容,建议是预留2-3屏。...当用户改变列表滚动条的当前滚动时候,会造成可见区域内容变更。•可见区域:比如列表高度是 300,右侧有纵向滚动条可以滚动,那么视觉可见区域就是可见区域。...相比较于懒渲染,虚拟滚动要求一次性全部拿到数据,但是滚动条能够完全正确地反映当前页面全部数据位置。滚动无非是对几十个dom进行操作,可以达到极高后续渲染性能。

9.8K20

JavaScript代码获取浏览器可视高、文档滚动高和滚动距离

JavaScript 代码,获取滚动距离( scrollTop )和文档高度( scrollHeight )都是以像素为单位值。...如果测试时,发现页面有滚动条,但是获取滚动高度和可视高度一样,要注意看滚动条是不是 iframe 内嵌框架里,上面可以进行切换,默认 top 是默认最外层框架。...下面的表格展示了文档中用到几种属性含义和用法: 属性 含义 示例 document.documentElement.clientHeight 文档根元素高度,不包括滚动条、边框和外边距。...var clientHeight = window.innerHeight; document.documentElement.scrollHeight 文档根元素滚动高度,即整个文档内容高度,包括被隐藏部分...,即整个文档内容高度,包括被隐藏部分。

12300

滚动怎么理解_scrollview不滚动

本文介绍元素尺寸内容最多一部分——滚动scroll 滚动宽高 scrollHeight   scrollHeight表示元素高度,包括由于溢出而无法展示在网页不可见部分 scrollWidth...但是由于各个浏览器表现不一样,分为以下几种情况   【1】html元素没有滚动条时,IE和firefoxclient和scroll属性始终相同,且返回可视尺寸大小;而safari和chrome表现正常...test.scrollIntoView(false); } scrollIntoViewIfNeeded()   scrollIntoViewIfNeeded(true)方法只在当前元素口中不可见情况下...如果当前元素口中可见,这个方法什么也不做   如果将可选alignCenter参数设置为true,则表示尽量将元素显示口中部(垂直方向)   [注意]该方法只有chrome和safari支持...(1);} btn2.onclick = function(){test.scrollByPages(-1);} 滚动事件   scroll事件是window对象上发生,它表示是页面相应元素变化

1.9K20

3分钟搞定图片懒加载

当页面滚动时候需要去监听scroll事件,scroll事件回调,判断我们懒加载图片判断是否出现在口内,如果出现在口内,则将data-src赋值到src。...如何判断一个元素是否口内呢? 通过getBoundingClientRect()方法来获取元素大小以及位置。...思路:当页面滚动时候需要去监听scroll事件,scroll事件回调,判断滚动条是否滚动到最底部,如果是,则将将图片 src 属性设置为data-src值。...判断是否滚动到最底部方法:滚动条到顶部距离 + 可视页面高度 >= 当前页面高度 var seeHeight = document.documentElement.clientHeight; // 可视页面高度...当滚动到20张图底部时候,就会发出ajax请求,请求下一页数据。 ? 至此本文完,有疑问可以评论随时交流哈。

2.4K20

随心所欲滚动条,远离产品汪(二)

当中介绍了自定义滚动条基本原理与实现方法,自定义滚动条实现后,可以通过对滚动条上下拖动来控制内容显示,使用过朋友会发现,如果对篇幅较长内容来说,不停拖动滚动条来查看内容,还是比较麻烦,...1.滚轮事件,火狐滚动事件是DOMMouseScroll,而其它浏览器是mousewheel,这一点是要仔细留意。 2.事件对象兼容。...首先,我们需要明白我们滚轮是作用在谁身上,根据实际需求来进行事件绑定,当我们鼠标移入可视时,会触发滚轮事件,移出可视时则清除滚轮事件,接下来进行具体代码操作。..., // 滚动D高度 cnHeight = cn.offsetHeight; // 滚动块B高度 // 根据滚动块B实际内容高度控制滚动条C高度...B实际高度小于可视时,滚动条隐藏 if (cnHeight < bxHeight) { bs.style.display = "none"; }

2K80

两行CSS让长列表性能渲染提升7倍!

很显然是不会。 用户每次能够真实看到就只有设备可见那些内容,对于非可见内容只要页面不发生滚动,用户就永远看不到。虽然用户看不到,但浏览器却会实实在在去渲染,以至于浪费大量性能。...这是因为,content-visibility会将分配给它元素高度(height)视为0,浏览器渲染之前会将这个元素高度变为0,从而使我们页面高度滚动变得混乱。...contain-intrinsic-size 救场 页面滚动过程滚动条一直抖动,这是一个不能接受体验问题,为了更好地实现content-visibility,浏览器需要应用 size containment...我们只需要给添加了content-visibility: auto元素添加上contain-intrinsic-size就能够解决滚动条抖动问题,当然,这个高度约接近真实渲染高度,效果会越好,如果实在无法知道准确高度...,我们也可以给一个大概值,也会使滚动条问题相对减少。

23510

一文彻底搞懂js位置计算

scrollHeight 值等于该元素不使用滚动条情况下为了适应口中所用内容所需最小高度。...如果存在了滚动条,client只会计算出当前元素展示出来高度/宽度,而scroll不仅仅会计算当前元素展示出,还会包含当前元素滚动条隐藏内容高度/宽度。...此时,当你从右到左拖动滚动条时,scrollLeft会从0变为负数。 scrollLeft/Top日常工作是比较频繁使用关于操作滚动条相关api,他们是一个可以设置值。...本质上就是当元素出现滚动条时,判断当前元素出现高度 + 滚动条高度 = 元素本身高度(包含隐藏部分)。...计算元素是否出现在口内 利用还是元素距离位置小于大小。 注意即便变成了负值,那么也表示元素曾经出现过屏幕只是现在不显示了而已。

3.7K10

【前端攻略--HTMLCSS】html 文档流理解

固定定位:即完全离开文档流,相关于进行偏移。 文档流是文档可显示对象排列时所占用位置。...比如网页div标签它默认占用宽度位置是一整行,p标签默认占用宽度也是一整行,因为div标签和p标签是块状对象。 网页中大部分对象默认是占用文档流,也有一些对象是不占文档流,比如表单隐藏域。...当对象定位在浏览器窗口以外,浏览器不会因此显示滚动条,而当滚动条滚动时,对象始终固定在原来位置。 relative:相对定位。...对象不可层叠,但将依据left,right,top,bottom等属性正常文档流偏移位置。当对象定位在浏览器窗口以外,浏览器因此显示滚动条。 static:元素框正常生成。...再举一个大家日常经常遇到问题来印证—高度自适应 反复想一想,高度自适应原理其实就是这个:   这是b   <div id=”c

2.3K20

css控制滚动条透明,CSS控制滚动条样式解析

我们之前两篇文章,我们给大家介绍了关于CSS设置div滚动条样式、以及CSS3自定义滚动条样式实例, 都知道当内容超出容器时,容器会出现滚动条,那我们如何使用CSS控制滚动条样式呢?...2、其中内容高度必须超过它本身高度。 3、必须添加属性 “overflow:auto”。...*隐藏滚动条: 1、去掉水平方向滚动条: 2、去掉垂直方向滚动条: 3、隐藏横向、显示纵向滚动条: 4、隐藏全部滚动条: 或者 更好方法就是把滚动条颜色设置为完全透明,这样既可以实现内容滚动...使用该值时,无论设置”width”和”height”值是多少,其中内容无论是否超出范围都将被强制显示。 overflow:auto;需要时剪切内容并添加滚动条。...overflow:hidden;不显示超过对象高度内容。 overflow:scroll;总是显示纵向滚动条

5.8K20

如何使用 CSS 设置和自定义水平和垂直滚动条

滚动条是图形用户界面(UI)必不可少组件。滚动条允许用户查看超出其容器宽度或高度内容。滚动条还使用户能够查看超出屏幕宽度或高度内容。默认情况下,浏览器会为body内容溢出包含一个滚动条。...在其他情况下,UI开发人员必须设置滚动条以使用户能够查看超出屏幕或特定容器内容。每个浏览器都有一组默认滚动条样式。某些情况下,您可能有充分理由来定制滚动条。...从截图中可以看出,侧边栏底部看起来不像设置底部。这是因为内容比其容器高度长。在下一节,我们将学习如何防止导航项目列表显示侧边栏之外。d)....在下一节,我们将学习如何设置水平滚动条。设置自定义水平滚动条。您可以向网页内容器添加水平滚动条。水平滚动条可以使用户较短容器内查看一系列横向内容。...本练习,我们将重用以前样式,但将使用高度来设置滚动条厚度,如下所述:将scrollbar-track背景颜色设置为蓝色将scrollbar-thumb背景颜色设置为绿色将滚动条高度(厚度)

1.1K00

JS实现无限分页加载——原理图解

由于网页执行都是单线程JS执行过程,页面会呈现阻塞状态。因此,如果JS处理数据量过大,过程复杂,可能会造成页面的卡顿。...针对这两种情况,需要理解几个概念: scrollHeight即真实内容高度; clientHeight比较好理解,是视窗高度,就是我们浏览器中所能看到内容高度; scrollTop是视窗上面隐藏部分...实现思路: 1 如果真实内容比视窗高度小,则一直加载到超过视窗 2 如果超过了视窗,则判断下面隐藏部分距离是否小于一定值,如果是,则触发加载。...最开始没有滚动滚动条时,上面隐藏部分为0,视窗高度是667(这个值是一直不变),内容高度为916 ?...当向下滚动了一下后,视窗高度不变;上面隐藏高度增加到100,即滚动条上面代表部分。 ? 当触发加载后,视窗高度保持变;上面隐藏高度保持不变;文本内容增加到1816; ?

5.8K100

Element scrollbar 使用封装

使用 el-scrollbar el-scrollbar Element 组件官方文档没有, node_modules 可以看到,目录位置 node_modules/element-ui/packages.../scrollbar scrollbar.png Vue 页面中直接引入 el-scrollbar 标签,定义对应高度就可以实现 element 官方滚动条效果 这时候,默认效果纵向滚动条有了,但是横向会出现浏览器默认滚动条占位,如下效果 scrollbar2.png 默认横向滚动条隐藏可以设置 el-scrollbar...: hidden; 即可查看移除默认滚动条效果 scrollbar3.png 我们项目组件封装过程,这个组件属性设置需要在 设置,**注意** 默认 css 默认下不能添加...,我们项目里 tag 页签功能使用了横向滚动条隐藏了纵向滚动条,由于自定义需求,实际使用时需要根据情况设置对应边距问题,这里调整时候还需要隐藏原生滚动条,这时候需要耐心一点才能调出想要页面效果

91310

摸鱼新发现,滚动条无限滚动

一次调试过程,我按下了F12刚好是掘金页面,然后把代码输入到控制台之后,顺手滚动了几下右侧滚动条,发现个问题如下图所示: ? ‍‍‍‍‍‍‍‍‍‍...掘金官网滚动条当你拖动到底部时候会自动回弹到一定位置。顺着这个问题,我想着使用 vue-cli3.0 和 TS 实现以下这个功能。...首先需要获取滚动条位置,即可视高度和内容区域底部距离可视页面顶部距离,如果他们相等此时浏览器滚动条当好滚动到页面底部,如果相差是负数说明浏览器滚动条还没有到达页面底部。 ?...,我们就可以触发我们自己需求去调用接口等 优化页面 这里想法是当我们浏览器滚动条滚动之后,滚动上去内容不显示页面上,只显示可视区域,减少页面的负载,先看一下效果 ?...当滚动条滚动回去效果: ? 思路:通过监听内容上部超出可视区域高度和设置每一个目录高度比值计算出超出条数,判断渲染数据下标和条数大小来展示。

1.9K40
领券