JS实现侧悬浮浮动是一种常见的网页侧边栏布局方式,下面是实现这种效果的完整攻略:
JS实现侧悬浮浮动是一种常见的网页侧边栏布局方式,下面是实现这种效果的完整攻略:
- HTML结构
首先,我们需要在HTML中定义容器,侧边栏内容和主体内容。例如,我们可以定义一个名为container
的div作为整个容器,定义两个名为sidebar
和mainContent
的div存放侧边栏和主体内容。
<div class="container">
<div class="sidebar">侧边栏内容</div>
<div class="mainContent">主体内容</div>
</div>
- CSS样式
接下来,我们需要设置container
的宽度,以及为sidebar
和mainContent
定义相应的样式。同时,我们需要为sidebar
和mainContent
添加position:relative
属性。
.container {
width: 100%;
}
.sidebar {
width: 200px;
position: relative;
float: left;
}
.mainContent {
margin-left: 200px;
position: relative;
}
在CSS样式中,我们定义了sidebar
的宽度为200px,同时将其设置为浮动元素,以便能够实现侧边栏悬浮的效果。mainContent
的左边距设置为200px,以便让主体内容在侧边栏的右侧。
- JS实现
我们使用JS脚本来实现悬浮浮动的效果。 首先获取sidebar
元素的起始位置startPos
,同时获取mainContent
元素的到顶部的距离mainStartPos
。写匿名函数scroll
来处理滚动事件。
var sidebar = document.querySelector('.sidebar');
var mainContent = document.querySelector('.mainContent');
var startPos = sidebar.getBoundingClientRect().top;
var mainStartPos = mainContent.getBoundingClientRect().top;
window.addEventListener('scroll', function () {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if (scrollTop > startPos) {
sidebar.style.position = 'fixed';
sidebar.style.top = '0';
} else {
sidebar.style.position = 'relative';
}
if (scrollTop > mainStartPos) {
sidebar.style.position = 'absolute';
sidebar.style.top = mainContent.offsetHeight - sidebar.offsetHeight + 'px';
}
});
在JS中,我们使用getBoundingClientRect()
方法获取sidebar
和mainContent
元素的位置信息。然后添加滚动事件,当滚动距离大于startPos
时,设置sidebar
的position
为'fixed'
,并将sidebar
的top
设置为'0'
。当滚动距离大于mainStartPos
时,我们让sidebar
跟随主体内容的滚动,设置sidebar
的position
为'absolute'
,并将sidebar
的top
设置为mainContent.offsetHeight
减去sidebar.offsetHeight
的值。
以下是两条示例说明:
示例1:为了让侧边栏在一定高度内悬浮,我们可以对JS脚本进行修改,比如在滚动高度大于500px后让侧边栏暂停悬浮,代码如下:
window.addEventListener('scroll', function () {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if (scrollTop > startPos && scrollTop < 500) {
sidebar.style.position = 'fixed';
sidebar.style.top = '0';
} else if (scrollTop >= 500) {
sidebar.style.position = 'relative';
}
if (scrollTop > mainStartPos) {
sidebar.style.position = 'absolute';
sidebar.style.top = mainContent.offsetHeight - sidebar.offsetHeight + 'px';
}
});
示例2:我们也可以修改JS脚本使得侧边栏在滚动到一定高度后显示一个返回顶部按钮,代码如下:
var backToTop = document.createElement('div');
backToTop.className = 'back-to-top';
backToTop.innerHTML = 'Top';
document.body.appendChild(backToTop);
window.addEventListener('scroll', function () {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if (scrollTop > startPos && scrollTop < 500) {
sidebar.style.position = 'fixed';
sidebar.style.top = '0';
} else if (scrollTop >= 500) {
sidebar.style.position = 'relative';
backToTop.style.display = 'block';
} else {
sidebar.style.position = 'relative';
backToTop.style.display = 'none';
}
if (scrollTop > mainStartPos) {
sidebar.style.position = 'absolute';
sidebar.style.top = mainContent.offsetHeight - sidebar.offsetHeight + 'px';
}
});
backToTop.addEventListener('click', function () {
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
});
在这个示例中,我们首先定义了一个backToTop
元素作为返回顶部按钮。然后在滚动距离大于500px时,让backToTop
元素显示出来,添加一个点击事件将滚动距离设置为0,以便让用户实现返回顶部的功能。
本文标题为:JS实现侧悬浮浮动实例代码
- 基于微前端qiankun的多页签缓存方案实践 2022-10-21
- 谈谈Ajax原理实现过程 2022-10-17
- JavaScript操作Cookie详解 2024-01-14
- 兼容各个浏览器的技巧 2022-10-16
- php-来自mysql的一列并将其显示为html中的两列 2023-10-26
- Ajax实现文件下载 2022-12-15
- js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版 2023-12-24
- layui中tree组件使用报错tree.render is not a function 2022-10-21
- Bootstrap导航条可点击和鼠标悬停显示下拉菜单 2024-01-04
- CSS实现文字环绕图片效果 2024-02-05