整合营销服务商

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

免费咨询热线:

神奇的html锚点,让你的网页在内部自由的跳转

起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标签添加伪元素样式,可完美解决这个问题,效果图如下

使用伪元素后的效果图

  • 总结

今天的内容你会了么?如果还没有掌握的话,可以按照文章中的代码,进行实践,代码总是要多敲才更容易理解。

如果喜欢的话,记得关注小编噢,小编后续会坚持出更多技术性的文章,如果有任何问题,也欢迎提问,小编都会尽力解答的。

天查Html手册时,又有了新的发现。也就这机会,好好总结下HTML中Meta的使用。

  HTML <meta> 标签,所有浏览器都支持 <meta> 标签。它提供关于HTML文档的元数据。元数据不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如何显示内容或重新加载页面),对搜索引擎和更新频度的描述和关键词,或其他 web 服务。

  <meta> 标签位于文档的头部,不包含任何内容。<meta> 标签的属性定义了与文档相关联的名称/值对。

  在 HTML 中,<meta> 标签没有结束标签,在 XHTML 中,<meta> 标签必须被正确地关闭。

必要属性

属性值描述contentsome text定义与http-equiv或name属性相关的元信息

可选属性

属性值描述http-equivcontent-type / expire / refresh / set-cookie把content属性关联到HTTP头部。nameauthor / description / keywords / generator / revised / others把 content 属性关联到一个名称。contentsome text定义用于翻译 content 属性值的格式。

  • SEO优化

    关键词:类似这样的 meta 标签可能对于进入搜索引擎的索引有帮助.使用人们可能会搜索,并准确描述网页上所提供信息的描述性和代表性关键字及短语。标记内容太短,则搜索引擎可能不会认为这些内容相关,标记不应超过 874 个字符。

    <meta name="keywords" content="HTML,ASP,PHP,SQL">

    页面描述,每个网页都应有一个不超过 150 个字符且能准确反映网页内容的描述标签

  <meta name="description" content="your description">

    搜索引擎索引方式,robotterms是一组使用逗号(,)分割的值,通常有如下几种取值:none,noindex,nofollow,all,index和follow。确保正确使用nofollow和noindex属性值。

  

<meta name="robots" content="index,follow" />
<!--
all:文件将被检索,且页面上的链接可以被查询;
none:文件将不被检索,且页面上的链接不可以被查询;
index:文件将被检索;
follow:页面上的链接可以被查询;
noindex:文件将不被检索;
nofollow:页面上的链接不可以被查询。
-->

  页面重定向和刷新:content内的数字代表时间(秒),既多少时间后刷新。如果加url,则会重定向到指定网页(搜索引擎能够自动检测,也很容易被引擎视作误导而受到惩罚)。

  <meta http-equiv="Refresh" content="5;url=http://www.w3school.com.cn" /><!--5秒钟后跳转到http://www.w3school.com.cn-->

  <meta http-equiv="Refresh" content="5;" /><!--每5秒钟刷新一下页面-->

  • 移动设备

   viewport:能优化移动浏览器的显示。如果不是响应式网站,不要使用initial-scale或者禁用缩放。大部分4.7-5寸设备的viewport宽设为360px;5.5寸设备设为400px;iphone6设为375px;ipone6 plus设为414px。很多人使用initial-scale=1到非响应式网站上,这会让网站以100%宽度渲染,用户需要手动移动页面或者缩放。如果和initial-scale=1同时使用user-scalable=no或maximum-scale=1,则用户将不能放大/缩小网页来看到全部的内容。

      content 参数:

        width viewport 宽度(数值/device-width)
        height viewport 高度(数值/device-height)
        initial-scale 初始缩放比例
        maximum-scale 最大缩放比例
        minimum-scale 最小缩放比例
        user-scalable 是否允许用户缩放(yes/no)

  

<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no"/>
<!-- `width=device-width` 会导致 iPhone 5 添加到主屏后以 WebApp 全屏模式打开页面时出现黑边 -->

  

  各浏览器平台


  Microsoft Internet Explorer

<!-- 优先使用最新的ie版本 -->
<meta http-equiv="x-ua-compatible" content="ie=edge">
<!-- 是否开启cleartype显示效果 -->
<meta http-equiv="cleartype" content="on">
<meta name="skype_toolbar" content="skype_toolbar_parser_compatible">

<!-- 关于X-UA-Compatible -->
<meta http-equiv="X-UA-Compatible" content="IE=6" ><!-- 使用IE6 -->
<meta http-equiv="X-UA-Compatible" content="IE=7" ><!-- 使用IE7 -->
<meta http-equiv="X-UA-Compatible" content="IE=8" ><!-- 使用IE8 -->

<!-- Pinned Site -->
<!-- IE 10 / Windows 8 -->
<meta name="msapplication-TileImage" content="pinned-tile-144.png">
<meta name="msapplication-TileColor" content="#009900">
<!-- IE 11 / Windows 9.1 -->
<meta name="msapplication-config" content="ieconfig.xml">  

  Google Chrome

<!-- 优先使用最新的chrome版本 -->
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<!-- 禁止自动翻译 -->
<meta name="google" value="notranslate"> 

  360浏览器

  <!-- 选择使用的浏览器解析内核 -->
<meta name="renderer" content="webkit|ie-comp|ie-stand">

  UC手机浏览器

  <!-- 将屏幕锁定在特定的方向 -->
<meta name="screen-orientation" content="landscape/portrait">
<!-- 全屏显示页面 -->
<meta name="full-screen" content="yes">
<!-- 强制图片显示,即使是"text mode" -->
<meta name="imagemode" content="force">
<!-- 应用模式,默认将全屏,禁止长按菜单,禁止手势,标准排版,强制图片显示。 -->
<meta name="browsermode" content="application">
<!-- 禁止夜间模式显示 -->
<meta name="nightmode" content="disable">
<!-- 使用适屏模式显示 -->
<meta name="layoutmode" content="fitscreen">
<!-- 当页面有太多文字时禁止缩放 -->
<meta name="wap-font-scale" content="no">

  QQ手机浏览器

<!-- 锁定屏幕在特定方向 -->
<meta name="x5-orientation" content="landscape/portrait">
<!-- 全屏显示 -->
<meta name="x5-fullscreen" content="true">
<!-- 页面将以应用模式显示 -->
<meta name="x5-page-mode" content="app">

  Apple iOS

<!-- Smart App Banner -->
<meta name="apple-itunes-app" content="app-id=APP_ID,affiliate-data=AFFILIATE_ID,app-argument=SOME_TEXT">
<!-- 禁止自动探测并格式化手机号码 -->
<meta name="format-detection" content="telephone=no">
<!-- Add to Home Screen添加到主屏 -->
<!-- 是否启用 WebApp 全屏模式 -->
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- 设置状态栏的背景颜色,只有在 “apple-mobile-web-app-capable” content=”yes” 时生效 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<!-- 添加到主屏后的标题 -->
<meta name="apple-mobile-web-app-title" content="App Title">

  Google Android

<meta name="theme-color" content="#E64545">
<!-- 添加到主屏 -->
<meta name="mobile-web-app-capable" content="yes">
<!-- More info: https://developer.chrome.com/multidevice/android/installtohomescreen -->
App Links

<!-- iOS -->
<meta property="al:ios:url" content="applinks://docs">
<meta property="al:ios:app_store_id" content="12345">
<meta property="al:ios:app_name" content="App Links">
<!-- Android -->
<meta property="al:android:url" content="applinks://docs">
<meta property="al:android:app_name" content="App Links">
<meta property="al:android:package" content="org.applinks">
<!-- Web Fallback -->
<meta property="al:web:url" content="http://applinks.org/documentation">
<!-- More info: http://applinks.org/documentation/ -->

  其它常用的meta

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="format-detection"content="telephone=no, email=no" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" /><!-- 删除苹果默认的工具栏和菜单栏 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black" /><!-- 设置苹果工具栏颜色 -->
<meta name="format-detection" content="telphone=no, email=no" /><!-- 忽略页面中的数字识别为电话,忽略email识别 -->
<!-- 启用360浏览器的极速模式(webkit) -->
<meta name="renderer" content="webkit">
<!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
<meta name="HandheldFriendly" content="true">
<!-- 微软的老式浏览器 -->
<meta name="MobileOptimized" content="320">
<!-- uc强制竖屏 -->
<meta name="screen-orientation" content="portrait">
<!-- QQ强制竖屏 -->
<meta name="x5-orientation" content="portrait">
<!-- UC强制全屏 -->
<meta name="full-screen" content="yes">
<!-- QQ强制全屏 -->
<meta name="x5-fullscreen" content="true">
<!-- UC应用模式 -->
<meta name="browsermode" content="application">
<!-- QQ应用模式 -->
<meta name="x5-page-mode" content="app">
<!-- windows phone 点击无高光 -->
<meta name="msapplication-tap-highlight" content="no">
<!-- 适应移动端end -->

  • 网页相关

  网页编码:以下两种charset定义方式均可


<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  禁止缓存:禁止浏览器从本地机的缓存中调阅页面内容,网页不保存在缓存中,每次访问都刷新页面。这样设定,访问者将无法脱机浏览

<meta http-equiv="Pragma" content="no-cache">

  网页过期:指定网页在缓存中的过期时间,一旦网页过期,必须到服务器上重新调阅。注意:必须使用GMT的时间格式,或直接设为0(数字表示多少时间后过期)

<Meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT">

  Cookie设置:注意:必须使用GMT的时间格式

<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday,21-Oct-98 16:14:21 GMT; path=/">

  显示窗口的设定:强制页面在当前窗口以独立页面显示,这个属性是用来防止别人在框架里调用你的页面。Content选项:_blank、_top、_self、_parent.

<Meta http-equiv="Widow-target" Content="_top">

  进入与退出:这个是页面被载入和调出时的一些特效。这个有好多特效,可以查询Page-Exit去了解更多。

  <Meta http-equiv="Page-Exit" Content="blendTrans(Duration=0.5)">

  • 安全相关

  内容安全策略CSP(Content-Security-Policy),可以参考https://blog.csdn.net/u014465934/article/details/84199171

<meta http-equiv="Content-Security-Policy" content="script-src 'self'">



喜欢小编的可以点个赞关注小编哦,小编每天都会给大家分享文章。

我自己是一名从事了多年的前端老程序员,小编为大家准备了新出的前端编程学习资料,免费分享给大家!

如果你也想学习前端,可以观看【置顶】文章。也可以私信【1】拿


部分主要涉及两个内容:置顶和列表分类。

1. 置顶

一般的论坛都会有帖子置顶功能。现在我们在通知类列表中增加置顶功能。

要求置顶在最上,其他按照发布时间降序排列。因此修改表,增加一个sort字段,表示排序,0表示置顶

2. 排序

修改controller类中的getNotices方法。

  • 第一按照sort排序,置顶记录sort=0,其他记录sort>0。
  • 第二新发表的通知在前,即按照发表时间降序排列。
  • 第三按分页获取数据,每页10条记录,取第1页。


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语句

  • 显示4个内容:主分类、题目、发布人全名、发布/回复时间
  • 排序按照置顶、回复/发布时间倒序排列
  • 因为显示内容涉及多个表,为提高效率,将所需要的内容用一条sql语句取出。

这里涉及到了两个技术问题

Jpa中如何使用原生sql

为返回字段单独建立一个返回值接口 QuestionIndex。


7. 返回的json数据

8. 前端显示