摘要:顯示所有指定的元素用操作符和清除所有指定元素的屬性。使用了兩個事件監聽器。將指定的數組元素轉換成元素標簽,然后將它們插入指定的選擇器元素內用和去生成一個元素標簽列表復制一個字符串到剪切板。用去執行復制到剪切板。
英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md
Browser currentURL返回當前頁面的 URL。
用 window.location.href 獲得當前的 URL.
const currentURL = () => window.location.href; // currentUrl() -> "https://google.com"getURLParameters
返回一個包含當前頁面 URL 的參數的對象.
用 match() 和一個合適的正則來獲得所有的鍵值對, 用Array.reduce() 去映射它們到一個對象內。
用 location.search 獲得當前 url 的參數.
const getURLParameters = url => url.match(/([^?=&]+)(=([^&]*))/g).reduce( (a, v) => (a[v.slice(0, v.indexOf("="))] = v.slice(v.indexOf("=") + 1), a), {} ); // getURLParameters("http://url.com/page?name=Adam&surname=Smith") -> {name: "Adam", surname: "Smith"}redirect
重定向到一個指定的 URL.
用 window.location.href 或 window.location.replace() 重定向 url 。
如果asLink 為 true,則模擬一個 鏈接單擊,否則為重定向。
const redirect = (url, asLink = true) => asLink ? window.location.href = url : window.location.replace(url); // redirect("https://google.com")httpsRedirect
如果它當前在HTTP中,將頁面重定向到HTTPS。另外,按后退按鈕不會將其返回到HTTP頁面,因為它在歷史中被替換了。
用 location.protocol 去獲得當前所使用的協議。如果不是 HTTPS,用 location.replace() 將當前頁轉換為使用 HTTPS 協議。用 location.href 去獲得鏈接地址,用 String.split() 移除當前 URL的協議。
const httpsRedirect = () => { if(location.protocol !== "https:") location.replace("https://" + location.href.split("http://")[1]); }detectDeviceType
檢測網站是在移動設備,還是在桌面/筆記本上打開。
用一個正則表達式檢測 navigator.userAgent 屬性來判斷是移動設備還是桌面/筆記本。
const detectDeviceType = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ? "Mobile" : "Desktop"; detectDeviceType(); // "Mobile" or "Desktop"scrollToTop
平滑滾動到頁面頂部。
用 document.documentElement.scrollTop 或 document.body.scrollTop 得到頁面滾動后的top值。
用 window.requestAnimationFrame() 去實現平滑滾動.
const scrollToTop = () => { const c = document.documentElement.scrollTop || document.body.scrollTop; if (c > 0) { window.requestAnimationFrame(scrollToTop); window.scrollTo(0, c - c / 8); } }; // scrollToTop()elementIsVisibleInViewport
如果指定的元素出現在可視窗口內,返回 true;否則,返回 false .
用 Element.getBoundingClientRect() 和 window.inner(Width|Height) 的值來判斷給定元素是否在可視窗口內.
如果忽略第二個參數或者指定為 true 將判斷元素的部分出現在可是窗口內。
const elementIsVisibleInViewport = (el, partiallyVisible = false) => { const { top, left, bottom, right } = el.getBoundingClientRect(); const { innerHeight, innerWidth } = window; return partiallyVisible ? ((top > 0 && top < innerHeight) || (bottom > 0 && bottom < innerHeight)) && ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth)) : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth; }; // e.g. 100x100 viewport and a 10x10px element at position {top: -1, left: 0, bottom: 9, right: 10} // elementIsVisibleInViewport(el) -> false (not fully visible) // elementIsVisibleInViewport(el, true) -> true (partially visible)bottomVisible
如果到達頁面可顯示區域的底部,返回 true ,否則返回 false .
用 scrollY, scrollHeight 和 clientHeight 去判斷是否到達頁面可顯示區域底部.
const bottomVisible = () => document.documentElement.clientHeight + window.scrollY >= (document.documentElement.scrollHeight || document.documentElement.clientHeight); // bottomVisible() -> truegetScrollPosition
返回頁面滾動后的位置,也即是html文檔的卷起位置.
如果瀏覽器支持 pageXOffset 和 pageYOffset 就用它們;否則就用 scrollLeft 和 scrollTop.
參數 el 的默認值為 window.
const getScrollPosition = (el = window) => ({x: (el.pageXOffset !== undefined) ? el.pageXOffset : el.scrollLeft, y: (el.pageYOffset !== undefined) ? el.pageYOffset : el.scrollTop}); // getScrollPosition() -> {x: 0, y: 200}getStyle
返回指定元素屬性的css值。
用 Window.getComputedStyle() 去獲取指定元素的屬性值。
const getStyle = (el, ruleName) => getComputedStyle(el)[ruleName]; getStyle(document.querySelector("p"), "font-size"); // "16px"hasClass
如果一個元素有指定的 class,返回 true ;否則,返回 false.
用 element.classList.contains() 去判斷一個元素是否有一個指定的class.
const hasClass = (el, className) => el.classList.contains(className); hasClass(document.querySelector("p.special"), "special"); // truetoggleClass
切換一個元素的class。
用 element.classList.toggle() 去切換指定元素的class。
const toggleClass = (el, className) => el.classList.toggle(className); toggleClass(document.querySelector("p.special"), "special"); // 這個段落將不再有 "special" classsetStyle
設置指定元素css樣式屬性的值.
用 element.style 設置指定元素的樣式 value。
const setStyle = (el, ruleName, value) => (el.style[ruleName] = value); setStyle(document.querySelector("p"), "font-size", "20px"); // The firsthideelement on the page will have a font-size of 20px
隱藏所有指定的元素。
用 spread (...) 操作符和 Array.forEach() 去給所有的指定元素添加 display: none 樣式 。
const hide = (...el) => [...el].forEach(e => (e.style.display = "none")); hide(document.querySelectorAll("img")); // Hides all elements on the pageshow
顯示所有指定的元素
用spread (...) 操作符和 Array.forEach() 清除所有指定元素的 display 屬性。
const show = (...el) => [...el].forEach(e => (e.style.display = "")); show(document.querySelectorAll("img")); // Shows all elements on the pagespeechSynthesis
語音合成 (實驗特性)
用 SpeechSynthesisUtterance.voice 和 window.speechSynthesis.getVoices() 將一個消息轉換為語音.
用 window.speechSynthesis.speak() 播放消息.
更多詳情請參考 SpeechSynthesisUtterance interface of the Web Speech API.
const speechSynthesis = message => { const msg = new SpeechSynthesisUtterance(message); msg.voice = window.speechSynthesis.getVoices()[0]; window.speechSynthesis.speak(msg); }; speechSynthesis("Hello, World"); // // plays the messageonUserInputChange
不管什么時候用戶的input類型改變 (mouse or touch) 執行這個函數。用于啟用/禁用依賴于輸入設備的代碼。這個過程是動態的,并于混合設備(例如:觸摸屏,筆記本)一起工作。
使用了兩個事件監聽器。假如 mouse 輸入初始化,然后綁定一個 touchstart 時間將聽頁面。
依據 touchstart 添加一個 mousemove 事件監聽器,然后用 performance.now() 在20ms觸發兩次 mousemove 事件。
在這兩種情況下,執行回調函數以input類型作為參數。
const onUserInputChange = callback => { let type = "mouse", lastTime = 0; const mousemoveHandler = () => { const now = performance.now(); if (now - lastTime < 20) (type = "mouse"), callback(type), document.removeEventListener("mousemove", mousemoveHandler); lastTime = now; }; document.addEventListener("touchstart", () => { if (type === "touch") return; (type = "touch"), callback(type), document.addEventListener("mousemove", mousemoveHandler); }); }; onUserInputChange(type => { console.log("The user is now using", type, "as an input method."); });UUIDGeneratorBrowser
在瀏覽器中生成UUID。
用 crypto API 生成一個 UUID, 可參考 RFC4122 v.4 。
const UUIDGeneratorBrowser = () => ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16) ); UUIDGeneratorBrowser(); // "7982fcfe-5721-4632-bede-6000885be57d"arrayToHtmlList
將指定的數組元素轉換成 元素標簽,然后將它們插入指定的id選擇器元素內.
用 Array.map() 和 document.querySelector() 去生成一個html元素標簽列表.
const arrayToHtmlList = (arr, listID) => arr.map(item => document.querySelector("#"+listID).innerHTML+=`
復制一個字符串到剪切板。只用在用戶觸發事件時才會執行 (i.e. 內部用 click 事件監聽)。
創建一個 元素,然后給它填充指定的字符串作為文本,最后將這個元素添加到html文檔中。
用 Selection.getRangeAt() 存儲選中的范圍 (如果有的情況下)。
用 document.execCommand("copy") 去執行復制到剪切板。
從HTML文檔中移除 元素.
最后,用 Selection().addRange() 去恢復原來的選中范圍 (如果有的情況下).
const copyToClipboard = str => { const el = document.createElement("textarea"); el.value = str; el.setAttribute("readonly", ""); el.style.position = "absolute"; el.style.left = "-9999px"; document.body.appendChild(el); const selected = document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false; el.select(); document.execCommand("copy"); document.body.removeChild(el); if (selected) { document.getSelection().removeAllRanges(); document.getSelection().addRange(selected); } };
copyToClipboard("Lorem ipsum"); // "Lorem ipsum" copied to clipboard.
更多關于30-seconds-code中文翻譯
https://github.com/lvzhenbang/article/blob/master/js/30-seconds-code/index.md
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90682.html
摘要:英文文章來源于給定一個鍵值和一組參數,但給定一個上下文時調用它們。 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Adapter call 給定一個鍵值和一組參數,但給定一個上下文時調用它們。 使用閉包調用存儲的鍵值與存儲的參數 const call = ( key, ....
摘要:英文文章來源于刪除對象中除指定鍵值的屬性用遞歸的方法用方法遍歷對象然后刪除不是在給定數組中的屬性如果你傳入,它將對該鍵所對應的對象進行深度遍歷的變形非原著作對所有的鍵對應的對象進行深度遍歷用方法遍歷對象然后刪除不是在給定數組中的屬性如 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/READM...
摘要:英文文章來源于計算一個字符串中字符的所有排序情況使用遞歸遍歷字符串中的每個字符計算剩余字符串的所有順序用區合并該字符和剩余字符串的每種順序然后用將該字符串的所有順序合并到一個數組中當字符串的等于或者時,是兩個基例字符串的首字母大寫用 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README...
摘要:英文文章來源于返回參數列表中第一個非和的參數用實現返回第一個非參數返回一個用自定義函數中的函數是否返回來對中傳入的參數列表盡心過濾用去遍歷參數列表,用給定的函數的返回值來過濾參數列表返回給定值的基本類型返回給定值的構造函數名字的小 Utility 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master...
摘要:英文文章來源于數組最大公約數計算數字數組最大公約數用和運算式使用遞歸計算一個數字數組的最大公約數數組最小公倍數求數字數組的最小公倍數用和運算式使用遞歸計算一個數字數組的最小公倍數返回一個數組中的最大值。 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Array 數組最大公...
閱讀 3346·2021-11-25 09:43
閱讀 3134·2021-10-11 10:58
閱讀 2735·2021-09-27 13:59
閱讀 3074·2021-09-24 09:55
閱讀 2166·2019-08-30 15:52
閱讀 1826·2019-08-30 14:03
閱讀 2256·2019-08-30 11:11
閱讀 2020·2019-08-28 18:12