cainiaoblog 23.2.171

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/CNAME +1 -0
  2. package/MP_verify_o6dHCK5mIkxNpzvZ.txt +1 -0
  3. package/README.md +8 -0
  4. package/about/index.html +54 -0
  5. package/ads.txt +1 -0
  6. package/app/manual.html +104 -0
  7. package/appConfigs/config +1 -0
  8. package/archives/2018/index.html +48 -0
  9. package/archives/2019/index.html +48 -0
  10. package/archives/2019/page/2/index.html +48 -0
  11. package/archives/2020/index.html +48 -0
  12. package/archives/2021/index.html +48 -0
  13. package/archives/2022/index.html +48 -0
  14. package/archives/2023/index.html +48 -0
  15. package/archives/index.html +48 -0
  16. package/archives/page/2/index.html +48 -0
  17. package/archives/page/3/index.html +48 -0
  18. package/article/10047.html +148 -0
  19. package/article/10164.html +64 -0
  20. package/article/10624.html +436 -0
  21. package/article/10745.html +586 -0
  22. package/article/11674.html +71 -0
  23. package/article/11939.html +72 -0
  24. package/article/12238.html +86 -0
  25. package/article/1230.html +533 -0
  26. package/article/13265.html +69 -0
  27. package/article/13823.html +78 -0
  28. package/article/14125.html +72 -0
  29. package/article/14192.html +561 -0
  30. package/article/14375.html +85 -0
  31. package/article/14744.html +83 -0
  32. package/article/14936.html +451 -0
  33. package/article/1518.html +250 -0
  34. package/article/15428.html +71 -0
  35. package/article/15518.html +288 -0
  36. package/article/15569.html +418 -0
  37. package/article/1566.html +122 -0
  38. package/article/16017.html +156 -0
  39. package/article/16947.html +440 -0
  40. package/article/17096.html +82 -0
  41. package/article/17246.html +89 -0
  42. package/article/17575.html +350 -0
  43. package/article/179.html +757 -0
  44. package/article/18039.html +233 -0
  45. package/article/18071.html +375 -0
  46. package/article/18142.html +71 -0
  47. package/article/19909.html +160 -0
  48. package/article/20014.html +89 -0
  49. package/article/20021.html +389 -0
  50. package/article/20037.html +280 -0
  51. package/article/20056.html +95 -0
  52. package/article/20093.html +404 -0
  53. package/article/2021.html +607 -0
  54. package/article/20459.html +115 -0
  55. package/article/20613.html +263 -0
  56. package/article/20635.html +71 -0
  57. package/article/21317.html +71 -0
  58. package/article/21320.html +90 -0
  59. package/article/21782.html +548 -0
  60. package/article/22230.html +435 -0
  61. package/article/22237.html +347 -0
  62. package/article/22398.html +109 -0
  63. package/article/22422.html +270 -0
  64. package/article/22565.html +300 -0
  65. package/article/23046.html +250 -0
  66. package/article/23083.html +215 -0
  67. package/article/23195.html +297 -0
  68. package/article/23301.html +835 -0
  69. package/article/23589.html +285 -0
  70. package/article/23655.html +338 -0
  71. package/article/23864.html +76 -0
  72. package/article/23914.html +96 -0
  73. package/article/24169.html +135 -0
  74. package/article/24581.html +349 -0
  75. package/article/2475.html +500 -0
  76. package/article/24826.html +77 -0
  77. package/article/24924.html +247 -0
  78. package/article/25164.html +1495 -0
  79. package/article/25318.html +394 -0
  80. package/article/25710.html +1129 -0
  81. package/article/25734.html +83 -0
  82. package/article/26083.html +174 -0
  83. package/article/26147.html +283 -0
  84. package/article/26291.html +110 -0
  85. package/article/26354.html +71 -0
  86. package/article/26624.html +145 -0
  87. package/article/26639.html +298 -0
  88. package/article/26850.html +138 -0
  89. package/article/26940.html +258 -0
  90. package/article/27796.html +190 -0
  91. package/article/27800.html +161 -0
  92. package/article/28963.html +159 -0
  93. package/article/28976.html +247 -0
  94. package/article/29042.html +72 -0
  95. package/article/29596.html +81 -0
  96. package/article/29619.html +183 -0
  97. package/article/29623.html +329 -0
  98. package/article/29829.html +205 -0
  99. package/article/29abbd1c.html +112 -0
  100. package/article/30215.html +178 -0
  101. package/article/30552.html +78 -0
  102. package/article/30818.html +201 -0
  103. package/article/31330.html +364 -0
  104. package/article/3154.html +577 -0
  105. package/article/31695.html +348 -0
  106. package/article/31826.html +71 -0
  107. package/article/31843.html +132 -0
  108. package/article/32280.html +212 -0
  109. package/article/32431.html +74 -0
  110. package/article/32443.html +72 -0
  111. package/article/32732.html +122 -0
  112. package/article/3286.html +251 -0
  113. package/article/32960.html +198 -0
  114. package/article/33713.html +72 -0
  115. package/article/33899.html +615 -0
  116. package/article/34351.html +74 -0
  117. package/article/34372.html +89 -0
  118. package/article/34410.html +74 -0
  119. package/article/34431.html +118 -0
  120. package/article/3447.html +75 -0
  121. package/article/34474.html +142 -0
  122. package/article/34871.html +147 -0
  123. package/article/35397.html +175 -0
  124. package/article/3544.html +199 -0
  125. package/article/35503.html +115 -0
  126. package/article/35624.html +84 -0
  127. package/article/35697.html +384 -0
  128. package/article/35863.html +73 -0
  129. package/article/36037.html +253 -0
  130. package/article/36118.html +71 -0
  131. package/article/3621.html +119 -0
  132. package/article/36251.html +296 -0
  133. package/article/36642.html +352 -0
  134. package/article/37102.html +763 -0
  135. package/article/37336.html +351 -0
  136. package/article/37351.html +89 -0
  137. package/article/3760.html +294 -0
  138. package/article/37749.html +75 -0
  139. package/article/37789.html +83 -0
  140. package/article/38005.html +765 -0
  141. package/article/38009.html +284 -0
  142. package/article/38269.html +194 -0
  143. package/article/38344.html +88 -0
  144. package/article/38359.html +334 -0
  145. package/article/38423.html +379 -0
  146. package/article/38530.html +213 -0
  147. package/article/38743.html +268 -0
  148. package/article/38753.html +204 -0
  149. package/article/38881.html +71 -0
  150. package/article/39087.html +414 -0
  151. package/article/39309.html +84 -0
  152. package/article/39486.html +74 -0
  153. package/article/39637.html +306 -0
  154. package/article/39839.html +72 -0
  155. package/article/39937.html +152 -0
  156. package/article/39970.html +71 -0
  157. package/article/402.html +559 -0
  158. package/article/40698.html +71 -0
  159. package/article/40811.html +71 -0
  160. package/article/40964.html +462 -0
  161. package/article/41011.html +322 -0
  162. package/article/41152.html +78 -0
  163. package/article/41696.html +71 -0
  164. package/article/41717.html +281 -0
  165. package/article/41777.html +149 -0
  166. package/article/419.html +985 -0
  167. package/article/4233.html +136 -0
  168. package/article/4292.html +86 -0
  169. package/article/43302.html +96 -0
  170. package/article/43397.html +106 -0
  171. package/article/43724.html +281 -0
  172. package/article/43999.html +224 -0
  173. package/article/44426.html +77 -0
  174. package/article/44964.html +137 -0
  175. package/article/45004.html +123 -0
  176. package/article/4510.html +83 -0
  177. package/article/45156.html +320 -0
  178. package/article/45157.html +52 -0
  179. package/article/45267.html +87 -0
  180. package/article/45641.html +207 -0
  181. package/article/45960.html +75 -0
  182. package/article/46100.html +1262 -0
  183. package/article/46366.html +74 -0
  184. package/article/46771.html +96 -0
  185. package/article/46911.html +517 -0
  186. package/article/46948.html +137 -0
  187. package/article/46ee4850.html +349 -0
  188. package/article/47019.html +84 -0
  189. package/article/47532.html +94 -0
  190. package/article/4783.html +429 -0
  191. package/article/47972.html +72 -0
  192. package/article/48216.html +127 -0
  193. package/article/48252.html +185 -0
  194. package/article/48520.html +74 -0
  195. package/article/48722.html +75 -0
  196. package/article/48807.html +99 -0
  197. package/article/49126.html +323 -0
  198. package/article/50001.html +88 -0
  199. package/article/50058.html +151 -0
  200. package/article/50343.html +410 -0
  201. package/article/50510.html +82 -0
  202. package/article/51082.html +98 -0
  203. package/article/51677.html +111 -0
  204. package/article/5204.html +1085 -0
  205. package/article/52500.html +538 -0
  206. package/article/52689.html +259 -0
  207. package/article/52877.html +569 -0
  208. package/article/53125.html +191 -0
  209. package/article/53428.html +251 -0
  210. package/article/53524.html +74 -0
  211. package/article/53698.html +322 -0
  212. package/article/53803e6.html +93 -0
  213. package/article/53924.html +291 -0
  214. package/article/53962.html +253 -0
  215. package/article/54006.html +71 -0
  216. package/article/54018.html +88 -0
  217. package/article/54161.html +83 -0
  218. package/article/54178.html +69 -0
  219. package/article/54258.html +327 -0
  220. package/article/54295.html +214 -0
  221. package/article/54313.html +1976 -0
  222. package/article/54351.html +90 -0
  223. package/article/54604.html +80 -0
  224. package/article/54632.html +71 -0
  225. package/article/54912.html +756 -0
  226. package/article/54918.html +129 -0
  227. package/article/55119.html +136 -0
  228. package/article/55756.html +118 -0
  229. package/article/55769.html +136 -0
  230. package/article/55870.html +161 -0
  231. package/article/56139.html +92 -0
  232. package/article/56557.html +69 -0
  233. package/article/56604.html +69 -0
  234. package/article/56816.html +266 -0
  235. package/article/56926.html +153 -0
  236. package/article/57747.html +409 -0
  237. package/article/57965.html +475 -0
  238. package/article/58816.html +78 -0
  239. package/article/59059.html +435 -0
  240. package/article/59095.html +350 -0
  241. package/article/59349.html +244 -0
  242. package/article/59402.html +216 -0
  243. package/article/59448.html +55 -0
  244. package/article/59870.html +94 -0
  245. package/article/59877.html +208 -0
  246. package/article/5dbb6f41.html +86 -0
  247. package/article/6008.html +75 -0
  248. package/article/60327.html +126 -0
  249. package/article/6035.html +76 -0
  250. package/article/60428.html +71 -0
  251. package/article/60544.html +128 -0
  252. package/article/61319.html +95 -0
  253. package/article/61367.html +93 -0
  254. package/article/624d1918.html +292 -0
  255. package/article/62543.html +71 -0
  256. package/article/62887.html +169 -0
  257. package/article/63074.html +120 -0
  258. package/article/63266.html +311 -0
  259. package/article/63351.html +74 -0
  260. package/article/63542.html +104 -0
  261. package/article/63824.html +275 -0
  262. package/article/64051.html +653 -0
  263. package/article/64189b69.html +72 -0
  264. package/article/64354.html +75 -0
  265. package/article/64869.html +79 -0
  266. package/article/64923.html +596 -0
  267. package/article/65128.html +95 -0
  268. package/article/65295.html +79 -0
  269. package/article/6888.html +75 -0
  270. package/article/7065.html +84 -0
  271. package/article/7455.html +85 -0
  272. package/article/7a3ef8f.html +315 -0
  273. package/article/8140.html +188 -0
  274. package/article/8190.html +85 -0
  275. package/article/8225.html +78 -0
  276. package/article/84c9ccd6.html +159 -0
  277. package/article/8f9a9ae3.html +82 -0
  278. package/article/9174.html +73 -0
  279. package/article/9738.html +294 -0
  280. package/article/a4145266.html +71 -0
  281. package/article/bedea419.html +72 -0
  282. package/article/bf7e7421.html +78 -0
  283. package/article/c1867fbf.html +103 -0
  284. package/article/c5576490.html +70 -0
  285. package/article/dcb0db28.html +76 -0
  286. package/article/fc3b727a.html +79 -0
  287. package/atom.xml +445 -0
  288. package/baidusitemap.xml +1079 -0
  289. package/blocks/dns.txt +264 -0
  290. package/blocks/filter.txt +1070 -0
  291. package/blocks/script.js +42 -0
  292. package/categories/CDN/index.html +48 -0
  293. package/categories/IDE/index.html +48 -0
  294. package/categories/git/index.html +48 -0
  295. package/categories/hexo/index.html +48 -0
  296. package/categories//345/205/254/345/205/261/350/212/202/346/227/245/index.html +48 -0
  297. package/categories//345/210/206/344/272/253/index.html +48 -0
  298. package/categories//345/211/215/347/253/257/index.html +48 -0
  299. package/categories//345/211/215/347/253/257/page/2/index.html +48 -0
  300. package/categories//345/211/215/347/253/257//346/265/217/350/247/210/345/231/250/index.html +48 -0
  301. package/categories//345/211/215/347/253/257//346/265/217/350/247/210/345/231/250//347/275/221/347/273/234/345/215/217/350/256/256/index.html +48 -0
  302. package/categories//345/215/232/345/256/242/index.html +48 -0
  303. package/categories//345/267/245/345/205/267/index.html +48 -0
  304. package/categories//345/271/277/345/221/212/350/277/207/346/273/244/index.html +48 -0
  305. package/categories//345/271/277/345/221/212/350/277/207/346/273/244//350/247/206/351/242/221/347/224/265/350/247/206/345/260/217/350/257/264/346/274/253/347/224/273/350/265/204/350/256/257/351/237/263/344/271/220/index.html +48 -0
  306. package/categories//346/255/243/345/210/231/index.html +48 -0
  307. package/categories//346/265/217/350/247/210/345/231/250/index.html +48 -0
  308. package/categories//347/256/227/346/263/225/index.html +48 -0
  309. package/categories//350/265/204/350/256/257/index.html +48 -0
  310. package/categories//350/275/273/346/235/276/344/270/200/345/210/273/index.html +48 -0
  311. package/cdn/css/font-awesome.min.css +4 -0
  312. package/cdn/css/grids-responsive-min.css +7 -0
  313. package/cdn/css/normalize.css +349 -0
  314. package/cdn/css/pure-min.css +11 -0
  315. package/cdn/fonts/fontawesome-webfont.eot +0 -0
  316. package/cdn/fonts/fontawesome-webfont.svg +2671 -0
  317. package/cdn/fonts/fontawesome-webfont.ttf +0 -0
  318. package/cdn/fonts/fontawesome-webfont.woff +0 -0
  319. package/cdn/fonts/fontawesome-webfont.woff2 +0 -0
  320. package/cdn/js/Valine.min.js +17 -0
  321. package/cdn/js/canvas-nest.js +1 -0
  322. package/cdn/js/clipboard.min.js +7 -0
  323. package/cdn/js/crypto-js.js +25 -0
  324. package/cdn/js/jquery.min.js +2 -0
  325. package/css/default.css +1144 -0
  326. package/css/donate.css +338 -0
  327. package/css/hbe.style.css +749 -0
  328. package/css/style.css +2095 -0
  329. package/donate/index.html +39 -0
  330. package/google917dcf72f6e5c7f5.html +1 -0
  331. package/guestbook/index.html +68 -0
  332. package/hosts/ads.txt +149 -0
  333. package/hosts/flash.txt +9 -0
  334. package/hosts/github.txt +6 -0
  335. package/hosts/google.txt +16936 -0
  336. package/hosts/winrar.txt +2 -0
  337. package/img/alipay.svg +46 -0
  338. package/img/bitcoin.svg +135 -0
  339. package/img/blog.ico +0 -0
  340. package/img/blog.png +0 -0
  341. package/img/gaba.png +0 -0
  342. package/img/github.svg +1 -0
  343. package/img/like.svg +1 -0
  344. package/img/mp-mini.jpg +0 -0
  345. package/img/mp.png +0 -0
  346. package/img/paypal.svg +63 -0
  347. package/img/upy_logo.svg +59 -0
  348. package/img/wechat.svg +49 -0
  349. package/index.html +48 -0
  350. package/jd_root.txt +1 -0
  351. package/js/codeblock-resizer.js +51 -0
  352. package/js/dark.js +12 -0
  353. package/js/donate.js +87 -0
  354. package/js/fixedPage.js +106 -0
  355. package/js/gitment.browser.js +3751 -0
  356. package/js/search.js +86 -0
  357. package/js/share.js +60 -0
  358. package/js/smartresize.js +32 -0
  359. package/js/totop.js +12 -0
  360. package/kankan/index.html +77 -0
  361. package/lib/hbe.js +293 -0
  362. package/package.json +25 -0
  363. package/page/10/index.html +49 -0
  364. package/page/11/index.html +59 -0
  365. package/page/12/index.html +67 -0
  366. package/page/13/index.html +63 -0
  367. package/page/14/index.html +66 -0
  368. package/page/15/index.html +60 -0
  369. package/page/16/index.html +60 -0
  370. package/page/17/index.html +62 -0
  371. package/page/18/index.html +61 -0
  372. package/page/19/index.html +58 -0
  373. package/page/2/index.html +48 -0
  374. package/page/20/index.html +57 -0
  375. package/page/21/index.html +61 -0
  376. package/page/22/index.html +55 -0
  377. package/page/23/index.html +64 -0
  378. package/page/24/index.html +60 -0
  379. package/page/25/index.html +58 -0
  380. package/page/26/index.html +48 -0
  381. package/page/27/index.html +58 -0
  382. package/page/3/index.html +48 -0
  383. package/page/4/index.html +48 -0
  384. package/page/5/index.html +51 -0
  385. package/page/6/index.html +51 -0
  386. package/page/7/index.html +51 -0
  387. package/page/8/index.html +53 -0
  388. package/page/9/index.html +48 -0
  389. package/randomcall/README.html +1 -0
  390. package/randomcall/lucker.html +290 -0
  391. package/randomcall/lucky.png +0 -0
  392. package/robots.txt +22 -0
  393. package/search.xml +6740 -0
  394. package/sitemap.xml +2669 -0
  395. package/tags//345/216/237/345/210/233/index.html +48 -0
  396. package/tags//345/250/261/344/271/220/index.html +48 -0
  397. package/tags//346/211/213/345/206/231/index.html +48 -0
  398. package/tags//347/226/253/346/203/205/index.html +48 -0
  399. package/tags//350/275/254/350/275/275/index.html +48 -0
  400. package/tags//350/275/254/350/275/275/page/2/index.html +48 -0
  401. package/v.html +90 -0
@@ -0,0 +1,394 @@
1
+ <!DOCTYPE html><html lang="zh-CN" data-dark><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta name="description" content="前端壹菜鸟,记录工作难题,关注前端知识,收集精彩博文,做技术的搬运工"><meta name="msvalidate.01" content="0FE4D8B3381D3D87088996B886E1E2BD"><title>可能是最全的 文本溢出截断省略 方案合集 | 前端壹菜鸟</title><link rel="stylesheet" type="text/css" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/css/style.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/normalize.css@latest/normalize.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/pure-min.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/grids-responsive-min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css"><link rel="icon" mask="" sizes="any" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="Shortcut Icon" type="image/x-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="apple-touch-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="apple-touch-icon-precomposed" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="alternate" type="application/atom+xml" href="/atom.xml"><script type="text/javascript" src="//cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8385136408348258"></script><script src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script><script>(function(){
2
+ var bp = document.createElement('script');
3
+ var curProtocol = window.location.protocol.split(':')[0];
4
+ if (curProtocol === 'https'){
5
+ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
6
+ }
7
+ else{
8
+ bp.src = 'http://push.zhanzhang.baidu.com/push.js';
9
+ }
10
+ var s = document.getElementsByTagName("script")[0];
11
+ s.parentNode.insertBefore(bp, s);
12
+ })();
13
+ </script><script>(function(){
14
+ var src = 'https://jspassport.ssl.qhimg.com/11.0.1.js?d182b3f28525f2db83acfaaf6e696dba';
15
+ document.write('<script src="' + src + '" id="sozz"><\/script>');
16
+ })();
17
+ </script><script>var _hmt=_hmt||[];(function(){var hm=document.createElement("script");hm.src='https://hm.baidu.com/hm.js?011f0b44e8452bfa57fbfa23c5fe7683';var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();
18
+ </script><script async src="https://www.googletagmanager.com/gtag/js?id=UA-150860401-1"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);};gtag('js',new Date());gtag('config','UA-150860401-1');
19
+ </script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/fixedPage.min.js"></script><meta name="generator" content="Hexo 6.3.0"></head><body><div class="body_container"><div id="header"><div class="site-name"><a id="logo" href="/.">前端壹菜鸟</a><p class="description">关注前端知识,收集精彩博文,做技术的搬运工</p></div><div id="nav-menu"><a class="current" href="/." target="_self"><i class="fa fa-home"> 首页</i></a><a href="/archives/" target="_self"><i class="fa fa-archive"> 归档</i></a><a href="/guestbook/" target="_self"><i class="fa fa-comments"> 留言</i></a><a href="/about/" target="_self"><i class="fa fa-user"> 关于</i></a><a href="https://laonongmin.online/" target="_target"><i class="fa fa-group"> 看看</i></a><a href="https://love.xuehuayu.cn/" target="_target"><i class="fa fa-heart"> LOVE</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title c-post">可能是最全的 文本溢出截断省略 方案合集</h1><div class="post-meta"><span class="date">2019-12-09</span><span> | </span><span class="tag"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载 </a></span><span> | </span><span class="category"><a href="/categories/%E5%89%8D%E7%AB%AF/">前端 </a></span><span id="busuanzi_container_page_pv"> | <span id="busuanzi_value_page_pv"><i class="fa fa-spinner"></i></span><span> 阅读</span></span><span class="post-time"><span class="post-meta-item-text"> | </span><span class="post-meta-item-icon"><i class="fa fa-keyboard-o"></i><span class="post-count"> 2.9k</span><span class="post-meta-item-text"> 字</span></span></span><span class="post-time"> | <span class="post-meta-item-icon"><i class="fa fa-hourglass-half"></i><span class="post-count"> 11</span><span class="post-meta-item-text"> 分钟</span></span></span></div><a class="disqus-comment-count" href="/article/25318.html#vcomment"><span class="waline-comment-count" data-path="/article/25318.html"></span><span> 条评论</span></a><div class="post-content"><p><code>原文地址:https://juejin.im/post/5dc15b35f265da4d432a3d10</code></p>
20
+ <p>在我们的日常开发工作中,文本溢出截断省略是很常见的一种需考虑的业务场景细节。看上去 “稀松平常” ,但在实现上却有不同的区分,是单行截断还是多行截断?多行的截断判断是基于行数还是基于高度?这些问题之下,都有哪些实现方案?他们之间的差异性和场景适应性又是如何?凡事就怕较真,较真必有成长。本文试图通过编码实践,给出一些答案。</p>
21
+ <span id="more"></span>
22
+
23
+ <blockquote>
24
+ <p>本文首发于政采云前端团队博客: <a target="_blank" rel="noopener" href="https://www.zoo.team/article/text-overflow">可能是最全的 “文本溢出截断省略” 方案合集</a></p>
25
+ </blockquote>
26
+ <p><img src="https://user-gold-cdn.xitu.io/2019/11/9/16e50853a4306507?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" alt="亚格.png"></p>
27
+ <h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>在我们的日常开发工作中,文本溢出截断省略是很常见的一种需考虑的业务场景细节。看上去 “稀松平常” ,但在实现上却有不同的区分,是单行截断还是多行截断?多行的截断判断是基于行数还是基于高度?这些问题之下,都有哪些实现方案?他们之间的差异性和场景适应性又是如何?凡事就怕较真,较真必有成长。本文试图通过编码实践,给出一些答案。</p>
28
+ <h2 id="先来点基础的,单行文本溢出省略"><a href="#先来点基础的,单行文本溢出省略" class="headerlink" title="先来点基础的,单行文本溢出省略"></a>先来点基础的,单行文本溢出省略</h2><p><strong>核心 CSS 语句</strong></p>
29
+ <ul>
30
+ <li>overflow: hidden;(文字长度超出限定宽度,则隐藏超出的内容)</li>
31
+ <li>white-space: nowrap;(设置文字在一行显示,不能换行)</li>
32
+ <li>text-overflow: ellipsis;(规定当文本溢出时,显示省略符号来代表被修剪的文本)</li>
33
+ </ul>
34
+ <p><strong>优点</strong></p>
35
+ <ul>
36
+ <li>无兼容问题</li>
37
+ <li>响应式截断</li>
38
+ <li>文本溢出范围才显示省略号,否则不显示省略号</li>
39
+ <li>省略号位置显示刚好</li>
40
+ </ul>
41
+ <p><strong>短板</strong></p>
42
+ <ul>
43
+ <li>只支持单行文本截断</li>
44
+ </ul>
45
+ <p><strong>适用场景</strong></p>
46
+ <ul>
47
+ <li>适用于单行文本溢出显示省略号的情况</li>
48
+ </ul>
49
+ <p><strong>Demo</strong></p>
50
+ <pre><code>&lt;style&gt;
51
+ .demo &#123;
52
+ white-space: nowrap;
53
+ overflow: hidden;
54
+ text-overflow: ellipsis;
55
+ &#125;
56
+ &lt;/style&gt;
57
+ &lt;body&gt;
58
+ &lt;div class=&quot;demo&quot;&gt;这是一段很长的文本&lt;/div&gt;
59
+ &lt;/body&gt;
60
+ 复制代码
61
+ </code></pre>
62
+ <p><strong>示例图片</strong><br><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c405615623?imageslim" alt="avatar"></p>
63
+ <h2 id="进阶一下,多行文本溢出省略(按行数)"><a href="#进阶一下,多行文本溢出省略(按行数)" class="headerlink" title="进阶一下,多行文本溢出省略(按行数)"></a>进阶一下,多行文本溢出省略(按行数)</h2><h3 id="○-纯-CSS-实现方案"><a href="#○-纯-CSS-实现方案" class="headerlink" title="○ 纯 CSS 实现方案"></a>○ 纯 CSS 实现方案</h3><p><strong>核心 CSS 语句</strong></p>
64
+ <ul>
65
+ <li>-webkit-line-clamp: 2;(用来限制在一个块元素显示的文本的行数, 2 表示最多显示 2 行。 为了实现该效果,它需要组合其他的WebKit属性)</li>
66
+ <li>display: -webkit-box;(和 1 结合使用,将对象作为弹性伸缩盒子模型显示 )</li>
67
+ <li>-webkit-box-orient: vertical;(和 1 结合使用 ,设置或检索伸缩盒对象的子元素的排列方式 )</li>
68
+ <li>overflow: hidden;(文本溢出限定的宽度就隐藏内容)</li>
69
+ <li>text-overflow: ellipsis;(多行文本的情况下,用省略号“…”隐藏溢出范围的文本)</li>
70
+ </ul>
71
+ <p><strong>优点</strong></p>
72
+ <ul>
73
+ <li>响应式截断</li>
74
+ <li>文本溢出范围才显示省略号,否则不显示省略号</li>
75
+ <li>省略号显示位置刚好</li>
76
+ </ul>
77
+ <p><strong>短板</strong></p>
78
+ <ul>
79
+ <li>兼容性一般: -webkit-line-clamp 属性只有 WebKit 内核的浏览器才支持</li>
80
+ </ul>
81
+ <p><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c406bdaa3a?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" alt="avatar"><br><strong>适用场景</strong></p>
82
+ <ul>
83
+ <li>多适用于移动端页面,因为移动设备浏览器更多是基于 WebKit 内核</li>
84
+ </ul>
85
+ <p><strong>Demo</strong></p>
86
+ <pre><code>&lt;style&gt;
87
+ .demo &#123;
88
+ display: -webkit-box;
89
+ overflow: hidden;
90
+ -webkit-line-clamp: 2;
91
+ -webkit-box-orient: vertical;
92
+ &#125;
93
+ &lt;/style&gt;
94
+
95
+ &lt;body&gt;
96
+ &lt;div class=&#39;demo&#39;&gt;这是一段很长的文本&lt;/div&gt;
97
+ &lt;/body&gt;
98
+ 复制代码
99
+ </code></pre>
100
+ <p><strong>示例图片</strong><br><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c40876a945?imageslim" alt="avatar"></p>
101
+ <h3 id="○-基于-JavaScript-的实现方案"><a href="#○-基于-JavaScript-的实现方案" class="headerlink" title="○ 基于 JavaScript 的实现方案"></a>○ 基于 JavaScript 的实现方案</h3><p><strong>优点</strong></p>
102
+ <ul>
103
+ <li>无兼容问题</li>
104
+ <li>响应式截断</li>
105
+ <li>文本溢出范围才显示省略号,否则不显示省略号</li>
106
+ </ul>
107
+ <p><strong>短板</strong></p>
108
+ <ul>
109
+ <li>需要 JS 实现,背离展示和行为相分离原则</li>
110
+ <li>文本为中英文混合时,省略号显示位置略有偏差</li>
111
+ </ul>
112
+ <p><strong>适用场景</strong></p>
113
+ <ul>
114
+ <li>适用于响应式截断,多行文本溢出省略的情况</li>
115
+ </ul>
116
+ <p><strong>Demo</strong></p>
117
+ <p>当前仅适用于文本为中文,若文本中有英文,可自行修改</p>
118
+ <pre><code>&lt;script type=&quot;text/javascript&quot;&gt;
119
+ const text = &#39;这是一段很长的文本&#39;;
120
+ const totalTextLen = text.length;
121
+ const formatStr = () =&gt; &#123;
122
+ const ele = document.getElementsByClassName(&#39;demo&#39;)[0];
123
+ const lineNum = 2;
124
+ const baseWidth = window.getComputedStyle(ele).width;
125
+ const baseFontSize = window.getComputedStyle(ele).fontSize;
126
+ const lineWidth = +baseWidth.slice(0, -2);
127
+
128
+ // 所计算的strNum为元素内部一行可容纳的字数(不区分中英文)
129
+ const strNum = Math.floor(lineWidth / +baseFontSize.slice(0, -2));
130
+
131
+ let content = &#39;&#39;;
132
+
133
+ // 多行可容纳总字数
134
+ const totalStrNum = Math.floor(strNum * lineNum);
135
+
136
+ const lastIndex = totalStrNum - totalTextLen;
137
+
138
+ if (totalTextLen &gt; totalStrNum) &#123;
139
+ content = text.slice(0, lastIndex - 3).concat(&#39;...&#39;);
140
+ &#125; else &#123;
141
+ content = text;
142
+ &#125;
143
+ ele.innerHTML = content;
144
+ &#125;
145
+
146
+ formatStr();
147
+
148
+ window.onresize = () =&gt; &#123;
149
+ formatStr();
150
+ &#125;;
151
+ &lt;/script&gt;
152
+
153
+ &lt;body&gt;
154
+ &lt;div class=&#39;demo&#39;&gt;&lt;/div&gt;
155
+ &lt;/body&gt;
156
+ 复制代码
157
+ </code></pre>
158
+ <p><strong>示例图片</strong><br><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c4099041ae?imageslim" alt="avatar"></p>
159
+ <h2 id="再进阶一步,多行文本溢出省略(按高度)"><a href="#再进阶一步,多行文本溢出省略(按高度)" class="headerlink" title="再进阶一步,多行文本溢出省略(按高度)"></a>再进阶一步,多行文本溢出省略(按高度)</h2><h3 id="○-多行文本溢出不显示省略号"><a href="#○-多行文本溢出不显示省略号" class="headerlink" title="○ 多行文本溢出不显示省略号"></a>○ 多行文本溢出不显示省略号</h3><p><strong>核心 CSS 语句</strong></p>
160
+ <ul>
161
+ <li>overflow: hidden;(文本溢出限定的宽度就隐藏内容)</li>
162
+ <li>line-height: 20px;(结合元素高度,高度固定的情况下,设定行高, 控制显示行数)</li>
163
+ <li>max-height: 40px;(设定当前元素最大高度)</li>
164
+ </ul>
165
+ <p><strong>优点</strong></p>
166
+ <ul>
167
+ <li>无兼容问题</li>
168
+ <li>响应式截断</li>
169
+ </ul>
170
+ <p><strong>短板</strong></p>
171
+ <ul>
172
+ <li>单纯截断文字, 不展示省略号,观感上较为生硬</li>
173
+ </ul>
174
+ <p><strong>适用场景</strong></p>
175
+ <ul>
176
+ <li>适用于文本溢出不需要显示省略号的情况</li>
177
+ </ul>
178
+ <p><strong>Demo</strong></p>
179
+ <pre><code>&lt;style&gt;
180
+ .demo &#123;
181
+ overflow: hidden;
182
+ max-height: 40px;
183
+ line-height: 20px;
184
+ &#125;
185
+ &lt;/style&gt;
186
+
187
+ &lt;body&gt;
188
+ &lt;div class=&#39;demo&#39;&gt;这是一段很长的文本&lt;/div&gt;
189
+ &lt;/body&gt;
190
+
191
+ 复制代码
192
+ </code></pre>
193
+ <p><strong>示例图片</strong><br><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c4096f17c9?imageslim" alt="avatar"></p>
194
+ <h3 id="○-伪元素-定位实现多行省略"><a href="#○-伪元素-定位实现多行省略" class="headerlink" title="○ 伪元素 + 定位实现多行省略"></a>○ 伪元素 + 定位实现多行省略</h3><p><strong>核心 CSS 语句</strong></p>
195
+ <ul>
196
+ <li><p>position: relative; (为伪元素绝对定位)</p>
197
+ </li>
198
+ <li><p>overflow: hidden; (文本溢出限定的宽度就隐藏内容)</p>
199
+ </li>
200
+ <li><p>position: absolute;(给省略号绝对定位)</p>
201
+ </li>
202
+ <li><p>line-height: 20px; (结合元素高度,高度固定的情况下,设定行高, 控制显示行数)</p>
203
+ </li>
204
+ <li><p>height: 40px; (设定当前元素高度)</p>
205
+ </li>
206
+ <li><p>::after {} (设置省略号样式)</p>
207
+ </li>
208
+ </ul>
209
+ <p><strong>优点</strong></p>
210
+ <ul>
211
+ <li><p>无兼容问题</p>
212
+ </li>
213
+ <li><p>响应式截断</p>
214
+ </li>
215
+ </ul>
216
+ <p><strong>短板</strong></p>
217
+ <ul>
218
+ <li><p>无法识别文字的长短,无论文本是否溢出范围, 一直显示省略号</p>
219
+ </li>
220
+ <li><p>省略号显示可能不会刚刚好,有时会遮住一半文字</p>
221
+ </li>
222
+ </ul>
223
+ <p><strong>适用场景</strong></p>
224
+ <ul>
225
+ <li>适用于对省略效果要求较低,文本一定会溢出元素的情况</li>
226
+ </ul>
227
+ <p><strong>Demo</strong></p>
228
+ <pre><code>&lt;style&gt;
229
+ .demo &#123;
230
+ position: relative;
231
+ line-height: 20px;
232
+ height: 40px;
233
+ overflow: hidden;
234
+ &#125;
235
+ .demo::after &#123;
236
+ content: &quot;...&quot;;
237
+ position: absolute;
238
+ bottom: 0;
239
+ right: 0;
240
+ padding: 0 20px 0 10px;
241
+ &#125;
242
+ &lt;/style&gt;
243
+
244
+ &lt;body&gt;
245
+ &lt;div class=&#39;demo&#39;&gt;这是一段很长的文本&lt;/div&gt;
246
+ &lt;/body&gt;
247
+ 复制代码
248
+ </code></pre>
249
+ <p><strong>示例图片</strong><br><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c40d1eefac?imageslim" alt="avatar"></p>
250
+ <h3 id="○-利用-Float-特性,纯-CSS-实现多行省略"><a href="#○-利用-Float-特性,纯-CSS-实现多行省略" class="headerlink" title="○ 利用 Float 特性,纯 CSS 实现多行省略"></a>○ 利用 Float 特性,纯 CSS 实现多行省略</h3><p><strong>核心 CSS 语句</strong></p>
251
+ <ul>
252
+ <li><p>line-height: 20px;(结合元素高度,高度固定的情况下,设定行高, 控制显示行数)</p>
253
+ </li>
254
+ <li><p>overflow: hidden;(文本溢出限定的宽度就隐藏内容)</p>
255
+ </li>
256
+ <li><p>float: right&#x2F;left;(利用元素浮动的特性实现)</p>
257
+ </li>
258
+ <li><p>position: relative;(根据自身位置移动省略号位置, 实现文本溢出显示省略号效果)</p>
259
+ </li>
260
+ <li><p>word-break: break-all;(使一个单词能够在换行时进行拆分)</p>
261
+ </li>
262
+ </ul>
263
+ <p><strong>优点</strong></p>
264
+ <ul>
265
+ <li><p>无兼容问题</p>
266
+ </li>
267
+ <li><p>响应式截断</p>
268
+ </li>
269
+ <li><p>文本溢出范围才显示省略号,否则不显示省略号</p>
270
+ </li>
271
+ </ul>
272
+ <p><strong>短板</strong></p>
273
+ <ul>
274
+ <li>省略号显示可能不会刚刚好,有时会遮住一半文字</li>
275
+ </ul>
276
+ <p><strong>适用场景</strong></p>
277
+ <ul>
278
+ <li>适用于对省略效果要求较低,多行文本响应式截断的情况</li>
279
+ </ul>
280
+ <p><strong>Demo</strong></p>
281
+ <pre><code>&lt;style&gt;
282
+ .demo &#123;
283
+ background: #099;
284
+ max-height: 40px;
285
+ line-height: 20px;
286
+ overflow: hidden;
287
+ &#125;
288
+ .demo::before&#123;
289
+ float: left;
290
+ content:&#39;&#39;;
291
+ width: 20px;
292
+ height: 40px;
293
+ &#125;
294
+
295
+ .demo .text &#123;
296
+ float: right;
297
+ width: 100%;
298
+ margin-left: -20px;
299
+ word-break: break-all;
300
+ &#125;
301
+ .demo::after&#123;
302
+ float:right;
303
+ content:&#39;...&#39;;
304
+ width: 20px;
305
+ height: 20px;
306
+ position: relative;
307
+ left:100%;
308
+ transform: translate(-100%,-100%);
309
+ &#125;
310
+ &lt;/style&gt;
311
+
312
+ &lt;body&gt;
313
+ &lt;div class=&#39;demo&#39;&gt;
314
+ &lt;div class=&quot;text&quot;&gt;这是一段很长的文本&lt;/div&gt;
315
+ &lt;/div&gt;
316
+ &lt;/body&gt;
317
+ 复制代码
318
+ </code></pre>
319
+ <p><strong>示例图片</strong><br><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c4375581cb?imageslim" alt="avatar"><br><strong>原理讲解</strong></p>
320
+ <p>有 A、B、C 三个盒子,A 左浮动,B、C 右浮动。设置 A 盒子的高度与 B 盒子高度(或最大高度)要保持一致</p>
321
+ <ol>
322
+ <li><p>当的 B 盒子高度低于 A 盒子,C 盒子仍会处于 B 盒子右下方。</p>
323
+ </li>
324
+ <li><p>如果 B 盒子文本过多,高度超过了 A 盒子,则 C 盒子不会停留在右下方,而是掉到了 A 盒子下。</p>
325
+ </li>
326
+ <li><p>接下来对 C 盒子进行相对定位,将 C 盒子位置向右侧移动 100%,并向左上方向拉回一个 C 盒子的宽高(不然会看不到哟)。这样在文本未溢出时不会看到 C 盒子,在文本溢出时,显示 C 盒子。</p>
327
+ </li>
328
+ </ol>
329
+ <p><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c444cf3295?imageslim" alt="yuanli.gif"></p>
330
+ <h2 id="收,大道归简,能力封装"><a href="#收,大道归简,能力封装" class="headerlink" title="收,大道归简,能力封装"></a>收,大道归简,能力封装</h2><blockquote>
331
+ <p>凡重复的,让它单一;凡复杂的,让它简单。</p>
332
+ </blockquote>
333
+ <p>每次都要搞一坨代码,太麻烦。这时候你需要考虑将文本截断的能力,封装成一个可随时调用的自定义容器组件。市面上很多 UI 组件库,都提供了同类组件的封装,如基于 Vue 的 ViewUI Pro,或面向小程序提供组件化解决能力的 MinUI 。<br><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c44af83125?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" alt="xuehuayu.cn"><img src="https://user-gold-cdn.xitu.io/2019/11/5/16e3b4c44857bc88?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" alt="xuehuayu.cn"></p>
334
+ <h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>本文介绍了几种目前常见的文本截断省略的方案,各有利弊,各位同学可根据实际开发情况及需求选择方案。如果你还知道更好其他实现方案,欢迎在评论区留下宝贵评论。</p>
335
+ <h2 id="参考文章"><a href="#参考文章" class="headerlink" title="参考文章"></a>参考文章</h2><ul>
336
+ <li><a target="_blank" rel="noopener" href="https://github.com/happylindz/blog/issues/12">纯 CSS 实现多行文字截断</a></li>
337
+ <li><a target="_blank" rel="noopener" href="https://blog.csdn.net/qq_40072782/article/details/82908581">【 CSS &#x2F; JS 】限制一行和多行文字数量,溢出部分用省略号显示</a></li>
338
+ <li><a target="_blank" rel="noopener" href="https://baijiahao.baidu.com/s?id=1621362934713048315&amp;wfr=spider&amp;for=pc">HTML技巧篇:如何让单行文本以及多行文本溢出显示省略号(…)</a></li>
339
+ </ul>
340
+ <h2 id="招贤纳士"><a href="#招贤纳士" class="headerlink" title="招贤纳士"></a>招贤纳士</h2><p>政采云前端团队(ZooTeam),一个年轻富有激情和创造力的前端团队,隶属于政采云产品研发部,Base 在风景如画的杭州。团队现有 50 余个前端小伙伴,平均年龄 27 岁,近 3 成是全栈工程师,妥妥的青年风暴团。成员构成既有来自于阿里、网易的“老”兵,也有浙大、中科大、杭电等校的应届新人。团队在日常的业务对接之外,还在物料体系、工程平台、搭建平台、性能体验、云端应用、数据分析及可视化等方向进行技术探索和实战,推动并落地了一系列的内部技术产品,持续探索前端技术体系的新边界。</p>
341
+ <p>如果你想改变一直被事折腾,希望开始能折腾事;如果你想改变一直被告诫需要多些想法,却无从破局;如果你想改变你有能力去做成那个结果,却不需要你;如果你想改变你想做成的事需要一个团队去支撑,但没你带人的位置;如果你想改变既定的节奏,将会是“ 5 年工作时间 3 年工作经验”;如果你想改变本来悟性不错,但总是有那一层窗户纸的模糊… 如果你相信相信的力量,相信平凡人能成就非凡事,相信能遇到更好的自己。如果你希望参与到随着业务腾飞的过程,亲手推动一个有着深入的业务理解、完善的技术体系、技术创造价值、影响力外溢的前端团队的成长历程,我觉得我们该聊聊。任何时间,等着你写点什么,发给 <code>ZooTeam@cai-inc.com</code><br><img src="https://user-gold-cdn.xitu.io/2019/8/29/16cddbe09f60b388?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" alt="xuehuayu.cn"></p>
342
+ <h2 id="推荐阅读"><a href="#推荐阅读" class="headerlink" title="推荐阅读"></a>推荐阅读</h2><p><a target="_blank" rel="noopener" href="https://juejin.im/post/5dafa3d35188257b1549bad1">1024 巨献!!一文看尽前端过去一年的精华沉淀(700 篇好文大汇总)</a></p>
343
+ <p><a target="_blank" rel="noopener" href="https://juejin.im/post/5d8774bff265da03ae78b2a1">前端工程实践之可视化搭建系统(一)</a></p>
344
+ <p><a target="_blank" rel="noopener" href="https://juejin.im/post/5d6de51de51d45620771f12c">自动化 Web 性能优化分析方案</a></p>
345
+ </div><iframe src="/donate/?AliPayQR=https://store.xuehuayu.cn/store/public/alipay_qr.jpg&amp;WeChatQR=https://store.xuehuayu.cn/store/public/wechat_qr.png&amp;UnionPayQR=null&amp;GitHub=null&amp;BTCQR=null&amp;BTCKEY=null&amp;PayPal=https://www.paypal.com/paypalme/OrdinaryPerson" style="overflow-x:hidden; overflow-y:hidden; border:0xp none #fff; min-height:240px; width:100%;" frameborder="0" scrolling="no"></iframe><div><ul class="post-copyright"><li class="post-copyright-author"><strong>本文作者:</strong>雪花雨</li><li class="post-copyright-link"><strong>本文链接:</strong><a href="/article/25318.html">https://xuehuayu.cn/article/25318.html</a></li><li class="post-copyright-license"><strong>版权声明:</strong>① 标为原创的文章为博主原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接。② 转载文章来自网络,已标明出处,<a href="mailto:cainiaoblog@126.com">侵删</a>。</li></ul></div><br><div class="tags"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载</a></div><div class="post-nav"><a class="pre" href="/article/402.html">如何用120行代码,实现一个交互完整的拖拽上传组件?</a><a class="next" href="/article/17246.html">OPTIONS请求时设置了Header请求和token可是后台接收不到,为什么?</a></div><div id="vcomment"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.min.css"><script src="//cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.js"></script><script>const origin = window.location.origin
346
+ const serverURL = origin.includes('cainiaoblog') ? 'https://cmts.cainiaoblog.cn' : 'https://cmts.xuehuayu.cn'
347
+ const locale = {
348
+ placeholder: '请正确填写昵称和邮箱,方便接收回复通知~',
349
+ sofa: '沙发空缺中,还不快抢~',
350
+ };
351
+ Waline.init({
352
+ el: '#vcomment',
353
+ serverURL: serverURL,
354
+ pageSize: '20',
355
+ visitor: true, // 阅读量统计
356
+ requiredMeta: ['nick', 'mail'],
357
+ emoji: [
358
+ 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/weibo',
359
+ 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/qq',
360
+ 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/tw-emoji',
361
+ ],
362
+ locale,
363
+ pageview: true
364
+ })
365
+ </script></div></div></div><div class="pure-u-1 pure-u-md-1-4 fixed-search hidden_mid_and_down"><div id="sidebar"><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/search.min.js"></script><div class="widget"><div class="widget-search"><input class="search" type="radio" name="search" value="baidu" id="baidu" checked="checked"/><label class="label" for="baidu" title="百度全站搜索">百度</label><input class="search" type="radio" name="search" value="google" id="google"/><label class="label" for="google" title="谷歌全站搜索">谷歌</label><input class="search" type="radio" name="search" value="self" id="self"/><label class="label" for="self" title="使用站内搜索">站内</label></div><div class="widget" id="search"><form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"/><input type="hidden" name="si" value="xuehuayu.cn"/><input type="hidden" name="cl" value="3"/><input type="hidden" name="ct" value="2097152"/><input type="hidden" name="s" value="on"/><input class="search-submit" type="submit" value=""/></form></div></div><script>$('input[type=radio][name=search]').change(function() {
366
+ var val = $(this).val()
367
+ var self = '<div class="search-form"><input id="local-search-input" placeholder="站内搜索,首次慢" type="search" name="q" results="0"><input class="search-submit" type="submit" value=""/><div id="local-search-result"></div></div>'
368
+ var google = '<form class="search-form" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="q" maxlength="30" placeholder="谷歌全站搜索"><input type="hidden" name="sitesearch" value="xuehuayu.cn"><input class="search-submit" type="submit" value=""/></form>'
369
+ var baidu = '<form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"><input type="hidden" name="si" value="xuehuayu.cn"><input type="hidden" name="cl" value="3"><input type="hidden" name="ct" value="2097152"><input type="hidden" name="s" value="on"><input class="search-submit" type="submit" value=""/></form>'
370
+
371
+ if (val === 'self') {
372
+ $('#search').html(self)
373
+ var search_path = 'search.xml';
374
+ if (search_path.length == 0) {
375
+ search_path = 'search.xml';
376
+ }
377
+ var path = 'https://cdn.staticaly.com/gh/npljy/npljy.github.io/main/' + search_path;
378
+ searchFunc(path, 'local-search-input', 'local-search-result');
379
+ } else if (val === 'baidu') {
380
+ $('#search').html(baidu)
381
+ } else if (val === 'google') {
382
+ $('#search').html(google)
383
+ }
384
+ })</script><div class="widget widget-wxmp"><img alt="微信公众号" width="100%" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/mp-mini.jpg"/></div><div class="widget widget-categories"><div class="widget-title"><i class="fa fa-folder-o"> 分类</i></div><ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/CDN/">CDN</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/IDE/">IDE</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/git/">git</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/hexo/">hexo</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%85%AC%E5%85%B1%E8%8A%82%E6%97%A5/">公共节日</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%88%86%E4%BA%AB/">分享</a><span class="category-list-count">29</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/">前端</a><span class="category-list-count">191</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">1</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/">网络协议</a><span class="category-list-count">1</span></li></ul></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%8D%9A%E5%AE%A2/">博客</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B7%A5%E5%85%B7/">工具</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/">广告过滤</a><span class="category-list-count">8</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/%E8%A7%86%E9%A2%91%E7%94%B5%E8%A7%86%E5%B0%8F%E8%AF%B4%E6%BC%AB%E7%94%BB%E8%B5%84%E8%AE%AF%E9%9F%B3%E4%B9%90/">视频电视小说漫画资讯音乐</a><span class="category-list-count">2</span></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%AD%A3%E5%88%99/">正则</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E7%AE%97%E6%B3%95/">算法</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%B5%84%E8%AE%AF/">资讯</a><span class="category-list-count">16</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%BD%BB%E6%9D%BE%E4%B8%80%E5%88%BB/">轻松一刻</a><span class="category-list-count">1</span></li></ul></div><div class="widget widget-tags"><div class="widget-title"><i class="fa fa-star-o"> 标签</i></div><div class="tagcloud"><a href="/tags/%E5%8E%9F%E5%88%9B/" style="font-size: 15px;">原创</a> <a href="/tags/%E8%BD%AC%E8%BD%BD/" style="font-size: 15px;">转载</a> <a href="/tags/%E6%89%8B%E5%86%99/" style="font-size: 15px;">手写</a> <a href="/tags/%E7%96%AB%E6%83%85/" style="font-size: 15px;">疫情</a> <a href="/tags/%E5%A8%B1%E4%B9%90/" style="font-size: 15px;">娱乐</a></div></div><div class="widget widget-recent-posts"><div class="widget-title"><i class="fa fa-file-o"> 最近文章</i></div><ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/article/c5576490.html">面试准备</a></li><li class="post-list-item"><a class="post-list-link" href="/article/84c9ccd6.html">精读《SolidJS》</a></li><li class="post-list-item"><a class="post-list-link" href="/article/53803e6.html">git提交注释规范</a></li><li class="post-list-item"><a class="post-list-link" href="/article/a4145266.html">前端数组拍平flat一行代码</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bedea419.html">一道前端this面试题</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bf7e7421.html">git多账号配置</a></li></ul></div><div class="widget widget-links"><div class="widget-title"><i class="fa fa-external-link"> 友情链接</i></div><ul></ul><a href="https://github.com/npljy?utm_source=xuehuayu.cn" title="GitHub" target="_blank">GitHub</a><ul></ul><a href="https://laonongmin.online?utm_source=xuehuayu.cn" title="看看" target="_blank">看看</a><ul></ul><a href="https://cainiaoblog.cn?utm_source=xuehuayu.cn" title="菜鸟博客" target="_blank">菜鸟博客</a><ul></ul><a href="mailto:cainiaoblog@126.com" title="友链联系" target="_blank">友链联系</a></div></div></div><div class="pure-u-1 pure-u-md-3-4"><div id="footer"><div class="flex-block justify-center align-center flex-wrap"><a class="gxba-link" id="gxba" rel="nofollow" target="_blank" href="http://beian.miit.gov.cn/">京ICP备20007647号-2</a><a class="gaba-link" id="gaba-link" rel="nofollow" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031264"><img class="nofancybox" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/gaba.png" alt=""/><span id="gaba">京公网安备 11010802031264号</span><span style="padding-right: 10px;"></span></a><span>Copyright © 2023 </span><a href="/." rel="nofollow">前端壹菜鸟. </a><script>(function(){
385
+ var cnb =window.location.origin.indexOf('cainiaoblog') !==-1
386
+ if (cnb) {
387
+ var gxba =document.getElementById('gxba')
388
+ var gaba =document.getElementById('gaba')
389
+ var gabaLink =document.getElementById('gaba-link')
390
+ gxba.innerText ='京ICP备20007647号-1'
391
+ gaba.innerText ='京公网安备 11010802031254号'
392
+ gabaLink.setAttribute('href','http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031254')
393
+ }
394
+ })()</script></div><div class="flex-block justify-center align-center flex-wrap"><a rel="nofollow" target="_blank" href="https://v6.51.la/s/Guz3lwHCsVme9Cu"><div class="busuanzi_container" id="busuanzi_container"><span class="busuanzi_container_site_pv" id="busuanzi_container_site_pv">访问量:<span id="busuanzi_value_site_pv"><i class="fa fa-spinner"></i></span></span><span class="busuanzi_container_site_uv" id="busuanzi_container_site_uv">访客数:<span id="busuanzi_value_site_uv"><i class="fa fa-spinner"></i></span></span><span style="padding-right: 10px;"></span></div></a><a rel="nofollow" target="_blank" href="https://www.upyun.com/?utm_source=lianmeng&amp;utm_medium=referral"><span style="font-weight:bold;letter-spacing: 1px;">本网站由 </span><img class="nofancybox" height="32" style="vertical-align: middle" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/upy_logo.min.svg" alt=""/><span style="font-weight:bold;letter-spacing: 1px;">提供CDN加速/云存储服务</span></a><span style="padding-right: 10px;"></span><a rel="nofollow" style="font-size:18px;font-weight:bold;vertical-align: middle" target="_blank" title="注册就送代金券可直接使用" href="https://console.upyun.com/register/?invite=HyDsjZHIL">注册</a></div></div></div></div><a class="show" id="rocket" href="#top"></a><div class="darkmode-toggle">🌓</div><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/totop.min.js" async></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/dark.min.js" async></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/codeblock-resizer.min.js"></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/smartresize.min.js"></script></div></body></html>