整合营销服务商

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

免费咨询热线:

KLineChart 可高度自定义的轻量级k线图 支持移动端

天推荐的这个项目是「KLineChart」,可以高度自定义的轻量级 K 线图。

KLineChart 基于 html5 canvas 构建,默认支持几十种技术指标、多种图形标记且可自行扩展,默认支持多种画图模型且可自行扩展,无任何第三方依赖,支持移动端。

KLineChart 功能集

  • 支持样式修改 (包括各种文字和线,主图类型,坐标轴类型及位置等等)
  • 支持设置价格和数量精度
  • 支持时区设置
  • 支持缩放比例设置
  • 支持禁止滚动和缩放
  • 支持分段加载历史数据和实时更新
  • 技术指标
  • 内置几十种技术指标
  • 支持主图设置多个技术指标类型
  • 支持单独窗口展示 (理论上可以创建无数个窗口)
  • 支持为窗口设置技术指标类型
  • 支持为单个技术指标设置精度、样式和计算参数
  • 支持自定义且能够自行绘制
  • 图形标记
  • 内置多种图形
  • 支持根据鼠标动作去一步步地完成绘制
  • 支持一步创建一个完整的图形
  • 支持单独设置样式
  • 支持自定义
  • 支持图表动作监听
  • 支持图表生成图片导出

快速开始

1、安装

  • 使用 npmnpm install klinecharts --save
  • 使用 yarnyarn add klinecharts

2、引入

// 全量引入,包含所有内置的技术指标和绘图标记
import { init } from 'klinecharts'
// 引入部分功能,不包含内置的绘图标记
import { init } from 'klinecharts/index.blank'
// 引入基础功能,不包含内置的技术指标和绘图标记
import { init } from 'klinecharts/index.simple'
// 以上三种方式根据需要,使用一种即可

3、创建第一个图表

import { init } from 'klinecharts'
// 初始化图表
const chart = init(`${domId}`)
// 为图表添加数据
chart.applyNewData([
{ close: 4976.16, high: 4977.99, low: 4970.12, open: 4972.89, timestamp: 1587660000000, volume: 204 },
{ close: 4977.33, high: 4979.94, low: 4971.34, open: 4973.20, timestamp: 1587660060000, volume: 194 },
{ close: 4977.93, high: 4977.93, low: 4974.20, open: 4976.53, timestamp: 1587660120000, volume: 197 },
{ close: 4966.77, high: 4968.53, low: 4962.20, open: 4963.88, timestamp: 1587660180000, volume: 28 },
{ close: 4961.56, high: 4972.61, low: 4961.28, open: 4961.28, timestamp: 1587660240000, volume: 184 },
{ close: 4964.19, high: 4964.74, low: 4961.42, open: 4961.64, timestamp: 1587660300000, volume: 191 },
{ close: 4968.93, high: 4972.70, low: 4964.55, open: 4966.96, timestamp: 1587660360000, volume: 105 },
{ close: 4979.31, high: 4979.61, low: 4973.99, open: 4977.06, timestamp: 1587660420000, volume: 35 },
{ close: 4977.02, high: 4981.66, low: 4975.14, open: 4981.66, timestamp: 1587660480000, volume: 135 },
{ close: 4985.09, high: 4988.62, low: 4980.30, open: 4986.72, timestamp: 1587660540000, volume: 76 }
])

看一下效果:

开源项目地址:https://github.com/liihuu/KLineChart

示例代码地址:https://github.com/liihuu/KLineChartSample

示例页面地址:https://liihuu.github.io/KLineChart

开源项目作者:liihuu

家好,很高兴又见面了,我是"高级前端‬进阶‬",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。

今天给大家带来的主题是HTML5 和word的互相转化,话不多说,直接进入正题!

1.HTML转化为Word之 html-docx-js

1.1 什么是 html-docx-js

html-docx-js 是一个非常小的库,能够将 HTML 文档转换为 Microsoft Word 2007 及更高版本使用的 DOCX 格式。 html-docx-js 设法使用称为“altchunks”的功能在浏览器中执行转换。 简而言之,它允许以不同的标记语言嵌入内容。 开发者使用 MHT 文档将嵌入内容发送到 Word,因为它允许处理图像。 Word 打开此类文件后,会将外部内容转换为 Word Processing ML(这是 DOCX 文件的标记语言的调用方式)并替换引用。

Microsoft Word for Mac 2008 不支持 Altchunk,LibreOffice 和 Google Docs 也不支持 Altchunk。

关于 html-docx-js 库有几点需要说明:

  • html-docx-js 适用于任何支持 Blob 的现代浏览器(无论是本机还是通过 Blob.js)。它在 Google Chrome 36、Safari 7 和 Internet Explorer 10 上进行了测试,也适用于使用 Buffer 而不是 Blob 的 Node.js(在 v0.10.12 上测试)。
  • html-docx-js 仅支持内联的 base64 图像(通过 DATA URI 获取)。 但动态转换常规图像(来自静态文件夹)很容易,开发者可以自行完成。

目前 Mammoth 在 Github 上通过 MIT 协议开源,有超过 1k 的 star、0.3k 的 fork、0.7k 的项目依赖量、NPM 周平均下载量 9k,是一个值得关注的前端开源项目。

1.2 如何使用 html-docx-js

var converted = htmlDocx.asBlob(content);
saveAs(converted, "test.docx");

asBlob 可以采用其他选项来控制文档的页面设置:

  • orientation:横向或纵向(默认)
  • margins:边距大小图
  • top:数字(默认:1440,即 2.54 厘米)
  • right:数字(默认:1440)
  • bottom:数字(默认:1440)
  • left:数字(默认:1440)
  • header:数字(默认值:720)
  • footer:数字(默认值:720)
  • gutter:数字(默认值:0)

比如下面的例子:

var converted = htmlDocx.asBlob(content, {
  orientation: "landscape",
  margins: { top: 720 },
});
saveAs(converted, "test.docx");

需要注意的是,开发者需要传递完整、有效的 HTML(包括 DOCTYPE、html 和 body 标签)。 这可能不太方便,但可以让开发者在样式标签中包含 CSS 规则。

html-docx-js 作为独立”Browserify 模块(UMD)分发。 开发者可以将其作为 html-docx 要求。 如果没有可用的模块加载器,它将把自己注册在 window.htmlDocx。

2.mammoth.js

2.1 什么是 mammoth.js

Mammoth.js 旨在转换 .docx 文档,例如:由 Microsoft Word、Google Docs 和 LibreOffice 创建的文档,并将其转换为 HTML。 Mammoth 的目标是通过使用文档中的语义信息并忽略其他细节来生成简单且干净的 HTML。 例如,Mammoth 将任何具有标题 1 样式的段落转换为 h1 元素,而不是尝试精确复制标题的样式(字体、文本大小、颜色等)。

.docx 使用的结构与 HTML 的结构之间存在很大的不匹配,这意味着对于更复杂的文档来说,转换不太可能完美。 如果开发者仅使用样式来对文档进行语义标记,那么 Mammoth 效果最佳。

Mammoth.js 目前支持以下功能:

  • 标题、列表、评论
  • 从自己的 docx 样式到 HTML 的可定制映射。 例如,可以通过提供适当的样式映射将 warningHeading 转换为 h1.warning。
  • Tables: 当前忽略表格本身的格式(例如:边框),但文本的格式与文档其余部分的格式相同。
  • 脚注和尾注、图片、粗体、斜体、下划线、删除线、上标和下标、链接、Line、Line breaks
  • 文本框:文本框的内容被视为出现在包含文本框的段落之后的单独段落。

Mammoth 在众多平台可用,比如:Python、WordPress、Java/JVM、.NET 等等。目前 Mammoth 在 Github 上通过 BSD-2-Clause 开源,有超过 4.1k 的 star、0.5k 的 fork、4.4k 的项目依赖量、NPM 周平均下载量 76k,是一个值得关注的前端优质开源项目。

2.2 使用 mammoth.js

以文档转换为例。

Mammoth 允许在转换文档之前对其进行处理。 例如,假设该文档尚未进行语义标记,但开发者知道任何居中对齐的段落都应该是标题,则可以使用 transformDocument 参数来适当地修改文档:

function transformElement(element) {
  if (element.children) {
    var children = _.map(element.children, transformElement);
    element = { ...element, children: children };
  }
  if (element.type === "paragraph") {
    element = transformParagraph(element);
  }

  return element;
}
function transformParagraph(element) {
  if (element.alignment === "center" && !element.styleId) {
    return { ...element, styleId: "Heading2" };
  } else {
    return element;
  }
}
var options = {
  transformDocument: transformElement,
};

TransformDocument 的返回值在 HTML 生成期间使用。同时,上面的代码可以使用 mammoth.transforms.paragraph 函数进行优化,比如:

function transformParagraph(element) {
  if (element.alignment === "center" && !element.styleId) {
    return { ...element, styleId: "Heading2" };
  } else {
    return element;
  }
}
var options = {
  transformDocument: mammoth.transforms.paragraph(transformParagraph),
};

或者,如果开发者希望已明确设置为使用等宽字体来表示代码的段落:

const monospaceFonts = ["consolas", "courier", "courier new"];

function transformParagraph(paragraph) {
  var runs = mammoth.transforms.getDescendantsOfType(paragraph, "run");
  var isMatch =
    runs.length > 0 &&
    runs.every(function (run) {
      return run.font && monospaceFonts.indexOf(run.font.toLowerCase()) !== -1;
    });
  if (isMatch) {
    return {
      ...paragraph,
      styleId: "code",
      styleName: "Code",
    };
  } else {
    return paragraph;
  }
}
var options = {
  transformDocument: mammoth.transforms.paragraph(transformParagraph),
  styleMap: ["p[style-name='Code'] => pre:separator('\n')"],
};

关于 Mammoth 库的更多用法,更多 API 示例可以参考文末资料,本文不再过多展开。

3.本文总结

本文主要和大家介绍 HTML5 和word互转的两个开源库,分别为:html-docx-js、mammoth.js。相信通过本文的阅读,大家对 html-docx-js、mammoth.js 会有一个初步的了解。

因为篇幅有限,关于 html-docx-js、mammoth.js 的更多用法和特性文章并没有过多展开,如果有兴趣,可以在我的主页继续阅读,同时文末的参考资料提供了大量优秀文档以供学习。最后,欢迎大家点赞、评论、转发、收藏,您的支持是我不断创作的动力。

参考资料

https://github.com/evidenceprime/html-docx-js

https://github.com/mwilliamson/mammoth.js

https://www.npmjs.com/package/html-docx-js

https://www.npmjs.com/package/mammoth

https://www.tutorialswebsite.com/export-html-to-word-document-with-javascript/

https://www.vecteezy.com/vector-art/136754-free-vector-documents

、Html的基本结构:

<!DOCTYPE html>

<html>

<head>

<meta charset=utf-8">

<title></title>

</head>

<body>

网页的文本、图片等信息;

</body>

</html>

二、Head部分:用于表示网页的元数据即描述网页的基本信息

其常用标签及属性有:

1、title标签:浏览器标签页显示的标题

2、meta标签:其常用属性

①charset:设置文档的字符集编码格式。HTML5中设置字符集编码:<meta charset="UTF-8">

常见的字符集编码格式:

a.GB-2312:国标码,简体中文

b.GBK:扩展的国标码

c.UTF-8:万国码 Unicode 常用

②http-equiv属性:将我们的信息写给浏览器看,让浏览器按照这里面的要求执行,可选属性值:Content-Type(文档类型) refresh(网页定时刷新) set-cookie(设置浏览器cookie缓存) 需要配合content属性使用。(http-equiv属性只是表明需要设置哪一部分,具体的设置内容,放到content属性中)

③name属性:使用方法同“http-equiv”。将我们的信息写给搜索引擎看

常用且需要掌握的属性值:author(作者) keywords(网页关键字) description(网页描述) 这两个属性设置,网页必不可少。

3、link标签:链接网页图标(title前的小logo),其常用属性有:

①rel属性:声明链接文件的类型,此处选icon

②type属性:可以省略

③href属性:表示图片的路径地址

三、body部分:网页的文本、图片等信息

标签的分类:

块级标签:显示为块,前后隔一行(自动换行)

行级标签:按行从左往右逐一显示。

1、 常见的块级标签:

①<h1></h1>......<h6><h6>:标题标签,自动加粗,h1最大,h6最小。

②<hr/>:水平线标签,添加一条水平线。

③<p></p>:段落标签,

④<br/>:换行标签,

⑤<blockquote/></blockquote>:引用标签,cite属性,表明引用的来源,一般引用网址

浏览器默认首行缩进。

⑥<pre></pre>:预格式标签,用于重载代码。浏览器默认显示样式:1、显示为等宽字体。 2、代码中的换行、

空格等元素能在浏览器中显示。

【补充】html 文件中空格的表示:

2、 基于布局的块级标签

列表:无序列表、有序列表、定义列表

①有序列表:<ol></ol> 列表项:<li></li>

②无序列表:<ul></ul> 列表项:<li></li>

③定义列表(实现图文混排):<dl></dl>

列表标题:<dt>一般只有一项</dt>

列表描述项:<dd>可以有很多项</dd>

3、组合标签:<figure></figure>用于显示图片及图片标题

他有两个子标签:<img />图片

<figcaption></figcaption>图片的标题

例如:<figure>

<img src="img/EZ.jpg" height="20%" width="20%" alt="探险家"/>

<figcaption>探险家 伊泽瑞尔</figcaption>

</figure>

4、分区标签:<div></div>

5、常见的行级标签

<1>span(文本):无实际意义,用于包裹某部分文字,修改特定样式,例如:

这是<span style="color: red;font-size: 36px;">span</span>中的文字

img(图片):其常用属性:①src:表示引用图片的地址。

路径地址的写法:相对路径:以当前文件为最准,去寻找图片地址

a、与文件处于同一层的图片,直接写图片名

b、图片在当前文件下一层:文件名/图片名

c、图片在当前文件上一层:../图片名

绝对路径:file:///盘符:/文件夹/图片名,但 是严禁使用

图片网址:网络上的图片链接,但是一般不用

②height和width:图片的高度和宽度。可以用CSS样式代替

③title:图片标。当鼠标指上之后显示的文字

④alt:当图片无法显示的时候,显示的文字

<2>em(倾斜强调)

<3>strong(加粗强调)

<4>b(加粗)

<5>i(倾斜)

Strong、em、b、i的区别

1、Strong、em都表示强调,Strong为粗体,em为斜体,而Strong的强调 程度逗比em高

2、Strong和b都能加粗,em和i都能倾斜,,但是Strong和em多了一层强调的语义 。H5要求标签尽可能实现语义化。

<6>q(短引用)

<7>small/big(缩小/放大字体):small和big分别是缩小和扩大字体,都可以多层嵌套直至上限或下限

<8>a(超链接)

1、href:超链接的路径,可以是网络链接,也可以是本地文件。

2、target:跳转页面打开的位置。_self自身页面,_blank新页面。

3、title:鼠标指在超链接上显示的名称。

4、Rel(被链接是当前的前/后一篇):指定被链接文档与当前文档的关系,搜索引擎 会利用该属性 获取更多的有关链接的信息:

rel="prev"被链接文档是当前文档的前一篇文 档,

rel="next"被链接文档是当前文档的后一篇文档,

rel="icon"被链接文档是当前文档的图标

rel="stylesheet"被链接文档是当前文档的样式表

5、Rev(当前是被链接的前/后一篇)

锚链接:

①本页面锚链接:a、设置锚点:<a name="top"></a>

b、跳转锚点:#name名

①页面间锚链接:a、在即将跳转页面的指定位置设置锚点

b、跳转锚点:页面地址.html#name名

<a href="02_常见的块级标签.html#Hbuilder">页面间锚链接</a><br/>

功能性链接: mailto用于给指定邮箱发送邮件

file:///e:/aaa.png打开本地文件

tencent://message/?uin=1315618220 给指定QQ发送息

<9>s标签,有误文本:删除线

<s>这是S标签中的文字</s><br />

<10>cite标签:浏览器显示为倾斜,常用于书、画作、作品的引用

<cite>这是cite中的文本</cite><br />

<11>code:计算机代码,不保留代码格式

<pre>

<code></code>

</pre>

<12>bdo:表示文本方向,属性:dir="ltr"表示从左往右,dir="rtl"表示从右往左

<bdo dir="rtl">1234567</bdo><br />

kbd:表示需要用户用键盘输入的内容,浏览器显示为等宽字体

请输入“<kbd>Esc</kbd>”推迟系统<br />

<13>sup:上标文本,sub:下标文本

x<sub>6</sub><br />

© © 空格

© © 空格 <br />

<14>u:下划线

<u>这是下划线</u><br />

mark:高亮或标记文本,浏览器显示为黄色背景

<mark>mark</mark><br />

6、表格:表格的行:tr,每行中的列:td,表格的表头:th

表格的常用属性:

表格行列属性:[tr和td的属性]:

1、width/heigh:单元格的宽高

2、bgcolor:单元格的背景颜色

3、align:left center right 单元格中的文字水平对齐方式

4、valign:top center bottom 单元格中的文字垂直对其方式

5、nowrap:单元格中文字不换行

【注意】当表格属性与行列属性冲突时,行列属性优先级高

7、表单(form)

【两个重要属性】:action-表单提交的服务器地址 method-表单提交数据的方法(get/post)

get/post区别:

1>get使用URL传参:http://服务器地址?name1=value1&name2=value2

(?表示传递参数,?后面采用name=value的形式传递,多个参数之间用&连接) ① URL传参不安全,所有信息可在地址栏看到,并且别人可以很容易url注入,来 攻击自己的数据库。

② URL传参数据量有限,只能传递少量数据。

2>post:使用http请求传递数据。URL地址看不到数据信息,安全且传递信息量没有限制

综上所述:大部分使用post传参,但是get传参比Post快

【input标签及属性】

①type:input输入框的类型,可选值有:

②name:input输入框的别名,必填,因为传参的时候采用name=value的形式传递。

③value:input输入框的默认值

④placeholder:提示内容,当输入框有value时,提示内容消失。

【input特殊属性值】

① checked="checked"默认选中

② disabled="disabled"设置控制不能使用,按钮上不能点击,输入框上不能修改,而且如果

输入框时disabled,则输入框信息不传递到后台

③hidden=“hidden”隐藏。等同于<input type="hidden" name="username"value="1234" />

等同于配合disabled或根据其他需要,使用隐藏域传递信息.

【input-type属性详解】

①text:文本输入框

②password:密码输入框,内容不对外显示

③radio:单选按钮

checkbox:复选按钮

a、单选按钮,name和value属性需同时存在,提交时,提交的是value中的属性值

例如:<input type="radio" name="sex" value="男"/>提交显示为"sex=男"

b、radio凭借name属性区分是否为同一组,name相同为同组,且只能选择一个

c、checked="checked"默认选中,(radio只可以选一个,checkbox可以选多个)

④submit:提交按钮,提交表单数据

⑤reset:重置按钮,重置为默认状态

⑥file:文件上传按钮

⑦image:图片提交按钮,功能同submit,可以提交数据

⑧button:普通按钮,没什么软用

⑨其他常用属性值:见下图

【select标签】下拉选择标签

写法:

<select name="=city">

<option>青岛</option>

<option>烟台</option>

<option>北京</option>

<option>纽约</option>

<option>罗马</option>

</select>

常用属性

①name属性:写在select里,所有选项只有一个name

②multiple属性:multiple="multiple"设置select为多选,一般不用

③option常用属性:value=""属性,当option没有value属性时,往后台传递的是<option></option>中间的文字,

当有value属性时,传递的是value的属性值。

title=""属性,鼠标之上后现实的文字

select="select"默认属性值

④optgroup属性: 用于option属性分组,用lable属性表示分组名。

<optgroup label="中国">

<option>青岛</option>

<option>烟台</option>

<option>北京</option>

</optgroup>

【textarea】:文本域,其常用属性 :

①设置宽度高度 style="width: 150px;height: 200px;

②readonly="readonly":只读模式,不允许修改编辑

③style="resize: none;"设置为宽度高度不允许修改

④style="overflow:;"设置文字超出区域时,如何处置,常用属性值有:

hidden 超出区域的文字,隐藏无法显示

scroll 无论文字多少,均显示滚动

auto 自动,根据文字多少自动决定是否会显示为滚动条

【fieldset 、legend】表单的边框与标题

<fieldset> //边框

<legend> //标题

</legend>

</fieldset>

如果想让标题嵌入到边框中,需将标题标签写到边框标签里面

一个表单可以有多组标题加边框组合

【h5智能表单】

1、H5新增input的form属性,用于指定特form表单的id,实现input无需放在form标签之中,即可通过表单进行提交

<form id=foo>

……

</form>

<input type="text" name="" form="foo">

2、 input元素的新增属性:

Autocomplete:自动完成功能,记录用户之前输入的内容,并在用户下次输入时提示用户输入

》》》属性值:on/off

》》》可以再form表单使用,对整个表单的所有控件进行自动完成的开关也可以在input上使用,

对特定输入框进行修改

》》》绝大部分浏览器默认开启

Autofocus:自动获得焦点,autofocus="autofocus"只能获得一个焦点

Form:所属表单,通过id确认属于哪个表单

Required:必填,required="required",设置必填,否则停止提交

Pattern:使用正则表达式验证input的模式

Placeholder:提示,当有value时取消提示。