摘要:事件的響應(yīng)分區(qū)為三個(gè)階段捕獲目標(biāo)冒泡階段。綁定的多個(gè)事件會(huì)被覆蓋,后者覆蓋前者。再用轉(zhuǎn)換成數(shù)值表示。如實(shí)際數(shù)量為,則展示為項(xiàng)目中使用過(guò)濾器做的處理可以抽取方法的,調(diào)整相關(guān),可以獲取指定位數(shù)的縮寫。
CSS html5中a的download屬性
定義和用法
download 屬性定義下載鏈接的地址或指定下載文件的名稱。文件名稱沒(méi)有限定值,瀏覽器會(huì)自動(dòng)在文件名稱末尾添加該下載文件的后綴 (.img, .pdf, .txt, .html, 等)。
download 屬性是HTML5中新增的 標(biāo)簽屬性。
語(yǔ)法 | 屬性值 | 值 描述 |
---|---|---|
filename | 指定文件名稱。 |
檢測(cè)瀏覽器是否支持download屬性
"download" in document.createElement("a");1px邊框(解決不同分辨率屏幕1px的寬窄不同)
縮放原理
.border-1px { position relative } .border-1px:after { display block content "" position absolute left 0 bottom 0 width 100% border-top 1px solid #ccc } @media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5) .border-1px::after { transform scaleY(0.7) -webkit-transform scaleY(0.7) } @media (-webkit-min-device-pixel-ratio: 2), (min-device-pixel-ratio: 2) .border-1px::after { transform scaleY(0.5) -webkit-transform scaleY(0.5) } @media (-webkit-min-device-pixel-ratio: 3), (min-device-pixel-ratio: 3) .border-1px::after { transform scaleY(0.3333) -webkit-transform scaleY(0.3333) }隱藏移動(dòng)端ios/android滾動(dòng)條,使?jié)L動(dòng)流暢
隱藏滾動(dòng)條,不影響滾動(dòng)
::-webkit-scrollbar display none
流暢滾動(dòng)
//在滾動(dòng)元素`css`中添加 -webkit-overflow-scrolling touch // IOS系統(tǒng) overflow-scrolling touch // 安卓系統(tǒng)偽元素(:或::都可以,::更準(zhǔn)確,:兼容好)與偽類(只能:)的區(qū)別
偽類與偽元素都是用于向選擇器加特殊效果
偽類與偽元素的本質(zhì)區(qū)別就是是否抽象創(chuàng)造了新元素
偽類只要不是互斥可以疊加使用
偽元素在一個(gè)選擇器中只能出現(xiàn)一次,并且只能出現(xiàn)在末尾
偽類與偽元素優(yōu)先級(jí)分別與類、標(biāo)簽優(yōu)先級(jí)相同
偽類標(biāo)簽只對(duì)可以插入內(nèi)容的標(biāo)簽添加:div spanVue中使用less根據(jù)分辨率給元素添加背景圖片
按照less官方文檔,url應(yīng)當(dāng)如下使用:
URLs // Variables @images: "../img"; // Usage body { color: #444; background: url("@{images}/white-sand.png"); }
故而有了根據(jù)屏幕分辨率設(shè)置背景圖片代碼
.bg-image(@url) { background-image: url("@{url}@2x.png"); @media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3){ background-image: url("@{url}@3x.png"); } } // 報(bào)錯(cuò)報(bào)錯(cuò) 找不到路徑的
這里要使用“~”符號(hào)來(lái)告訴less引號(hào)里面的內(nèi)容不需要編譯。
正確代碼:
.bg-image(@url) { background-image:~"url("@{url}@2x.png")"; @media (-webkit-min-device-pixel-ratio: 3), (min-device-pixel-ratio: 3) { background-image: ~"url("@{url}@3x.png")"; } }改變輸入框input,textarea的placeholder樣式,去除輸入框選中邊框高亮
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { //設(shè)置樣式 } input:focus { outline:none;} /* focus 標(biāo)記*/
(原諒我一直沒(méi)找很完善的reset.css,這些在一些重置樣式文件自帶的有,大家有好的完善的也可以告知我一下 )
sticky 屬性在使用 position: sticky 的時(shí)候,如果不指定 top 屬性是不會(huì)有效果的。
這個(gè)屬性是用來(lái)實(shí)現(xiàn)滾動(dòng)吸頂?shù)模唧w可了解position。
inline-flex 和 inline-block 一樣,對(duì)內(nèi)部元素來(lái)說(shuō)是個(gè) display:flex 的容器,對(duì)外部元素來(lái)說(shuō)是個(gè) inline-block 的塊
JS addEventListener VS onclick孰優(yōu)孰劣兩個(gè)都可以實(shí)現(xiàn)效果。
addEventListener 以及 IE 的 attachEvent可以實(shí)現(xiàn)綁定多個(gè)事件,如果你有這方面的需求的話(奇怪的是你總會(huì)的)。
addEventListener的第三個(gè)參數(shù)可以用來(lái)控制監(jiān)聽(tīng)器對(duì)于冒泡事件的響應(yīng),大部分情況是false,如果置為true,則響應(yīng)事件的捕獲階段。事件的響應(yīng)分區(qū)為三個(gè)階段 :捕獲、目標(biāo)、冒泡階段。
onclick綁定的多個(gè)事件會(huì)被覆蓋,后者覆蓋前者。
考慮到兼容ie,可以寫一個(gè)原生的事件綁定兼容方案:
function addEvent(element, evnt, funct){ if (element.attachEvent) return element.attachEvent("on"+evnt, funct); else return element.addEventListener(evnt, funct, false); } // example addEvent( document.getElementById("myElement"), "click", function () { alert("hi!"); } );
參考鏈接:addEventListener 與 onclick
圖片上傳按鈕以及預(yù)覽(轉(zhuǎn)載+解析)//代碼來(lái)源:https://www.jb51.net/article/120617.htm 這里解析一下{{googleSecuritKey}} 復(fù)制解決科學(xué)計(jì)數(shù)法顯示數(shù)字問(wèn)題參考出處:JavaScript中科學(xué)計(jì)數(shù)法轉(zhuǎn)化為數(shù)值字符串形式
以下兩種情況,JavaScript 會(huì)自動(dòng)將數(shù)值轉(zhuǎn)為科學(xué)計(jì)數(shù)法表示
(1) 小于1且小數(shù)點(diǎn)后面帶有6個(gè)0以上的浮點(diǎn)數(shù)值:
JavaScript 代碼: 0.0000003 // 3e-7 0.00000033 // 3.3e-7 0.000003 // 0.000003(2) 整數(shù)位數(shù)字多于21位:
JavaScript 代碼: 1234567890123456789012 //1.2345678901234568e+21 1234567890123456789012.1 //1.2345678901234568e+21 123456789012345678901 //123456789012345680000解決方案:
JavaScript 代碼:function toNonExponential(num) { var m = num.toExponential().match(/d(?:.(d*))?e([+-]d+)/); return num.toFixed(Math.max(0, (m[1] || "").length - m[2])); } toNonExponential(3.3e-7) // "0.00000033" toNonExponential(3e-7) // "0.0000003" toNonExponential(1.401e10) // "14010000000" toNonExponential(0.0004) // "0.0004"解析一下:
用.toExponential()將數(shù)字轉(zhuǎn)化為科學(xué)記數(shù)法表示,匹配正則表達(dá)式/d(?:.(d*))?e([+-]d+)/,獲取科學(xué)記數(shù)法中小數(shù)點(diǎn)后的字符及冪指數(shù)(e 后面的值),這樣可以確定數(shù)字是幾位小數(shù)。再用toFixed() 轉(zhuǎn)換成數(shù)值表示。
大額數(shù)量轉(zhuǎn)換需求:
數(shù)量保持最多5個(gè)字符。
當(dāng)數(shù)量<1,展示為0.003
當(dāng)數(shù)量為1-1000,展示為1.234,12.34,123.4
當(dāng)數(shù)量>1000,帶上單位K,展示為1.54K,15.4K,154K
當(dāng)數(shù)量>1000000時(shí),帶上單位M,展示為1.23M,12.3M,123M
數(shù)值采用向下取數(shù)展示的方式。如實(shí)際數(shù)量為15345,則展示為15.3K
項(xiàng)目中使用vue過(guò)濾器做的處理:
export default (vol) => { const val = parseFloat(vol) + ""; if (isNaN(val)) return vol; let num = val.indexOf(".") ? val.split(".")[0].length : val.length; const getFiv = function(v) { let a = v.indexOf(".") ? v.substring(0, 5) : v; let b = a.replace(/[.]$/, ""); return b; }; if (num < 4) { let v = val + ""; return getFiv(v); } else if (num < 7) { let v = val / 1000 + ""; return getFiv(v) + "K"; } else { let v = val / 1000000 + ""; return getFiv(v) + "M"; } };可以抽取方法的,調(diào)整5相關(guān),可以獲取指定位數(shù)的縮寫。
含有變量的正則表達(dá)式value = value.replace(new RegExp(`^(-)*(d+).(d{${count}}).*$`), "$1$2.$3");//只能輸入count位小數(shù)比如count為4:
value = value.replace(/^(-)*(d+).(d{4}).*$/, "$1$2.$3");//只能輸入4位小數(shù)Blob文件下載 借鑒
把請(qǐng)求responseType設(shè)置為 blob,在response.body中拿數(shù)據(jù)(例子中使用了封裝過(guò)的axios,data處理過(guò));
const { data } = await http({ method: "POST", headers: defaultHeaders, url: ..., responseType: "blob", data: ... });
把接受的data處理成blob對(duì)象,關(guān)于Blob
let blob = new Blob([data], { type: data.type });以下來(lái)自MDN
語(yǔ)法 參數(shù) var aBlob = new Blob( array, options ); array 是一個(gè)由ArrayBuffer, ArrayBufferView, Blob, DOMString 等對(duì)象構(gòu)成的 Array ,或者其他類似對(duì)象的混合體,它將會(huì)被放進(jìn) Blob。DOMStrings會(huì)被編碼為UTF-8。 options 是一個(gè)可選的BlobPropertyBag字典,它可能會(huì)指定如下兩個(gè)屬性: - type,默認(rèn)值為 "",它代表了將會(huì)被放入到blob中的數(shù)組內(nèi)容的MIME類型。 - endings,默認(rèn)值為"transparent",用于指定包含行結(jié)束符n的字符串如何被寫入。 它是以下兩個(gè)值中的一個(gè): "native",代表行結(jié)束符會(huì)被更改為適合宿主操作系統(tǒng)文件系統(tǒng)的換行符,或者 "transparent",代表會(huì)保持blob中保存的結(jié)束符不變
創(chuàng)建url
//URL.createObjectURL()方法會(huì)根據(jù)傳入的參數(shù)創(chuàng)建一個(gè)指向該參數(shù)對(duì)象的URL. 這個(gè)URL的生命僅存在于它被創(chuàng)建的這個(gè)文檔里. 新的對(duì)象URL指向執(zhí)行的File對(duì)象或者是Blob對(duì)象. let url = window.URL.createObjectURL(blob); let fileName = "分析師列表.xlsx";
創(chuàng)建a標(biāo)簽實(shí)現(xiàn)自動(dòng)下載或者手動(dòng)下載
``` if ("download" in document.createElement("a")) { const a = document.createElement("a"); a.href = url; a.download = fileName; a.style.display = "none"; document.body.appendChild(a); a.click(); URL.revokeObjectURL(a.href); document.body.removeChild(a); } else { navigator.msSaveBlob(blob, fileName); } ```純函數(shù) (Pure Function)純函數(shù)是指不依賴于且不改變它作用域之外的變量狀態(tài)的函數(shù)。
ES6及以上常用的方法 Array.from()Array.from() 方法從一個(gè)類似數(shù)組或可迭代對(duì)象中創(chuàng)建一個(gè)新的數(shù)組實(shí)例。
Array.from(arrayLike[, mapFn[, thisArg]])
第一個(gè)必選參數(shù) 類數(shù)組對(duì)象
每個(gè)元素的回調(diào)函數(shù)
this對(duì)象
返回新數(shù)組
常見(jiàn)用法,不多說(shuō):
Array.from("string"); // ["s", "t", "r", "i", "n", "g"] Array.from({a: "a", b: "b"}); // [] Array.from({1: "a", 2: "b"}); // [] Array.from([1, 2, 3], x => x + x)); // [2, 4, 6]Array.from() 可以通過(guò)以下方式來(lái)創(chuàng)建數(shù)組對(duì)象:
偽數(shù)組對(duì)象(擁有一個(gè) length 屬性和若干索引屬性的任意對(duì)象)
可迭代對(duì)象(可以獲取對(duì)象中的元素,如 Map和 Set 等)
擁有一個(gè) length 屬性這是我一直忽略的,這一點(diǎn)還是蠻有技巧性的,有時(shí)候能簡(jiǎn)化不少步驟
先看使用中的多種情況:
Array.from({1: "a", 2: "b", length: 2}); // [undefined, "a"] Array.from({1: "a", 2: "b", length: 3}); // [undefined, "a", "b"] Array.from({a: "a", b: "b",length: 3}); // [undefined, undefined, undefined]還算比較智能。
看一下應(yīng)用,來(lái)自Daily-Interview-Question2019-04-16的面試題:
第 55 題:某公司 1 到 12 月份的銷售額存在一個(gè)對(duì)象里面,如下:{1:222, 2:123, 5:888},請(qǐng)把數(shù)據(jù)處理為如下結(jié)構(gòu):[222, 123, null, null, 888, null, null, null, null, null, null, null]。我最開(kāi)始直接來(lái)了個(gè)基本的遍歷法...還在new Array(13)或者[].length=13
簡(jiǎn)化版:
// 13長(zhǎng)度的數(shù)組對(duì)應(yīng)進(jìn)去保持了key與索引一致,最終去除掉第一個(gè)元素就好 Array.from({1:222, 2:123, 5:888, length: 13}).slice(1).map(e => e || null); let obj = {1:222, 2:123, 5:888}; Array.from({length: 12}).fill(null).map((e, index) => obj[index +1] || null);相比起來(lái),Array.fill()沒(méi)有什么容易忽略的地方。
未完待續(xù)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/52458.html
相關(guān)文章
前端實(shí)用資源整理
摘要:事件的響應(yīng)分區(qū)為三個(gè)階段捕獲目標(biāo)冒泡階段。綁定的多個(gè)事件會(huì)被覆蓋,后者覆蓋前者。再用轉(zhuǎn)換成數(shù)值表示。如實(shí)際數(shù)量為,則展示為項(xiàng)目中使用過(guò)濾器做的處理可以抽取方法的,調(diào)整相關(guān),可以獲取指定位數(shù)的縮寫。 CSS html5中a的download屬性 定義和用法download 屬性定義下載鏈接的地址或指定下載文件的名稱。文件名稱沒(méi)有限定值,瀏覽器會(huì)自動(dòng)在文件名稱末尾添加該下載文件的后綴 (...
JavaScript文章
摘要:我對(duì)知乎前端相關(guān)問(wèn)題的十問(wèn)十答張?chǎng)涡駨場(chǎng)涡翊笊駥?duì)知乎上經(jīng)典的個(gè)前端問(wèn)題的回答。作者對(duì)如何避免常見(jiàn)的錯(cuò)誤,難以發(fā)現(xiàn)的問(wèn)題,以及性能問(wèn)題和不好的實(shí)踐給出了相應(yīng)的建議。但并不是本身有問(wèn)題,被標(biāo)準(zhǔn)定義的是極好的。 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果讀完本文還不懂,可以揍我。 不論你是javascript新手還是老...
2月份前端資源分享
摘要:月份前端資源分享更多資源請(qǐng)文章轉(zhuǎn)自前端生成好看的二維碼十大經(jīng)典排序算法帶動(dòng)圖演示為什么知乎前端圈普遍認(rèn)為游戲和展示的個(gè)人整理和封裝的庫(kù)中文詳細(xì)注釋供新手學(xué)習(xí)使用擴(kuò)展語(yǔ)法記錄掉坑初期工具漢字拼音轉(zhuǎn)換工具實(shí)現(xiàn)漢字轉(zhuǎn)拼音的插件下拉列表支持拼音簡(jiǎn) 2月份前端資源分享 更多資源請(qǐng)Star:https://github.com/maidishike... 文章轉(zhuǎn)自:https://github...
發(fā)表評(píng)論
0條評(píng)論
wslongchen
男|高級(jí)講師
TA的文章
閱讀更多
BlueHost:雙十一優(yōu)惠,全場(chǎng)最高可享3折,美國(guó)/香港主機(jī)低至14元/月
閱讀 1204·2021-11-15 18:00
HostRound:美國(guó)CN2 GIA獨(dú)立服務(wù)器100TB流量139.99美元/月,洛杉磯/紐約/達(dá)
閱讀 1799·2021-10-08 10:15
Pia云:暑期全場(chǎng)七折,月付20元起
閱讀 763·2021-09-04 16:48
RAKsmart 新人註冊(cè)贈(zèng)送10美元紅包 可直接消費(fèi)抵扣
閱讀 2389·2021-09-04 16:48
45個(gè)值得收藏的 CSS 形狀
閱讀 1322·2019-08-29 18:40
細(xì)談sass和less中的變量及其作用域
閱讀 976·2019-08-29 13:08
作為一個(gè)前端工程師也要掌握的幾種文件路徑知識(shí)
閱讀 2997·2019-08-26 14:06
每個(gè)前端都要了解點(diǎn)網(wǎng)絡(luò)知識(shí)
閱讀 1119·2019-08-26 13:35