起html的锚点这个概念,你可能会感到会陌生,感觉自己没有听过。但是如果说起它的作用,你可能就恍然大悟了,就像你说起一个演员,可能不知道是谁,但是说起它演的一个角色可能立马就知道那个人是谁了。
那么,什么是锚点呢?
锚点存在于html中,在默认情况下,可以快速的定位到指定元素,并将元素置于页面最顶端。当然我们可以按照自己的需求来确定锚点的位置,不一定要让其定位在顶部。现如今有无数多的页面已经用上了锚点,比如Vue.js的官网,在我们点击标题“Vue.js是什么”和标题“起步”的时候,标题都会自动移到页面顶端。
锚点的使用
那接下来,我们就来看看几种锚点的使用方法。
id定位
最基本的使用方法如下,当点击<a>标签时,页面会相应的将该div内容置顶
锚点的id定位方法
name定位
除了id,还可以通过name进行定位,不过需要主要的是,如果采用name属性进行定位的话,只适用于a标签,类似于p标签等都不支持。
锚点的name定位方法
javascript代码进行定位
在原生的javascript中,有一个scrollIntoView()方法,可以实现页面的锚点
javascript方法实现锚点
一个综合的例子
讲了三种实现方法后,接下来看一个实际运用的例子。首先是实际效果图,在点击左侧栏时,页面右边会相应的显示指定段落的内容
锚点的实际使用
首先看下html页面的内容,左侧的ul代码
左侧的ul代码
右侧的内容部分代码
右侧内容部分代码
css部分的代码
css部分的代码
将上述的代码写在一个html文件中,便可实现左侧栏点击,右侧栏显示相应内容的效果。
特殊情况
在实际项目中,我们总会遇到这样一种情况,在页面顶部有固定头内容的时候,如果直接使用上述方法,会得不到想要的效果
直接使用锚点的效果图
通过该图可以看出,第三段内容的标题被遮住了,实际应该往下再显示一点
那么,我们该怎么解决这个问题呢?在这里我想到了两种方法,第一种是在每个内容div上加一个隐藏的p元素,给p元素一个定高,再向上偏移,这种方法会导致页面出现很多个多余的p元素,不推荐使用。
第二种是利用伪元素,伪元素可以占用实际的高度,这是推荐使用的方法
伪元素的样式
通过给h3标签添加伪元素样式,可完美解决这个问题,效果图如下
使用伪元素后的效果图
总结
今天的内容你会了么?如果还没有掌握的话,可以按照文章中的代码,进行实践,代码总是要多敲才更容易理解。
如果喜欢的话,记得关注小编噢,小编后续会坚持出更多技术性的文章,如果有任何问题,也欢迎提问,小编都会尽力解答的。
部分主要涉及两个内容:置顶和列表分类。
1. 置顶
一般的论坛都会有帖子置顶功能。现在我们在通知类列表中增加置顶功能。
要求置顶在最上,其他按照发布时间降序排列。因此修改表,增加一个sort字段,表示排序,0表示置顶
2. 排序
修改controller类中的getNotices方法。
3. 前端展示
修改NoticeList.vue
4. 字典
上面的例子中,首页显示了10条最新通知。这个10是写在代码中的,显然这是不合适的,无法动态修改。解决这个问题的方法是,将这个数据记录在数据库中,并可以在程序的后台管理中(后续开发)动态设置。为此建立一个字典表,记录这个值。
哪些内容可以放到字典中:
性别。因为性别不会变动,但是用户信息会用到。
首页通知条数。每次打开首页都会用到。允许变动,但很少会变动。
新建dict实体类和jpa接口
新建Constant类,用于记录数据字典数据的标记,以便在程序各个模块中保持调用一致。
修改Controller类中的getNotices()方法
修改数据字典中相应值为5,同时前端界面做了调整
5. 问题列表
展示同学们针对课程的问题和回复。因为课程涉及很多内容,比如Java、Mysql、Tomcat、HTML、JavaScript,还有Spring Boot、VUE、Element UI等,所以对问题,需要进行分类,以便后续的查询和统计。
Question表
分类表
分类树
对照表,首页用不到
回复表
6. Sql语句
这里涉及到了两个技术问题
Jpa中如何使用原生sql
为返回字段单独建立一个返回值接口 QuestionIndex。
7. 返回的json数据
8. 前端显示
、HTML
<div id="ad"></div>
<div id="search">
<div class="search_box">
<input type="text" class="search_txt" />
<input type="button" value="搜索" class="search_btn" />
</div>
</div>
<div id="box"></div>
二、CSS
*{
padding: 0px;
margin: 0px;
list-style: none;
}
#ad{
width: 100%;
height: 80px;
background: #142DA8;
}
#search{
width: 1300px;
height: 40px;
margin:0 auto;
border:1px solid black;
background: #25B3D9;
position: absolute;
top:80px;
left: 24px;
z-index: 2;
}
#search .search_box{
width: 800px;
margin: 0 auto;
}
#search .search_txt{
display: block;
width: 600px;
height: 36px;
border:2px solid red;
margin:0 auto;
float: left;
}
#search .search_btn{
margin-left: 5px;
font-size: 24px;
line-height: 38px;
float: left;
border:1px solid blue;
}
#box{
width:1300px;
height: 2000px;
background: #858282;
position: absolute;
left: 24px;
top:120px;
}
三、script
window.onscroll=function(){
var oSearch=document.getElementById('search');
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
if (parseInt(scrollTop)>200) {
oSearch.style.position='fixed';
oSearch.style.top='0px';
}
else{
oSearch.style.position='absolute';
oSearch.style.top='80px';
}
}
四、效果图
此方法是本人想到的,不知道大伙还有没有其他好的方法,请留言!!
*请认真填写需求信息,我们会在24小时内与您取得联系。