常用组件系列(3),复制优惠卷

156 阅读1分钟

直接上效果

QQ202472-152423.gif

逻辑

html部分

input用于储存复制的文本,然后让其在页面上不显示。

/* 复制内容存放框 */
.content-paste-input {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 0;
    z-index: -10;
}

复制按钮,定义一个点击事件,传入要复制的值。

<input id="content-paste-input" type="text" value="" class="content-paste-input" readonly />
<button class="ms_ban-btn" onclick="winCopy('SShape8')">
    <span class="ms_span1">Use code:</span>
    <span class="ms_span2">SShape8</span>
    <img src="https://www.mychway.com/image/catalog/2024/activity/machinesale/yellow_copy.webp" width="28"
        height="30">
</button>

js部分

定义一个变量,用于储存待复制的文本。

var COPY=name;

将input的vlaue值设置为 COPY的值,然后调用select()方法选中输入框的所有文本。

var input = document.getElementById("content-paste-input");
input.value = COPY;
input.select();

使用 document.execCommand("copy");执行复制命令,将选中的文本复制到剪切板。

完整代码

css
/* 复制内容存放框 */
.content-paste-input {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 0;
    z-index: -10;
}
/* 复制按钮样式 */
.ms_ban-btn {
    background-color: #660099;
    border-radius: 8px;
    padding: 10px 30px;
    display: flex;
    align-items: center;
    margin: -10px auto 0 auto;
}

.ms_ban-btn:hover {
    cursor: pointer;
}

.ms_ban-btn .ms_span1 {
    color: #ffffff;
    font-size: 24px;
}

.ms_ban-btn .ms_span2 {
    color: #FFCC00;
    font-size: 38px;
    font-weight: bold;
    display: block;
    margin: 0px 10px;
}
/* 复制成功提示 */
.message_add {
    position: fixed;
    left: 50%;
    width: 200px;
    top: 55px;
    right: 0px;
    transform: translateX(-50%);
    border-radius: 4px;
    padding: 15px 15px 15px 20px;
    display: flex;
    z-index: 9999999;
    background-color: #f0f9eb;
    border-color: #e1f3d8;
    font-size: 16px;
    line-height: 16px;
}
html
<input id="content-paste-input" type="text" value="" class="content-paste-input" readonly />
<button class="ms_ban-btn" onclick="winCopy('SShape8')">
    <span class="ms_span1">Use code:</span>
    <span class="ms_span2">SShape8</span>
    <img src="https://www.mychway.com/image/catalog/2024/activity/machinesale/yellow_copy.webp" width="28"
        height="30">
</button>

js
// 复制优惠劵
function winCopy(name) {
    var COPY=name;
    var input = document.getElementById("content-paste-input");
    input.value = COPY;
    input.select();
    document.execCommand("copy");
    $("body").append("<p class='message_add' style='width: fit-content;background-color: #609;color:#fff;'>Copy success</p>")
    setTimeout(() => {
        $(".message_add").remove()
    }, 1500)
}