天推薦的這個項目是「KLineChart」,可以高度自定義的輕量級 K 線圖。
KLineChart 基于 html5 canvas 構(gòu)建,默認支持幾十種技術(shù)指標、多種圖形標記且可自行擴展,默認支持多種畫圖模型且可自行擴展,無任何第三方依賴,支持移動端。
KLineChart 功能集
快速開始
1、安裝
2、引入
// 全量引入,包含所有內(nèi)置的技術(shù)指標和繪圖標記
import { init } from 'klinecharts'
// 引入部分功能,不包含內(nèi)置的繪圖標記
import { init } from 'klinecharts/index.blank'
// 引入基礎(chǔ)功能,不包含內(nèi)置的技術(shù)指標和繪圖標記
import { init } from 'klinecharts/index.simple'
// 以上三種方式根據(jù)需要,使用一種即可
3、創(chuàng)建第一個圖表
import { init } from 'klinecharts'
// 初始化圖表
const chart = init(`${domId}`)
// 為圖表添加數(shù)據(jù)
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
家好,很高興又見面了,我是"高級前端?進階?",由我?guī)е蠹乙黄痍P(guān)注前端前沿、深入前端底層技術(shù),大家一起進步,也歡迎大家關(guān)注、點贊、收藏、轉(zhuǎn)發(fā),您的支持是我不斷創(chuàng)作的動力。
今天給大家?guī)淼闹黝}是HTML5 和word的互相轉(zhuǎn)化,話不多說,直接進入正題!
html-docx-js 是一個非常小的庫,能夠?qū)?HTML 文檔轉(zhuǎn)換為 Microsoft Word 2007 及更高版本使用的 DOCX 格式。 html-docx-js 設(shè)法使用稱為“altchunks”的功能在瀏覽器中執(zhí)行轉(zhuǎn)換。 簡而言之,它允許以不同的標記語言嵌入內(nèi)容。 開發(fā)者使用 MHT 文檔將嵌入內(nèi)容發(fā)送到 Word,因為它允許處理圖像。 Word 打開此類文件后,會將外部內(nèi)容轉(zhuǎn)換為 Word Processing ML(這是 DOCX 文件的標記語言的調(diào)用方式)并替換引用。
Microsoft Word for Mac 2008 不支持 Altchunk,LibreOffice 和 Google Docs 也不支持 Altchunk。
關(guān)于 html-docx-js 庫有幾點需要說明:
目前 Mammoth 在 Github 上通過 MIT 協(xié)議開源,有超過 1k 的 star、0.3k 的 fork、0.7k 的項目依賴量、NPM 周平均下載量 9k,是一個值得關(guān)注的前端開源項目。
var converted = htmlDocx.asBlob(content);
saveAs(converted, "test.docx");
asBlob 可以采用其他選項來控制文檔的頁面設(shè)置:
比如下面的例子:
var converted = htmlDocx.asBlob(content, {
orientation: "landscape",
margins: { top: 720 },
});
saveAs(converted, "test.docx");
需要注意的是,開發(fā)者需要傳遞完整、有效的 HTML(包括 DOCTYPE、html 和 body 標簽)。 這可能不太方便,但可以讓開發(fā)者在樣式標簽中包含 CSS 規(guī)則。
html-docx-js 作為獨立”Browserify 模塊(UMD)分發(fā)。 開發(fā)者可以將其作為 html-docx 要求。 如果沒有可用的模塊加載器,它將把自己注冊在 window.htmlDocx。
Mammoth.js 旨在轉(zhuǎn)換 .docx 文檔,例如:由 Microsoft Word、Google Docs 和 LibreOffice 創(chuàng)建的文檔,并將其轉(zhuǎn)換為 HTML。 Mammoth 的目標是通過使用文檔中的語義信息并忽略其他細節(jié)來生成簡單且干凈的 HTML。 例如,Mammoth 將任何具有標題 1 樣式的段落轉(zhuǎn)換為 h1 元素,而不是嘗試精確復(fù)制標題的樣式(字體、文本大小、顏色等)。
.docx 使用的結(jié)構(gòu)與 HTML 的結(jié)構(gòu)之間存在很大的不匹配,這意味著對于更復(fù)雜的文檔來說,轉(zhuǎn)換不太可能完美。 如果開發(fā)者僅使用樣式來對文檔進行語義標記,那么 Mammoth 效果最佳。
Mammoth.js 目前支持以下功能:
Mammoth 在眾多平臺可用,比如:Python、WordPress、Java/JVM、.NET 等等。目前 Mammoth 在 Github 上通過 BSD-2-Clause 開源,有超過 4.1k 的 star、0.5k 的 fork、4.4k 的項目依賴量、NPM 周平均下載量 76k,是一個值得關(guān)注的前端優(yōu)質(zhì)開源項目。
以文檔轉(zhuǎn)換為例。
Mammoth 允許在轉(zhuǎn)換文檔之前對其進行處理。 例如,假設(shè)該文檔尚未進行語義標記,但開發(fā)者知道任何居中對齊的段落都應(yīng)該是標題,則可以使用 transformDocument 參數(shù)來適當(dāng)?shù)匦薷奈臋n:
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 函數(shù)進行優(yōu)化,比如:
function transformParagraph(element) {
if (element.alignment === "center" && !element.styleId) {
return { ...element, styleId: "Heading2" };
} else {
return element;
}
}
var options = {
transformDocument: mammoth.transforms.paragraph(transformParagraph),
};
或者,如果開發(fā)者希望已明確設(shè)置為使用等寬字體來表示代碼的段落:
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')"],
};
關(guān)于 Mammoth 庫的更多用法,更多 API 示例可以參考文末資料,本文不再過多展開。
本文主要和大家介紹 HTML5 和word互轉(zhuǎn)的兩個開源庫,分別為:html-docx-js、mammoth.js。相信通過本文的閱讀,大家對 html-docx-js、mammoth.js 會有一個初步的了解。
因為篇幅有限,關(guān)于 html-docx-js、mammoth.js 的更多用法和特性文章并沒有過多展開,如果有興趣,可以在我的主頁繼續(xù)閱讀,同時文末的參考資料提供了大量優(yōu)秀文檔以供學(xué)習(xí)。最后,歡迎大家點贊、評論、轉(zhuǎn)發(fā)、收藏,您的支持是我不斷創(chuàng)作的動力。
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的基本結(jié)構(gòu):
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8">
<title></title>
</head>
<body>
網(wǎng)頁的文本、圖片等信息;
</body>
</html>
二、Head部分:用于表示網(wǎng)頁的元數(shù)據(jù)即描述網(wǎng)頁的基本信息
其常用標簽及屬性有:
1、title標簽:瀏覽器標簽頁顯示的標題
2、meta標簽:其常用屬性
①charset:設(shè)置文檔的字符集編碼格式。HTML5中設(shè)置字符集編碼:<meta charset="UTF-8">
常見的字符集編碼格式:
a.GB-2312:國標碼,簡體中文
b.GBK:擴展的國標碼
c.UTF-8:萬國碼 Unicode 常用
②http-equiv屬性:將我們的信息寫給瀏覽器看,讓瀏覽器按照這里面的要求執(zhí)行,可選屬性值:Content-Type(文檔類型) refresh(網(wǎng)頁定時刷新) set-cookie(設(shè)置瀏覽器cookie緩存) 需要配合content屬性使用。(http-equiv屬性只是表明需要設(shè)置哪一部分,具體的設(shè)置內(nèi)容,放到content屬性中)
③name屬性:使用方法同“http-equiv”。將我們的信息寫給搜索引擎看
常用且需要掌握的屬性值:author(作者) keywords(網(wǎng)頁關(guān)鍵字) description(網(wǎng)頁描述) 這兩個屬性設(shè)置,網(wǎng)頁必不可少。
3、link標簽:鏈接網(wǎng)頁圖標(title前的小logo),其常用屬性有:
①rel屬性:聲明鏈接文件的類型,此處選icon
②type屬性:可以省略
③href屬性:表示圖片的路徑地址
三、body部分:網(wǎng)頁的文本、圖片等信息
標簽的分類:
塊級標簽:顯示為塊,前后隔一行(自動換行)
行級標簽:按行從左往右逐一顯示。
1、 常見的塊級標簽:
①<h1></h1>......<h6><h6>:標題標簽,自動加粗,h1最大,h6最小。
②<hr/>:水平線標簽,添加一條水平線。
③<p></p>:段落標簽,
④<br/>:換行標簽,
⑤<blockquote/></blockquote>:引用標簽,cite屬性,表明引用的來源,一般引用網(wǎng)址
瀏覽器默認首行縮進。
⑥<pre></pre>:預(yù)格式標簽,用于重載代碼。瀏覽器默認顯示樣式:1、顯示為等寬字體。 2、代碼中的換行、
空格等元素能在瀏覽器中顯示。
【補充】html 文件中空格的表示:
2、 基于布局的塊級標簽
列表:無序列表、有序列表、定義列表
①有序列表:<ol></ol> 列表項:<li></li>
②無序列表:<ul></ul> 列表項:<li></li>
③定義列表(實現(xiàn)圖文混排):<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、分區(qū)標簽:<div></div>
5、常見的行級標簽
<1>span(文本):無實際意義,用于包裹某部分文字,修改特定樣式,例如:
這是<span style="color: red;font-size: 36px;">span</span>中的文字
img(圖片):其常用屬性:①src:表示引用圖片的地址。
路徑地址的寫法:相對路徑:以當(dāng)前文件為最準,去尋找圖片地址
a、與文件處于同一層的圖片,直接寫圖片名
b、圖片在當(dāng)前文件下一層:文件名/圖片名
c、圖片在當(dāng)前文件上一層:../圖片名
絕對路徑:file:///盤符:/文件夾/圖片名,但 是嚴禁使用
圖片網(wǎng)址:網(wǎng)絡(luò)上的圖片鏈接,但是一般不用
②height和width:圖片的高度和寬度。可以用CSS樣式代替
③title:圖片標。當(dāng)鼠標指上之后顯示的文字
④alt:當(dāng)圖片無法顯示的時候,顯示的文字
<2>em(傾斜強調(diào))
<3>strong(加粗強調(diào))
<4>b(加粗)
<5>i(傾斜)
Strong、em、b、i的區(qū)別
1、Strong、em都表示強調(diào),Strong為粗體,em為斜體,而Strong的強調(diào) 程度逗比em高
2、Strong和b都能加粗,em和i都能傾斜,,但是Strong和em多了一層強調(diào)的語義 。H5要求標簽盡可能實現(xiàn)語義化。
<6>q(短引用)
<7>small/big(縮小/放大字體):small和big分別是縮小和擴大字體,都可以多層嵌套直至上限或下限
<8>a(超鏈接)
1、href:超鏈接的路徑,可以是網(wǎng)絡(luò)鏈接,也可以是本地文件。
2、target:跳轉(zhuǎn)頁面打開的位置。_self自身頁面,_blank新頁面。
3、title:鼠標指在超鏈接上顯示的名稱。
4、Rel(被鏈接是當(dāng)前的前/后一篇):指定被鏈接文檔與當(dāng)前文檔的關(guān)系,搜索引擎 會利用該屬性 獲取更多的有關(guān)鏈接的信息:
rel="prev"被鏈接文檔是當(dāng)前文檔的前一篇文 檔,
rel="next"被鏈接文檔是當(dāng)前文檔的后一篇文檔,
rel="icon"被鏈接文檔是當(dāng)前文檔的圖標
rel="stylesheet"被鏈接文檔是當(dāng)前文檔的樣式表
5、Rev(當(dāng)前是被鏈接的前/后一篇)
錨鏈接:
①本頁面錨鏈接:a、設(shè)置錨點:<a name="top"></a>
b、跳轉(zhuǎn)錨點:#name名
①頁面間錨鏈接:a、在即將跳轉(zhuǎn)頁面的指定位置設(shè)置錨點
b、跳轉(zhuǎn)錨點:頁面地址.html#name名
<a href="02_常見的塊級標簽.html#Hbuilder">頁面間錨鏈接</a><br/>
功能性鏈接: mailto用于給指定郵箱發(fā)送郵件
file:///e:/aaa.png打開本地文件
tencent://message/?uin=1315618220 給指定QQ發(fā)送息
<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:表示需要用戶用鍵盤輸入的內(nèi)容,瀏覽器顯示為等寬字體
請輸入“<kbd>Esc</kbd>”推遲系統(tǒng)<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:單元格中文字不換行
【注意】當(dāng)表格屬性與行列屬性沖突時,行列屬性優(yōu)先級高
7、表單(form)
【兩個重要屬性】:action-表單提交的服務(wù)器地址 method-表單提交數(shù)據(jù)的方法(get/post)
get/post區(qū)別:
1>get使用URL傳參:http://服務(wù)器地址?name1=value1&name2=value2
(?表示傳遞參數(shù),?后面采用name=value的形式傳遞,多個參數(shù)之間用&連接) ① URL傳參不安全,所有信息可在地址欄看到,并且別人可以很容易url注入,來 攻擊自己的數(shù)據(jù)庫。
② URL傳參數(shù)據(jù)量有限,只能傳遞少量數(shù)據(jù)。
2>post:使用http請求傳遞數(shù)據(jù)。URL地址看不到數(shù)據(jù)信息,安全且傳遞信息量沒有限制
綜上所述:大部分使用post傳參,但是get傳參比Post快
【input標簽及屬性】
①type:input輸入框的類型,可選值有:
②name:input輸入框的別名,必填,因為傳參的時候采用name=value的形式傳遞。
③value:input輸入框的默認值
④placeholder:提示內(nèi)容,當(dāng)輸入框有value時,提示內(nèi)容消失。
【input特殊屬性值】
① checked="checked"默認選中
② disabled="disabled"設(shè)置控制不能使用,按鈕上不能點擊,輸入框上不能修改,而且如果
輸入框時disabled,則輸入框信息不傳遞到后臺
③hidden=“hidden”隱藏。等同于<input type="hidden" name="username"value="1234" />
等同于配合disabled或根據(jù)其他需要,使用隱藏域傳遞信息.
【input-type屬性詳解】
①text:文本輸入框
②password:密碼輸入框,內(nèi)容不對外顯示
③radio:單選按鈕
checkbox:復(fù)選按鈕
a、單選按鈕,name和value屬性需同時存在,提交時,提交的是value中的屬性值
例如:<input type="radio" name="sex" value="男"/>提交顯示為"sex=男"
b、radio憑借name屬性區(qū)分是否為同一組,name相同為同組,且只能選擇一個
c、checked="checked"默認選中,(radio只可以選一個,checkbox可以選多個)
④submit:提交按鈕,提交表單數(shù)據(jù)
⑤reset:重置按鈕,重置為默認狀態(tài)
⑥file:文件上傳按鈕
⑦image:圖片提交按鈕,功能同submit,可以提交數(shù)據(jù)
⑧button:普通按鈕,沒什么軟用
⑨其他常用屬性值:見下圖
【select標簽】下拉選擇標簽
寫法:
<select name="=city">
<option>青島</option>
<option>煙臺</option>
<option>北京</option>
<option>紐約</option>
<option>羅馬</option>
</select>
常用屬性
①name屬性:寫在select里,所有選項只有一個name
②multiple屬性:multiple="multiple"設(shè)置select為多選,一般不用
③option常用屬性:value=""屬性,當(dāng)option沒有value屬性時,往后臺傳遞的是<option></option>中間的文字,
當(dāng)有value屬性時,傳遞的是value的屬性值。
title=""屬性,鼠標之上后現(xiàn)實的文字
select="select"默認屬性值
④optgroup屬性: 用于option屬性分組,用lable屬性表示分組名。
<optgroup label="中國">
<option>青島</option>
<option>煙臺</option>
<option>北京</option>
</optgroup>
【textarea】:文本域,其常用屬性 :
①設(shè)置寬度高度 style="width: 150px;height: 200px;
②readonly="readonly":只讀模式,不允許修改編輯
③style="resize: none;"設(shè)置為寬度高度不允許修改
④style="overflow:;"設(shè)置文字超出區(qū)域時,如何處置,常用屬性值有:
hidden 超出區(qū)域的文字,隱藏?zé)o法顯示
scroll 無論文字多少,均顯示滾動
auto 自動,根據(jù)文字多少自動決定是否會顯示為滾動條
【fieldset 、legend】表單的邊框與標題
<fieldset> //邊框
<legend> //標題
</legend>
</fieldset>
如果想讓標題嵌入到邊框中,需將標題標簽寫到邊框標簽里面
一個表單可以有多組標題加邊框組合
【h5智能表單】
1、H5新增input的form屬性,用于指定特form表單的id,實現(xiàn)input無需放在form標簽之中,即可通過表單進行提交
<form id=foo>
……
</form>
<input type="text" name="" form="foo">
2、 input元素的新增屬性:
Autocomplete:自動完成功能,記錄用戶之前輸入的內(nèi)容,并在用戶下次輸入時提示用戶輸入
》》》屬性值:on/off
》》》可以再form表單使用,對整個表單的所有控件進行自動完成的開關(guān)也可以在input上使用,
對特定輸入框進行修改
》》》絕大部分瀏覽器默認開啟
Autofocus:自動獲得焦點,autofocus="autofocus"只能獲得一個焦點
Form:所屬表單,通過id確認屬于哪個表單
Required:必填,required="required",設(shè)置必填,否則停止提交
Pattern:使用正則表達式驗證input的模式
Placeholder:提示,當(dāng)有value時取消提示。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。