有时候,我们想阅读页面中某段精彩的内容,但由于页面太长,用户需要自己滚动页面,查找起来非常麻烦 ,很容易让人失去继续往下阅读的兴趣。这样体验非常不好,所以我们可以想办法 实现点击某段文字或者图片跳转到页面指定位置,方便用户的阅读。
这里作为锚点的标签可以是任意元素。
<a href="#aa">跳转到 id 为 aa 标记的锚点</a>
<p>-------------分隔线-------------</p>
<div id="aa">a</div>
这里作为锚点的标签只能是 a 标签。
<a href="#bb" >跳转到 name 为 bb 的 a 标签锚点</a>
<p>-------------分隔线-------------</p>
<a name="bb">name 为 bb 的 a 标签的锚点</a>
<div id="abb">bbb</div>
注意:当以 ' a 标签 name 属性作为锚点 ' 和 ' 利用 id 为标记的锚点 ' 同时出现(即以 name 为锚点和以 id 为锚点名字相同时),会将后者作为锚点。
window.scrollTo 滚动到文档中的某个坐标。可提供滑动效果,想具体了解 scrollTo() 可以看看 MDN 中的介绍。
话不多说,看下面代码
「html 部分」:
<a id="linkc">平滑滚动到 c</a>
<p>-------------分隔线-------------</p>
<div id="cc">c</div>
「js 部分」:
var linkc = document.querySelector('#linkc')
var cc = document.querySelector('#cc')
function to(toEl) {
// toEl 为指定跳转到该位置的DOM节点
let bridge = toEl;
let body = document.body;
let height = 0;
// 计算该 DOM 节点到 body 顶部距离
do {
height += bridge.offsetTop;
bridge = bridge.offsetParent;
} while (bridge !== body)
// 滚动到指定位置
window.scrollTo({
top: height,
behavior: 'smooth'
})
}
linkc.addEventListener('click', function () {
to(cc)
});
Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内。想具体了解 scrollIntoView() 可以看看 MDN 中的介绍。
下面也直接上代码
「html 部分」:
<a onclick="goTo()">利用 scrollIntoView 跳转到 d</a>
<p>-------------分隔线-------------</p>
<div id="dd">ddd</div>
「js 部分」:
var dd = document.querySelector('#dd')
function goTo(){
dd.scrollIntoView()
}
注意:此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
下面为了方便看效果,把上面的代码整理在一起。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
width: 600px;
height: 300px;
background-color: pink;
}
</style>
</head>
<body>
<a href="#aa">跳转到以 id 为 aa 标记的锚点 a</a>
<p>-------------分隔线-------------</p>
<a name="aa">hhh</a>
<div id="aa">aa</div>
<a href="#bb" >跳转到 name 为 bb 的 a 标签锚点</a>
<p>-------------分隔线-------------</p>
<a name="bb">name 为 bb 的 a 标签的锚点</a>
<p>-------------分隔线-------------</p>
<div>bb</div>
<a id="linkc">平滑滚动到 c</a>
<p>-------------分隔线-------------</p>
<div id="cc">cc</div>
<a onclick="goTo()">利用 scrollIntoView 跳转到 d</a>
<p>-------------分隔线-------------</p>
<div id="dd">dd</div>
<p>-------------分隔线-------------</p>
<div></div>
</body>
<script>
var cc = document.querySelector('#cc')
var linkc = document.querySelector('#linkc')
function to(toEl) {
//ele为指定跳转到该位置的DOM节点
let bridge = toEl;
let body = document.body;
let height = 0;
do {
height += bridge.offsetTop;
bridge = bridge.offsetParent;
} while (bridge !== body)
console.log(height)
window.scrollTo({
top: height,
behavior: 'smooth'
})
}
linkc.addEventListener('click', function () {
to(cc)
});
</script>
<script>
var dd = document.querySelector('#dd')
function goTo(){
dd.scrollIntoView()
}
</script>
</html>
效果图:
信
51rgb
网页自动跳转页面的代码在很多时候都非常的有用,下面的是两个简单的例子。仅供参考。
方案一,用<meta>里直接写刷新语句:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-CN">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<meta http-equiv="refresh" content="5;url=http://www.51rgb.com">
<title>html网页自动跳转代码--西农大网站</title>
</head>
<body>
测试:html网页自动跳转代码<br/>
你可以在这里写下你想的一切东西!<br />
如:西北农林科技大学是一所985、211院校。<br />
</body></html>
方案二,用javascript脚本来跳转
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>正在进入西农大网站</title>
</head>
<body>
<form name=loading>
<p align=center> <font color="#0066ff" size="2">正在进入,请稍等</font><font color="#0066ff" size="2" face="Arial">...</font>
<input type=text name=chart size=46 style="font-family:Arial; font-weight:bolder; color:#0066ff; background-color:#fef4d9; padding:0px; border-style:none;">
<inputtype=text name=percent size=47 style="color:#0066ff; text-align:center; border-width:medium; border-style:none;">
<script>
var bar=0
var line="||"
var amount="||"
count
function count{
bar=bar+2
amount =amount + line
document.loading.chart.value=amount
document.loading.percent.value=bar+"%"
if (bar<99)
{setTimeout("count",100);}
else
{window.location =http://www.51rgb.com;}
}</script>
</p>
</form><p align="center">
测试:html网页自动跳转代码<br/>
你可以在这里写下你想的一切东西!<br />
如:西北农林科技大学是一所985、211院校。<br /><br />
如果您的浏览器不支持跳转,<astyle="text-decoration: none" href="http://www.mycodes.net
"><font color="#FF0000">请点这里</font></a>.</p>
</body>
</html>
↓↓↓
多网页都加入了一个鸡贼的操作——「打开 App 阅读全文」。
明明可以一次性把内容展示出来,非得给你隐藏一半,剩下一半需要下载 App 才能看。
要不是隔着一条网线,这种话说到一半的人,真的,应该拖出去揍一顿。
不过好在有关部门已经开始行动了:高度重视,敦促相关企业进行整改。
话音刚落,确实已经有一些网页进行了优化,看新闻查资料什么的顺畅多了。
但是吼,不排除某些厂商比较顽固,不愿意放弃这块蛋糕,想方设法让用户下载 App。
之前说到这个问题的时候,也有不少小伙伴表示需要一些解决方案。
作为一个有求必应的数码博主,这就给大伙支两招。
Safari 扩展
如果你是 iPhone 用户,那这个问题就太好解决了。
因为在 iOS 15 中,苹果已经为内置浏览器 Safari 加入了扩展功能。
通过这些扩展,我们可以实现很多浏览器本身不支持的操作,解决展开全文问题可谓信手拈来。
目前,应用商店已经有很多扩展都可以实现这个功能,比如「拦截 100」。
操作步骤非常简单,看好了。
第一步:在 APP Store 搜索「拦截 100」,安装。
第二步:在系统设置里找到「Safari 浏览器」,然后点击「扩展」,开启「拦截 100」并「允许所有网站」。
这样就算设置好啦。
效果看下图:同一个网页,左边是关闭扩展,右边是打开扩展。
网页浏览瞬间香了起来有木有!
而且吼,「拦截 100」的三个核心功能是免费的:自动展开全文、拦截跳转 App、去除网页 App 横幅广告。
(免费使用)
如果你愿意氪金,还可以解锁脚本、深度去广告等功能,大家根据自己的需求来就好。
(15 元一年,30 元买断,其实也不算很贵)
除了「拦截 100」,App Store 还有很多扩展都已经支持自动展开全文,大家可以挑一个自己喜欢的。
对了,想浏览所有 Safari 扩展,可以从 App Store 中的「App」-「热门类别」-「Safari 浏览器扩展」进入哦~
安卓这边,目前还没有主流的浏览器支持扩展插件。
毕竟系统层面还不支持,所以很难形成气候。
但是,咱们也可以通过一些小众浏览器的脚本功能,实现类似操作,比如 Via 浏览器。
浏览器脚本
与很多主流浏览器不同,Via 浏览器内置了脚本功能,可以借助 JavaScript 代码实现扩展操作。
但问题来了,这玩意咱也不会写呀,怎么办呢?
高手在民间,一些开发者自发地贡献了脚本,甚至还做了网站,实现一键安装。
用户唯一需要做的,就是点击安装。
看下效果,左侧是安装前,一打开网页就提示跳转;右侧是安装后,无需点击即可拉到结尾。
不过,由于这些浏览器和脚本都比较小众,也缺乏有组织的维护,So...可能出现覆盖不全、失效等情况。
比如说在百度经验自动展开全文时,就遇到了显示 Bug,正文还没完就直接显示广告了。
不管怎么说,这些方法都只能从表面上解决问题。
想要完全杜绝,依旧得看这些互联网大厂。
*请认真填写需求信息,我们会在24小时内与您取得联系。