“回到顶部”功能

浏览器“回到顶部”

css使用scroll-behavior平滑回到顶部

scroll-behavior为一个滚动框指定滚动行为,其他任何的滚动,例如那些由于用户行为而产生的滚动,不受这个属性的影响。在根元素中指定这个属性时,它反而适用于视窗。
语法:

scroll-behavior: auto;/*滚动框立即滚动*/
scroll-behavior: smooth;/*滚动框通过一个用户代理预定义的时长、使用预定义的时间函数,来实现平稳的滚动*/

浏览器的兼容性

pc端:

浏览器是否支持
ChromeYes
edgeNo
FirefoxYes
Internet ExplorerNo
OperaYes
SafariNo

移动端:

浏览器是否支持
Android webviewYes
Chrome for AndroidYes
Edge MobileNo
Firefox for AndroidYes
Opera for AndroidYes
Safari on iOSNo
Samsung Internet未知

js使用scrollIntoView平滑回到顶部

Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内。
语法:

element.scrollIntoView(); // 等同于element.scrollIntoView(true) 
element.scrollIntoView(alignToTop); // Boolean型参数 
element.scrollIntoView(scrollIntoViewOptions); // Object型参数

参数alignToTop:

value和scrollIntoViewOptions同作用的作用
true{block: “start”, inline: “nearest”}元素的顶端将和其所在滚动区的可视区域的顶端对齐
false{block: “end”, inline: “nearest”}元素的底端将和其所在滚动区的可视区域的底端对齐

参数scrollIntoViewOptions:

keyvalue作用
behavior“auto”, “instant”, 或 “smooth”“auto”, "instant"是立即回到顶部,smooth是缓慢回到顶部
block“start”, “center”, “end”, 或 “nearest”end和nearest的作用一样,底端对齐
inline“start”, “center”, “end”, 或 “nearest”start和nearest的作用一样,顶端对齐

实例:

*{
	margin: 0;
	padding: 0;
}
/*平滑的回到顶部,这个也可以加给容器元素,可以让容器(非鼠标手势触发)的滚动变得平滑,而不局限于<html>,<body>标签*/
html,body{  scroll-behavior: smooth;}/*用于锚点回顶部和事件修改scrollTop回顶部*/
.content_item{
	line-height: 300px;
	width: 98%;
	margin: 0 auto 20px;
	border: 1px solid #eee;
	text-align: center;
}
.top_back{
	position: fixed;
	bottom: 50px;
	right: 50px;
	background-color: #aaa;
	color: white;
	padding: 10px 20px;
	cursor: pointer;
}
<div class="container" id'top'>
	<div class="content" >
		<div class="content_item">1</div>
		<div class="content_item">2</div>
		<div class="content_item">3</div>
		<div class="content_item">4</div>
		<div class="content_item">5</div>
	</div>
	<!--点击事件回到顶部-->
	<div class="top_back">
		回到顶部
	</div>
	<!--锚点回到顶部-->
	<!--<a class="top_back" href="#top">
		回到顶部
	</a>-->
</div>
var top_back=document.getElementsByClassName('top_back')[0];
var container=document.getElementsByClassName('container')[0];
//修改scrollTop回到顶部
top_back.onclick=function(e){
	//第一种直接修改scrollTop,css中使用scroll-behavior: smooth;缓慢回去
	//document.body.scrollTop=0;
	//document.documentElement.scrollTop=0;
	//第二种要回去的元素设置scrollIntoView
	container.scrollIntoView({block: "start", inline: "nearest",behavior :'smooth'})
}

注:如果想要自己设置回去的时间可以使用jquery的animate

$('.top_back').click(function() {
	$('html,body').animate({
		scrollTop: 0
	}, 100);
})

scrollTop浏览器兼容

浏览器支持
Chromedocument.body.scrollTop
Firefoxwindow.pageYOffset、document.documentElement.scrollTop
Internet Explorer 6/7/8document.documentElement.scrollTop
Internet Explorer 9及以上window.pageYOffset、document.documentElement.scrollTop
Operawindow.pageYOffset、document.documentElement.scrollTop
Safariwindow.pageYOffset、document.body.scrollTop

注:从上面表格可以看出,获取scrollTop的兼容写法可以是:

var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;

小程序“回到顶部”

/* page和scroll-view设置height:100vh;不然bindscroll事件无法触发 */
page{
  height:100vh;
}
.container{
  height:100vh;
}
/* 隐藏滚动条 */
::-webkit-scrollbar{
  width: 0;
  height: 0;
  color: transparent;
}
.content_item{
  line-height:300rpx;
  border: 1rpx solid #eee;
  margin-bottom: 20rpx;
  text-align: center;
}
.top_back{
  padding: 10rpx 20rpx;
  position: fixed;
  bottom: 30rpx;
  right: 50rpx;
  background-color: #aaa;
  color: white;
}

wx.pageScrollTo回到顶部

<view class="container" >
  <view class="content">
    <view class="content_item">1</view>
    <view class="content_item">2</view>
    <view class="content_item">3</view>
    <view class="content_item">4</view>
    <view class="content_item">5</view>
  </view>
  <view class="top_back" bindtap='gotop'>
    回到顶部
  </view>
</view>
// 当前滚动条的位置获取
onPageScroll(e){
  console.log(e.scrollTop)
},
gotop(e){
  if (wx.pageScrollTo) {
    wx.pageScrollTo({
      scrollTop: 0
    })
  } else {
    wx.showModal({
      title: '提示',
      content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
    })
  }
}

scroll-view回到顶部

注:这里必须给要滑动的元素和page设置高,在前面的css代码中有提到。

<scroll-view class="container" scroll-y scroll-top='{{scrollTop}}' bindscroll="scroll">
  <view class="content">
    <view class="content_item">1</view>
    <view class="content_item">2</view>
    <view class="content_item">3</view>
    <view class="content_item">4</view>
    <view class="content_item">5</view>
  </view>
  <view class="top_back" bindtap='gotop'>
    回到顶部
  </view>
</scroll-view>
data: {
  scrollTop:0
},
// 当前滚动条的位置获取
scroll(e){
  console.log(e.detail.scrollTop)
},
gotop(e){
  var that=this;
  that.setData({
    scrollTop: 0
  });
}
可以通过以下几种方式实现 Vue 的回到顶部功能: 1. 使用 Vue 插件:可以使用现有的 Vue 插件来实现回到顶部功能,例如 vue-backtotop、vue-go-top 等。 2. 自定义指令:可以编写一个自定义指令来实现回到顶部功能,例如: ```javascript Vue.directive('scroll', { inserted: function (el, binding) { let f = function (evt) { if (binding.value(evt, el)) { window.scrollTo(0, 0); } }; el.__vueScroll__ = f; window.addEventListener('scroll', f); }, unbind: function (el) { window.removeEventListener('scroll', el.__vueScroll__); el.__vueScroll__ = null; }, }); ``` 然后在组件中使用 v-scroll 指令即可。 3. 使用组件:可以编写一个回到顶部的组件,例如: ```javascript <template> <div class="back-to-top" v-if="show" @click="scrollTop"> <i class="fa fa-chevron-up"></i> </div> </template> <script> export default { data() { return { show: false, }; }, created() { window.addEventListener('scroll', this.handleScroll); }, destroyed() { window.removeEventListener('scroll', this.handleScroll); }, methods: { handleScroll() { this.show = window.pageYOffset > 100; }, scrollTop() { window.scrollTo({ top: 0, behavior: 'smooth', }); }, }, }; </script> <style scoped> .back-to-top { position: fixed; bottom: 20px; right: 20px; background: #333; color: #fff; width: 40px; height: 40px; line-height: 40px; text-align: center; border-radius: 2px; cursor: pointer; transition: opacity 0.2s ease-out; } .back-to-top:hover { opacity: 0.8; } </style> ``` 然后在需要使用的组件中引入该组件即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值