文章目录

  • html的尺寸单位
    • 绝对单位
    • 相对单位
  • html 元素布局分类有哪些?
  • html 中 b 标签和 strong 标签的区别?
  • 减少 dom 数量的办法?
  • 一次性给你大量 dom 如何优化?
  • 如何禁用 a 标签默认事件且禁用后如何实现跳转?
  • 什么是 SEO?
  • 前端如何进行 seo 优化?
  • 什么是 meta 标签及其常用属性?
  • HTML页脚始终固定在底部
  • JS实现窗口横向滚动

html的尺寸单位

通常我们在项目开发中,使用px作为尺寸的单位,而不是使用相对单位,如:remem等。在万物互联的时代,最好的方式是相对单位remvhvw等现代 CSS 布局(如 flexbox 和 grid)方式,最大限度的支持各种终端设备。

绝对单位

  • px :是一个绝对单位,主要是因为它是固定的,不会根据任何其他元素的测量而改变。

相对单位

  • vw(viewpoint width):相对于视口的宽度
  • vh(viewpoint height):相对于视口的高度
  • rem(font size of the root element):相对于根 ( ) 元素 (默认字体大小通常为 16px )
  • em(font size of the element):相对于父元素
  • % :相对于父元素

html 元素布局分类有哪些?

  • 内联元素(display:inline):无法设定宽高,元素大小由内容大小决定,不会自动换行,从左到右排列,内部不能嵌套块级元素
  • 块级元素(display:block):会自动换行,宽度默认父元素的宽度,高度默认内容高度
  • 内联块级元素(display:inline-block):可以设置宽高,排列方式从左向右

html 中 b 标签和 strong 标签的区别?

  • b:为了加粗而加粗
  • strong:为了标明重点加粗 (盲人使用阅读设备 strong 会重读,b 不会)

减少 dom 数量的办法?

  • 使用伪元素替代 dom 元素解决方案,比如清除浮动,样式实现等。
  • 不滥用 dom 标签,结构合理。
  • 按需加载,减少不必要的渲染。

一次性给你大量 dom 如何优化?

  • 缓存 dom 对象,比如循环插入大量 dom 对象,将父 dom 在循环外获取,循环内插入。
  • 使用 document.createDocumentFragement 创建文档碎片节点或者创建一个不在 dom 树上的节点,将大量 dom 一次性更新进入该节点,然后批量替换或插入 dom 中。
  • 将连续的 appendChild 替换成使用 innerHtml,避免多次对 dom 造成影响(ps:appendChild 向父元素最后一个子节点插入元素,innerHtml 直接替换父元素下所有元素,appendChild 添加的元素如果是页面上已有的元素,执行完原元素会被销毁。)

如何禁用 a 标签默认事件且禁用后如何实现跳转?

  • 禁用 a 标签默认事件

    a 标签的 href 属性设置为href="javascript:;"||href="javascript:void(0);",通过执行空 js 代码,阻止跳转

    在 a 标签点击事件上使用e.preventDefault()window.event.returnValue=false,后者兼容 ie,以此阻止 dom 元素默认行为

  • 实现跳转

    点击事件 使用 location.href = url 进行跳转。

什么是 SEO?

搜索引擎后台有个非常庞大的数据库,数据库存储海量关键词,每个关键词对应多个网址。这些数据由蜘蛛每天在互联网中收集获取,从一个链接爬行到另一个链接,对当前网页进行提炼关键词,之后将关键词与对应网站保存在数据库中,而当我们使用搜索引擎时,搜索引擎肯定会将与搜索词与数据库中存在的关键词对比,匹配程度越高的关键词对应的网站越是优先展示在前面。而 seo(seach engine optimization)就是在此基础上,对当前网站进行优化,改进网站对应关键词在搜索引擎中的排名,获取更多的曝光程度。

前端如何进行 seo 优化?

前端进行 seo 优化无非是期望通过对网页的处理,使得爬虫对当前网站提取出的关键词更加贴切,提高网站关键词在搜索引擎中的排名。

  • 合理控制网站首页链接数量,链接足够多蜘蛛才能爬取内页,提高网站收录数量,但也不能太多,过多无意义链接不仅影响用户体验也会降低网站首页权重
  • 控制网站结构层次在三层以内,让蜘蛛跳转三次就能到到达网站任何一个内页,这意味着层次低越容易被蜘蛛收录,如果层次太多蜘蛛可能就不愿意继爬取
  • 导航尽量使用文字的方式,如果是图片也必须加入 alt 与 title 属性,告诉搜索引擎导航的定位
  • 利用布局,将重要的的 html 放在前面,便于蜘蛛的优先爬取
  • 控制页面大小,提高页面加载速度,如果页面加载速度很慢,蜘蛛就会离开
  • 页面的keywords>尽量强调重点关键词,不要重复过分堆砌
  • 正文标题使用 h1 标签,h1 标签自带权重,蜘蛛认为它最重要
  • 使用 strong 标签 em 标签而不是 b 标签,因为 strong 与 em 目的就是标明重点而加粗,在搜索引擎能够得到高度重视
  • 重要内容不要使用 js 输出,蜘蛛不会读取 js 输出,可以采用服务端渲染的办法将中药内容直接呈现在当前 html 中。
  • 蜘蛛只抓取 get 请求页面,不抓去 post 请求页面,合理控制页面请求方式
  • 外部链接需要加上el = nofollow属性,告诉蜘蛛不要去爬取,因为爬取外链可能蜘蛛就不回来了。
  • 不要使用 iframe 框架,蜘蛛一般不会读取其内容

什么是 meta 标签及其常用属性?

meta 标签位于 html 的 head 区域,它描述了当前网页的各种信息,比如页面的说明,关键字,修改日企等。对于用户它是不可见的,它服务于浏览器,搜索引擎及其他网络服务。

  • charset:定义文档字符编码
  • content:定义 name 属性或者 http-equiv 属性相关元信息
  • name:将 content 属性关联到一个名称
  • http-equiv:将 content 属性关联到 http 头部
// 当前网页字符编码utf-8
<meta charset="utf-8"/>
// 当前网页关键字,seo优化会用到
<meta name="keywords" content="便于seo优化"/>
// 描述当前网页干什么的
<meta name="description" content="当前网页说明"/>
// 声明网页字符编码
<meta name="content-Type" content="text/html"/>

HTML页脚始终固定在底部

页脚固定在底部分两种情况考虑,一种是有滑动栏的情况,一种是没有的。后者比较简单,直接加上定位属性就是了,但是在页面内容是扩充整个页面以至于可以下滑浏览时,这时候单纯加上定位属性就不那么可行了,鉴于此我写了一个通用的js方法帮我搞定所有可能页脚固定的情况。

废话不多说,直接来干货:

<!DOCTYPE html>
<html>
<head>
<style>
*{margin: 0;padding: 0;
}
div{vertical-align: middle;display: inline-block;float:left;text-align: center;
}
.footer{height: 50px;width: 80%;background:#111;color:white;
}
</style>
<script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>
</script>
<script>
$(document).ready(function(){
function t(){
var e = $(".footer");//获取页脚div的对象
var h = e.offset().top + e.height() ;//获取页脚偏移量加页脚高度的值
//判断页脚div底部到页面顶端的实际距离是否小于页面可见区域高度
if(h < document.body.clientHeight){
//当页面刚好可以包容所有内容不需要下拉时直接加上个定位就是了,当然这里也可以用绝对和相对属性
//具体设置根据你实际情况来定吧$(".footer").css({position:"fixed",left:"20%",bottom:"0px"});return;
}function t2(){var a = $(document).scrollTop()+document.documentElement.clientHeight;//获取页面滑动偏移量加页面可见区域的高度
//判断页脚div底部到页面顶端的实际距离是否小于页面滑动偏移量加页面可见区域高度
if(a >= h){
//如果页面内容太多,需要下滑展示的时候,给页脚一个固定定位属性
$(".footer").css({position:"fixed",left:"20%",bottom:"0px"});
}else{
//当页面重新上滑页脚需要被隐藏的时候移除它的定位属性,这样不论何时,它肯定是被页面撑起来固定到底部展示的。$(".footer").removeAttr("style");
}
}
t2();
//在页面大小改变时触发方法t2$(document).resize(t2);//在页面滑动时触发方法t2$(document).scroll(t2);
}
//直接运行方法t
t();});
</script>
</head>
<body>
<div style='height:1500px;width:20%;background:blue;'><span style="line-height: 500px;color:white;">左侧导航栏</span></div>
<div style='height:80px;width:80%;background:#ccc;'><span style="line-height: 80px;">这是一个页头</span></div>
<div style='height:300px;width:30%;background:#AAA;'></div>
<div style='height:150px;width:30%;background:#dda;'></div>
<div style='height:150px;width:30%;background:#bbb;'></div>
<div style='height:900px;width:80%;background:#eee;'></div>
<div class='footer'><span style="line-height: 50px;">这是一个页脚</span></div>
</body>
</html>

显示效果为

JS实现窗口横向滚动

在页面上直接用鼠标的滚轮垂直滚动,可以实现三个页面之间横向滚动的效果。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS实现窗口横向滚动</title>
<style>
.container {display: flex;overflow-x: scroll;
}
.page {width: 100vw;height: 100vh;flex-shrink: 0;
}.page:nth-child(1) {background: hsl(140deg, 50%, 50%);
}.page:nth-child(2) {background: hsl(210deg, 50%, 50%);
}.page:nth-child(3) {background: hsl(270deg, 50%, 50%);
}
</style>
</head>
<body><div class="container"><div class="page">页面1</div><div class="page">页面2</div><div class="page">页面3</div></div>
</body>
</html><script>
let container = document.querySelector(".container");
container.addEventListener("wheel", (event) => {event.preventDefault();container.scrollLeft += event.deltaY;
});</script>

本代码仅供参考,如有漏洞之处,欢迎指出。

关于HTML的常见问题相关推荐

  1. llvm常见问题 (FAQ)

    llvm常见问题 (FAQ) License 可以修改 LLVM 源代码并重新分发修改后的源代码吗? 可以修改 LLVM 源代码并重新分发基于二进制文件或其它工具,而无需重新分发源代码吗? 源代码 L ...

  2. 深度学习常见问题解析

    深度学习常见问题解析 计算机视觉与自动驾驶 今天 一.为什么深层神经网络难以训练? 1.梯度消失.梯度消失是指通过隐藏层从后向前看,梯度会变得越来越小,说明前面层的学习会显著慢于后面层的学习,所以学习 ...

  3. oracle数据库性能awr,常见问题:如何使用AWR报告来诊断数据库性能问题

    常见问题:如何使用AWR报告来诊断数据库性能问题 (Doc ID 1523048.1) Last updated on FEBRUARY 03, 2019 适用于: Oracle Database - ...

  4. JAVA 多用户商城系统b2b2c-Spring Cloud常见问题与总结(一)

    在使用Spring Cloud的过程中,难免会遇到一些问题.所以对Spring Cloud的常用问题做一些总结.需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台 ...

  5. 视频直播常见问题与解决办法汇总【系列二—直播截图】

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 使用场景 用户常需要对视频直播的内容进行分析.例如,需要对直播中的某一帧的内容作为封面图片或者对于直播内容进行鉴黄以查 ...

  6. 小编说之“常见问题答疑”

    2019独角兽企业重金招聘Python工程师标准>>> 关于前嗅Forespider爬虫的常见问题答疑 奋战在一线为客户答疑的狗蛋儿给小编提供了很多客户经常会问到的问题的素材,小编帮 ...

  7. pda找不到服务器,PDA连不上服务器常见问题分析.doc

    PDA连不上服务器常见问题分析.doc PDA连不上服务器常见问题分析 请查看PDA的网络通不通,可以先检查WIFI/3G是否连接上网络,如果连接不上,点击PingToots工具,用"pin ...

  8. 初学者css常见问题_5分钟内学习CSS Grid-初学者教程

    初学者css常见问题 Grid layouts are fundamental to the design of websites, and the CSS Grid module is the mo ...

  9. OpenStack环境搭建(六:常见问题及解决方案总结)

    实验要求: 完成Virtual box平台安装,会应用相关操作: 在virtual box虚拟平台上部署Fuel Master节点: 在virtual box虚拟平台上部署计算节点Computer: ...

  10. ESXi6.5环境搭建(五:常见问题及解决方案实验总结)

    实验目的及要求 完成VMware workstations安装,会应用相关操作: 完成虚拟机中ESXI6.5平台的安装及网络环境配置: 完成VMware vSphere Client 6.0软件在PC ...

最新文章

  1. 【.net深呼吸】动态类型(高级篇)
  2. python统计excel中重复数据_EXCEL公式解读:统计不重复个数
  3. 25个非常棒的jQuery滑块插件和教程
  4. 4.录屏软件录屏端和接收端程序
  5. 【数字逻辑入门】计算机如何存储1位二进制数
  6. “金嗓子”宣布退市!曾因罗纳尔多代言争议爆红,广告词家喻户晓…
  7. redirect重定向后https变成了http如何解决
  8. 放心!没人在意你使用的是命令式编程还是声明式编程
  9. 预告 | PGCon 2022(PostgreSQL全球开发者大会)开幕,IvorySQL受邀参加
  10. R语言基础-Rstudio基本使用
  11. 异常测试之Socket网络异常
  12. SEO中的十大关键词竞争度分析方法
  13. 商务翻译证,高级商务翻译证
  14. Γ函数及Γ分布,t分布,ϰ分布和费舍尔分布
  15. subversion出现如下错误怎么解决!已解决
  16. 分布式服务器框架之Server.Core库中实现 XXTEA分组加密算法
  17. ISO Country Code - 标准国家码
  18. 用HTML写一个2023跨年动画代码(烟花+自定义文字+背景音乐+雪花+倒计时)
  19. Zynga发售限量版FarmVille毛绒玩具
  20. hermite、三次样条插值算法 调用matlab函数、代码实现

热门文章

  1. 大冬天干什么最有仪式感
  2. 荣耀畅玩30Plus和vivoY32哪个好
  3. PPT打开显示找不到 ppcore.dll,无法打开 PPT之另解
  4. 【干货】手把手教程!如何安装官方纯净版window11操作系统
  5. HTTP 响应行 错误类型响应码
  6. linux nginx 日志查看,查看nginx日志_Linux系统怎么分析Nginx日志
  7. 分享中国天气网的接口
  8. 医药效果的药品作用分析
  9. 对redo wastage这个概念的说明
  10. CDR插件开发之CPG插件017 - 在VS2019中实现CPG插件调试(自动写入CPG、自动启动CDR)