時(shí)間:2023-09-22 03:48:01 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2023-09-22 03:48:01 來源:網(wǎng)站運(yùn)營
打造一份網(wǎng)頁版簡(jiǎn)歷:多年前,因?yàn)閾Q工作的需要,我得更新簡(jiǎn)歷。但可能是寫慣了CSS的緣故,在Word中排版實(shí)在是各種不順手,于是就發(fā)揮了作為前端工程師的優(yōu)勢(shì),把簡(jiǎn)歷做成了網(wǎng)頁。久而久之,這份簡(jiǎn)歷就成為了我的個(gè)人產(chǎn)品,無論是否需要再找工作,每隔一段時(shí)間我都會(huì)進(jìn)行更新迭代。// URL是否帶有privacy參數(shù)(例如「http://abc.com?privacy」)var showPrivacy = /[?&]privacy=?(&|$)/.test(window.location.search);document.write(showPrivacy ? '張三' : '張先生');
而“加密”信息的方法,則多了去了,例如:['me', 'abc', 'com'].join('.').replace('.', '@'); // "me@abc.com"['a13800b', 'c138000d'].join('').replace(/[a-z]/g, ''); // "13800138000"
甚至,你可以把這些信息做成圖片。1in = 2.54cm在595px這個(gè)寬度下,按照屏幕適配的規(guī)則,會(huì)采用小屏設(shè)備的布局。然而,A4紙的空間比小屏設(shè)備的屏幕要大得多,并不適合采用這樣的布局,所以就需要大量調(diào)整樣式。在這過程中,踩進(jìn)了一個(gè)坑:
21cm / 2.54cm * 72px ≈ 595px
29.7cm / 2.54cm * 72px ≈ 842px
@media not print and (max-width: 639px) { /* ... */}
上面的媒體查詢代碼,表達(dá)的并非「不是打印設(shè)備并且寬度不超過639px」,而是「不是寬度不超過639px的打印設(shè)備」(關(guān)于這一點(diǎn)可以看看Mozilla的解釋說明)。@media not print { @media (max-width: 639px) { /* ... */ }}
結(jié)果又掉進(jìn)了另一個(gè)坑,有些舊內(nèi)核的瀏覽器并不支持嵌套媒體查詢。就這樣折騰了一番之后發(fā)現(xiàn),根據(jù)不同的設(shè)備應(yīng)用不同的樣式表文件才是最好的選擇:<link href="./css/style.css" media="not print" rel="stylesheet" type="text/css" /><link href="./css/style-print.css" media="print" rel="stylesheet" type="text/css" />
那么打印的樣式要怎么寫呢?首先是「@page」,可以用來修改頁面容器的版式,最常用的是指定頁面的尺寸及邊距:@page { size: A4 portrait; margin: 2.1cm 1.9cm;}
其次,某些瀏覽器默認(rèn)是不打印背景色和背景圖片的。對(duì)于Chrome,可以加上這段CSS代碼強(qiáng)制打印背景(對(duì)其他瀏覽器來說,暫時(shí)沒有辦法):body { -webkit-print-color-adjust: exact; }
再次,根據(jù)需要處理鏈接。要知道打印出來之后,用手指往紙上戳是打不開網(wǎng)頁的。如果你想讓別人看到鏈接地址,也可以通過CSS將其輸出到頁面上,例如:a:after { content: '[' attr(href) ']'; }
最后,紙質(zhì)簡(jiǎn)歷的篇幅不宜過長(zhǎng),可以選擇性地隱藏一些內(nèi)容。CSS部分:/* style.css */.only-for-print { display: none; }/* style-print.css */.not-for-print { display: none; }
HTML部分:<div class="not-for-print">這是非打印版</div><div class="only-for-print">這是打印版</div>
順帶一提,以上所說的這些做法都不兼容IE6- 8等舊瀏覽器,但是打印店可能還在用XP系統(tǒng),所以輸出個(gè)pdf文件去打印是比較保險(xiǎn)的。"devDependencies": { "autoprefixer": "^9.1.5", "css-loader": "^1.0.0", "cssnano": "^4.1.0", "extract-loader": "^2.0.1", "file-loader": "^1.1.11", "html-webpack-plugin": "^3.2.0", "postcss-loader": "^3.0.0", "webpack": "^4.16.4", "webpack-cli": "^3.1.0", "webpack-dev-server": "^3.1.5"}
公共構(gòu)建邏輯如下:const path = require('path');module.exports = { entry: [ './src/main.js' ], output: { path: path.resolve(__dirname, './dist') }, module: { rules: [ { test: //.css$/, use: [{ loader: 'file-loader', options: { name: '[name].[hash:8].[ext]', outputPath: 'assets/', publicPath: '/assets/' } }, 'extract-loader', 'css-loader', 'postcss-loader'] }, { test: //.(jpg|png|gif|svg)$/, use: { loader: 'file-loader', options: { name: '[name].[hash:8].[ext]', outputPath: 'assets/', publicPath: '/assets/' } } } ] }};
上文提過,頁面沒有用到外部JavaScript,但是entry又寫了「main.js」。其實(shí)這個(gè)js文件是空的,它的作用是:const path = require('path');const HtmlWebpackPlugin = require('html-webpack-plugin');const config = require('./webpack.config.js');module.exports = Object.assign({ mode: 'development', plugins: [ new HtmlWebpackPlugin({ template: './src/index.ejs', inject: true, minify: { collapseWhitespace: true } }) ], devServer: { compress: true, overlay: true, port: 4550 }}, config);
為了構(gòu)建html文件,這里用到了「html-webpack-plugin」,并且要把html文件中對(duì)資源的引用改成模板占位符(ejs格式):<link href="<%= require('./css/style-v2.7.css') %>" media="not print" rel="stylesheet" type="text/css" /><link href="<%= require('./css/style-v2.7-print.css') %>" media="print" rel="stylesheet" type="text/css" />
最后看看生產(chǎn)環(huán)境的構(gòu)建邏輯:const config = require('./webpack.config.js');const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = Object.assign({ mode: 'production', plugins: [ new HtmlWebpackPlugin({ template: './src/index.ejs', inject: false, minify: { collapseWhitespace: true } }) ]}, config);
由于頁面沒有外部JavaScript,而且生產(chǎn)環(huán)境下也不需要「webpack-dev-server」,所以「inject」設(shè)成了false(仍然會(huì)生成main.js,只是沒有注入到頁面中)。關(guān)鍵詞:簡(jiǎn)歷,打造
客戶&案例
營銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。