您好,登錄后才能下訂單哦!
怎么為網站代碼塊pre標簽增加一個復制代碼按鈕代碼,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
參考其他比較專業的博客系統,都在代碼塊上有一個的按鈕。用來快速復制整個代碼塊的代碼。于是我也想給我的博客增加一個這個功能。
注:chrome測試通過。其他瀏覽器未進行測試。
實現思路:
1、在頁面加載完成之后,使用js給每個pre標簽增加一個按鈕“”
2、給按鈕增加點擊事件,點擊事件的功能就是塊的內容
實現代碼:
css部分,btn-pre-copy是pre標簽中使用js增加的“”按鈕。css的作用是讓他顯示在pre標簽的右上角。這里要注意pre標簽和按鈕中position屬性
.content pre{ position: relative; background-color: #f5f5f5; border: 1px solid #ccc; border-radius: 4px; padding: 10px; } pre .btn-pre-copy{ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -khtml-user-select: none; user-select: none; position: absolute; top: 10px; right: 12px; font-size: 12px; line-height: 1; cursor: pointer; color: hsla(0,0%,54.9%,.8); transition: color .1s; }
js部分,js部分主要是給pre標簽增加按鈕和實現拷貝部分,我這里拷貝部分的實現是先實例化一個臨時的節點textarea,然后吧pre的內容設置進這個臨時節點,然后選中內容進行復制,最后銷毀這個節點。具體參考代碼。js部分有依賴于jquery
$(function(){ //給每一串代碼元素增加節點 let preList = $(".content pre"); for (let pre of preList) { //給每個代碼塊增加上“”按鈕 let btn = $("<span class=\"btn-pre-copy\" onclick='preCopy(this)'></span>"); btn.prependTo(pre); } }); /** * 執行操作 * @param obj */ function preCopy(obj) { //執行復制 let btn = $(obj); let pre = btn.parent(); //為了實現復制功能。新增一個臨時的textarea節點。使用他來復制內容 let temp = $("<textarea></textarea>"); //避免復制內容時把按鈕文字也復制進去。先臨時置空 btn.text(""); temp.text(pre.text()); temp.appendTo(pre); temp.select(); document.execCommand("Copy"); temp.remove(); //修改按鈕名 btn.text("復制成功"); //一定時間后吧按鈕名改回來 setTimeout(()=> { btn.text(""); },1500); }
這里在gitee上做了一個簡單的demo。demo示例:
關于怎么為網站代碼塊pre標簽增加一個復制代碼按鈕代碼問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。