整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

使用React,自己模拟实现a标签的锚点功能

使用React,自己模拟实现a标签的锚点功能

求设计

背景介绍

产品的需求是:

1.个人信息下面的小项,点击每一个menu,该项详情模块滚动到顶部

2.滚动右侧页面信息,当页面顶部展示某模块的内容时,对应的menu菜单选中。

过程分析

根据产品的需求,第一反应这就是锚点的问题,使用a标签设置锚点问题就能解决。然而在开发过程中发现a标签的锚点名称时通过name属性设置的,而name属性在html5中已经废弃掉了。于是考虑自己模拟实现a标签的锚点功能。

第一步,初始化模块高度,通过方法计算每一个模块的高度,比如固定的直接写死高度,不固定的初始化为0

 const scrollMapping={
 model1: 0,
 model2: 272,
 model3: 228,
 model4: 0,
 model5: 272
 }

第二步,在组建渲染完成后,componentDidMount方法中计算每个模块的区间,保存在数组scrollRange。

最后,以上两步完成后,开始去实现两个需求,

第一个点击menu,模块内容滚动到顶部,主要是通过url后的字段判断,比如http://www.abc.com/test#model3,此时通过遍历Object.keys(scrollMapping),累加model*的高度,碰到model3结束,获取整个高度为tranlateY,然后将滚动内容区块通过scrollTop属性设置tranlateY,

第二个,滚动内容区块,实现menu选中,主要思路就是看内容区块的scrollTop在scrollRange的哪个区间,比如在index为2-3之间,此时取2,然后通过Object.keys(scroppMapping)[2]就可以获取定位的菜单

参考链接

1. https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/a

天我们来看下html中<a></a>的特点与功能

一 .a标签是超链接标签,首先我们说一下它的特点:

1.在网页中默认会有下划线

2.不会继承父级的颜色样式

效果图

详细代码

其中,自带的下划线不美观,但我们可以用以下代码解决,ctrl+s保存后,下划线就没有了

去掉下划线

二 .下面我们来看看a标签的几个功能:

1.跳转页面

href 属性要跳转页面的地址(没地址的情况下可以写一个#),即可以给网络的地址也可以给本地的地址

target 属性

值:_blank在新页面打开

_self 在本页面打开(默认的)

跳转页面功能

2.锚点

作用:网页太长时,通过点击页面某一个导航,页面直接到达该内容,网页还是该网页,只是向下自己滑动。

实现方法:在 href 的值里写上#name,name对应id的值

下面是一个简单例子,点击颜色就会跳转到相应颜色区域

锚点例子

3.下载

作用:实现网页的下载功能

实现方法:在 href 里写上文件的地址就可以了

注意:如果你要下载的文件浏览器能够读出来,那它就不会被下载,而是会被直接打开。如果就想让浏览器下载所有文件,那就在a标签里添加一个属性download( h5 新增属性,不兼容IE低版本),它的值写上文件的名字加后缀名

下载功能

三.此外,介绍一下a标签的颜色,给a标签换颜色也是会经常用到的,但是怎么改呢?

这里用到了“伪类”,伪类:针对元素的某种状态添加的不同样式

a :link 未访问链接的(颜色)状态

:visited访问过的链接的(颜色)状态

:hover鼠标移入(悬停)(颜色)状态

:active鼠标按下不动时候的(颜色)状态

改变a标签颜色

今天的a标签就介绍到这里,你学到了吗?

.语法

在HTML中创建超链接非常简单,只需用标签环绕需要被链接的对象即可,其基本语法格式如下:

<a href="跳转目标" target="目标窗口的弹出方式">文本或图像</a>

href属性:链接的地址,链接的地址可以是一个网页,也可以是一个视频、图片、音乐等等。

target属性:

  1. _blank:在一个新的窗口中打开链接
  2. _self(默认值):在当前窗口中打开链接
  3. _parent:在父窗口中打开页面(框架中使用较多)
  4. _top:在顶层窗口中打开文件(框架中使用较多)

2.外部链接

可以打开别人的网页:

<a href="https://www.baidu.com">在当前窗口打开百度</a><a href="https://www.baidu.com" target="_self">在当前窗口打开百度</a><a href="https://www.baidu.com" target="_blank">在新的窗口打开百度</a>

3.内部链接

直接链接内部页面名称即可:

<a href="1.外部链接.html">打开内部链接</a>

4.空链接

如果当时没有确定链接目标时,通常将链接标签的href属性值定义为“#”(即href="#"),表示该链接暂时为一个空链接:

<a href="#">空链接</a>

5.锚点链接

通过创建锚点链接,用户能够快速定位到目标内容。创建锚点链接分为两步:

<h1 id="top">顶部</h1>...<a href="#top">回到顶部</a>

跳转到其他页面:

<a href="5.锚点链接2.html#top">回到另一个页面顶部</a>

5.锚点链接2.html

<h1 id="top">顶部</h1>

6.base 标签

base 可以设置整体链接的打开状态

base 写到 head 之间

<head>  <meta charset="utf-8">  <title>文档标题</title>  <base target="_blank"></head><body>  <a href="http://www.baidu.com">在新窗口打开百度</a>  <a href="http://www.baidu.com" target="_self">在当前窗口打开百度</a></body>

7.设置链接的颜色

  1. link连接的颜色
  2. alink正在点击的颜色
  3. vlink已经访问的连接颜色
<body link="red" alink="yellow" vlink="green">  <a href="https://taobao.com">淘宝</a>  <a href="https://jingdong.com">京东</a></body>