整合营销服务商

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

免费咨询热线:

HTML是什么?-零基础自学网页制作

TML是什么

HTML的全称是超文本标记语言,英文全称是HyperText Markup Language。如果您是零基础的话,看到这个名字,即使是汉语的,估计也会不知所云。

超文本指的是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。通俗来说就是多个文本之间通过超链接相互连接在一起,这些相互连接的文本集合称为"超文本"。超文本是网页制作一个非常重要的概念,可以说网络的精髓就在于"互联"。

这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。(孙素华编著.Dreamweaver CS5 Flash CS5 Photoshop CS5网页设计从入门到精通:中国青年出版社,2014.10:第16页)

标记语言的概念比较复杂,简单来说,HTML并不是程序语言(不同于C或Python),只是一种在网页中显示资料排版位置的标记结构语言。这句话提炼一下就是"标记信息在页面中排版结构的语言"。

如果读的不太明白,在下一节"HTML基本框架"中会对HTML的排版结构规则进行直观展示,如果您读不懂可以尽情的跳过,毕竟我们的重点是怎么用。

HTML基本框架

HTML框架简单说就是任何HTML网页文件中都会包含的基本代码内容。如果我们打算写一个页面,就一定要把框架代码写入后才能正式开始添加内容。框架代码如下:

<!DOCTYPE HTML><html> <head> </head> <body> </body> </html>

第一行 <!DOCTYPE HTML>

第二行 <html>

第三行 <head>

第四行 </head>

第五行 <body>

第六行 </body>

第七行 </html>

这七行代码是所有HTML页面所共有的,也就是HTML的框架了。不信我们来验证一下。

例子一,头条的文章页面(电脑版)网址:https://www.toutiao.com/i6785149184245760516/

笔者使用Firefox(火狐)浏览器,输入网址后点击键盘上的F12,,如图所示

我们可以看到页面下半部分出现了一个调控台。

点击查看器即可看页面代码。代码如下:

放大一些,大家看看,<!DOCTYPE HTML> <html> <head> </head> <body> </body> </html>这些标签是不是一个不少,只是中间多了很多内容而已。

一个例子不具有普适性,下面我们再看一个例子,我随便找了个新闻页面,网址:https://mil.eastday.com/a/200125113254400.html

使用同样的方法打开查看器看代码,如图:

是不是框架中的代码一个也不少吧。

所以,大家请在自己的电脑中新建一个txt文件,将HTML框架粘贴到txt文件中,并命名为"HTML框架"。以后我们写的每一个页面都会从这个框架开始。

通过对框架中的代码进行观察,细心的读者可能已经发现了HTML这种标记语言的书写规律。

规律1:每一个语句都是包含在<>尖括号内的。这是HTML标记语言的基本特点之一,大家一定记牢。

规律2:除了<!DOCTYPE HTML>这个标签外,其他标签都是成对出现!例如<html>与</html>,<head>与</head>,<body>与</body>。

规律3:这个规律通过观察代码也不难发现,即<html></html>两个标签中间夹着<head></head>和<body></body>,我们把<head></head>标签称为<html></html>标签的子标签,反过来<html></html>标签是<head></head>标签的父标签,<head></head>和<body></body>称为并列关系或者兄弟关系。而<!DOCTYPE HTML>是一个声明语句,属于六亲不认的。

各种关系如下图所示:

这样就回到了之前我们解释"标记语言"的问题上。我们说"标记语言"是"标记信息在页面中排版结构的语言",这种父子关系、兄弟关系就可以理解为一个页面的"结构",这种结构又与页面的排版有关。

在下一期中,我们会通过练习来解释"结构"与排版的关系。

喜欢的小伙伴请加关注,有任何问题可以留言给我,欢迎指正批评,感激不尽!

HTML完整学习目录

HTML序章(学习目的、对象、基本概念)——零基础自学网页制作

第一个HTML页面如何写?——零基础自学网页制作

HTML页面中head标签有啥用?——零基础自学网页制作

初识meta标签与SEO——零基础自学网页制作

HTML中的元素使用方法1——零基础自学网页制作

HTML中的元素使用方法2——零基础自学网页制作

HTML元素中的属性1——零基础自学网页制作

HTML元素中的属性2(路径详解)——零基础自学网页制作

使用HTML添加表格1(基本元素)——零基础自学网页制作

使用HTML添加表格2(表格头部与脚部)——零基础自学网页制作

使用HTML添加表格3(间距与颜色)——零基础自学网页制作

使用HTML添加表格4(行颜色与表格嵌套)——零基础自学网页制作

16进制颜色表示与RGB色彩模型——零基础自学网页制作

HTML中的块级元素与内联元素——零基础自学网页制作

初识HTML中的<div>块元素——零基础自学网页制作

在HTML页面中嵌入其他页面的方法——零基础自学网页制作

封闭在家学网页制作!为页面嵌入PDF文件——零基础自学网页制作

HTML表单元素初识1——零基础自学网页制作

HTML表单元素初识2——零基础自学网页制作

HTML表单3(下拉列表、多行文字输入)——零基础自学网页制作

HTML表单4(form的action、method属性)——零基础自学网页制作

HTML列表制作讲解——零基础自学网页制作

为HTML页面添加视频、音频的方法——零基础自学网页制作

音视频格式转换神器与html视频元素加字幕——零基础自学网页制作

HTML中使用<a>标签实现文本内链接——零基础自学网页制作

近碰到个需求,需要把当前页面生成 pdf,并下载。弄了几天,自己整理整理,记录下来,我觉得应该会有人需要 :)

项目源码地址:https://github.com/linwalker/render-html-to-pdf


简介

我们可以直接在浏览器端使用html2canvas,对整个或局部页面进行“截图”。但这并不是真的截图,而是通过遍历页面DOM结构,收集所有元素信息及相应样式,渲染出canvas image。

由于html2canvas只能将它能处理的生成canvas image,因此渲染出来的结果并不是100%与原来一致。但它不需要服务器参与,整个图片都由客户端浏览器生成,使用很方便。

使用

使用的API也很简洁,下面代码可以将某个元素渲染成canvas:

html2canvas(element, {
 onrendered: function(canvas) {
 // canvas is the final rendered <canvas> element
 }
});

通过onrendered方法,可以将生成的canvas进行回调,比如插入到页面中:

html2canvas(element, {
 onrendered: function(canvas) {
 document.body.appendChild(canvas);
 }
});

做个小例子(demo1)代码如下:

这个例子将页面body中的元素渲染成canvas,并插入到body中。

jsPDF

jsPDF库可以用于浏览器端生成PDF。

文字生成PDF

使用方法如下:

// 默认a4大小,竖直方向,mm单位的PDF
var doc = new jsPDF();
// 添加文本‘Download PDF’
doc.text('Download PDF!', 10, 10);
doc.save('a4.pdf');

文字与图片生成PDF

// 三个参数,第一个方向,第二个尺寸,第三个尺寸格式
var doc = new jsPDF('landscape','pt',[205, 155])
// 将图片转化为dataUrl
var imageData = ‘data:image/png;base64,iVBORw0KGgo...’;
//设置字体大小
doc.setFontSize(20);
//10,20这两参数控制文字距离左边,与上边的距离
doc.text('Stone', 10, 20);
// 0, 40, 控制文字距离左边,与上边的距离
doc.addImage(imageData, 'PNG', 0, 40, 205, 115);
doc.save('a4.pdf')

生成pdf需要把转化的元素添加到jsPDF实例中,也有添加html的功能,但某些元素无法生成在pdf中,因此可以使用html2canvas + jsPDF的方式将页面转成pdf。通过html2canvas将遍历页面元素,并渲染生成canvas,然后将canvas图片格式添加到jsPDF实例,生成pdf。

html2canvas + jsPDF

单页

将demo1的例子修改下:

如果页面内容根据a4比例转化后高度超过a4纸高度呢,生成的pdf会怎么样?会分页吗?

你可以试试,验证一下自己的想法。

jsPDF提供了一个很有用的API, addPage(),我们可以通过 pdf.addPage(),来添加一页pdf,然后通过 pdf.addImage(...),将图片赋予这页pdf来显示。

那么我们如何确定哪里分页?

这个问题好回答,我们可以设置一个 pageHeight,超过这个高度的内容放入下一页pdf。

来捋一下思路,将html页面内容生成canvas图片,通过 addImage将第一页图片添加到pdf中,超过一页内容,通过 addPage()添加pdf页数,然后再通过 addImage将下一页图片添加到pdf中。

嗯~,很好!巴特,难道没有发现问题吗?

这个方法实现的前提是 — — 我们能根据 pageHeight先将整页内容生成的canvas图片分割成对应的小图片,然后一个萝卜一个坑,一页一页 addImage进去。

What? 想一想我们的canvas是肿么来的,不用拉上去,直接看下面:

html2canvas(document.body, {
 onrendered:function(canvas) {
 //it is here we handle the canvas
 }
})

这里的 body就是要生成canvas的元素对象,一个元素生成一个canvas;那么我们需要一页一页的canvas,也就是说。。。

你觉得可能吗? 我觉得不太现实,按这思路要获取页面上不同位置的DOM元素,然后通过 htnl2canvas(element,option)来处理,先不说能不能刚好在每个 pageHeight的位置刚好找到一个DOM元素,就算找到了,这样做累不累。

累的话 :)可以看看下面这种方法。

多页

我提供的思路是我们只生成一个canvas,对就一个,转化元素就是你要转成pdf内容的母元素,在这篇demo里就是 body了;其他不变,也是超过一页内容就 addPage,然后 addImage,只不过这里添加的是同一个canvas。

当然这样做只会出现多页重复的pdf,那到底怎么实现正确分页显示。其实主要利用了jsPDF的两点:

  • 超过jsPDF实例格式尺寸的内容不显示( varpdf=newjsPDF('','pt','a4');demo中就是a4纸的尺寸)
  • addImage有两个参数可以控制图片在pdf中的位置

虽然每一页pdf上显示的图片是相同的,但我们通过调整图片的位置,产生了分页的错觉。以第二页为例,将竖直方向上的偏移设置为 -841.89即一张a4纸的高度,又因为超过a4纸高度范围的图片不显示,所以第二页显示了图片竖直方向上[841.89,1682.78]范围内的内容,这就得到了分页的效果,以此类推。

还是看代码吧:

两边留边距

修改imgWidth,并且在addImage时x方向参数设置你要的边距,具体代码如下:

作者:linwalkerhttps://segmentfault.com/a/1190000009211079

今天,前端工程师已经成为研发体系中的重要岗位之一。

可是与此相对的是,极少大学的计算机专业愿意开设前端课程,大部分前端工程师的知识,也都是在实践和工作中不断学习的。

最近收到很多同学的后台留言,说希望多推出一些前端方向的教程。

今天我们就带来一门适合前端初学者的课程,可以带你从零入门 HTML、CSS、JS、React 等前端核心技能,并创建一个待办事项的管理应用~

项目效果:


课程从最基础的 HTML/ CSS/JS 讲起,还包含了 TypeScript/React/Fabric 等常用技能的讲解。由浅入深,层层递进,如果你想快速上手 React 框架,这门课会是你非常好的选择。

访问“实验楼”官网,搜索“从 0 到 1 构建待办事项应用”就能学习全部课程内容。

以下是课程第一节的内容 —— 「HTML 简介」,带你快速入门HTML,让我们一起进入前端的大门看看吧:

「HTML 简介」

实验介绍

本实验是对 HTML 进行学习,并且较详细的说明了 Web 是如何工作的。主要内容有:HTML 常见标签、HTML 文档结构、HTML 表格和表单、HTML 有序列表和无序列表。通过本节学习,可以构建简单的 HTML 网页。

知识点

  • 什么是 HTML
  • Web 是如何工作的
  • 文档结构
  • 常见标签
  • 表格
  • 表单
  • 有序列表和无序列表

什么是 HTML

HTML(超文本标记语言)是一种用于创建网页的标准标记语言。HTML 不需要编译,可以直接由浏览器执行,它的解析依赖于浏览器的内核。它不是一种编程语言,而是一种标记语言。

Web 是如何工作的

下面我们来演示用户是如何看到一个网页显示的。

具体来讲:

  1. 当用户通过浏览器输入网址后,浏览器先在 DNS 服务器上找到它,然后对它进行解析。
  2. 解析完成后,浏览器给服务器发送 http 请求。
  3. 服务器同意这个请求,就把 HTML 文件发送回浏览器。
  4. 浏览器拿到 HTML 文件,对其解析执行,显示在用户屏幕上。

HTML 文档结构

首先我们来看一个例子:

<!DOCTYPE html>
<html>
  <head>
    <title>HTML 简介</title>
    <meta charset="utf-8" />
  </head>
  <body></body>
</html>

这是一个 HTML 的基本骨架,我们将逐步介绍这些是什么意思。

文档类型声明

<!DOCTYPE html> 是我们的文档声明头。他告诉了浏览器,本文档处理的是 HTML 文档。

html 标签

html 标签即根元素,此处表示文档的开始,该标签包含两个子标签:head 和 body。

head 元素

head 标签下面所包含的标签由 title、meta、link、style、script 等(后面会讲到)。

title 标签

作用:设置文档的标题或者名称。浏览器通常将该标签的内容显示在窗口顶部或者标签页上。每个 HTML 文档只能有一个,必须有一个 title 标签。

meta 标签

<metacharset="UTF-8"> 声明字符的编码格式为 utf-8。

body 标签

body 标签定义文档的主体,也就是我们的主要内容(比如文本、超链接、图像、表格和列表等)。

常见标签

1.h 系类标签

h 标签有六种 h1,h2,h3,h4,h5,h6,它代表着我们的标题。

<!DOCTYPE html>
<html>
  <head>
    <title>HTML 简介</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <h1>我是一级标题</h1>
    <h2>我是二级标题</h2>
    <h3>我是三级标题</h3>
    <h4>我是四级标题</h4>
    <h5>我是五级标题</h5>
    <h6>我是六级标题</h6>
  </body>
</html>

为了大家能更有效的学习,请使用实验楼的环境。首先我们新建一个文件,点击 File,然后 New File,命名为 index.html。

然后输入上面的代码。

让我们来看一下运行效果吧。鼠标右键 index.html 文件,点击 Open With,然后点击 Preview。

最终效果为:

2.p 标签

p 标签是我们的文本标签,p 标签会自动在其两个标签之间创建一些空白。删掉上段代码 <body> 标签里的内容,把下面的内容放到 <body> 标签里面去。

<p>我是第一段文字,实验楼,做实验,学编程</p>
<p>我是第二段文字,实验楼,做实验,学编程</p>

3. 图片标签

HTML 的图像是通过标签 <img> 来定义的。语法: <imgsrc="图片地址"/> 删掉上段代码 <body> 标签里的内容,把下面的内容放到 <body> 标签里面去。

<p>实验楼图片:</p>
<img src="https://static.shiyanlou.com/frontend/dist/img/9f43b00.svg" />

4.a 标签

<a> 标签是超链接标签,意思就是我们点击它可以跳转到一个网页。删掉上段代码 <body> 标签里的内容,把下面的内容放到 <body> 标签里面去。

<a href="https://www.shiyanlou.com/">实验楼</a>

点击文字:

跳转到指定网页:


篇幅有限,后续的课程内容,请在“实验楼”边敲代码边学习~

访问“实验楼”官网,搜索“从 0 到 1 构建待办事项应用”,就能找到课程,继续学习啦!