在日常前端开发中,一个友好的用户体验设计往往离不开细节的打磨。今天在做一个 复制按钮功能 时,我为它加上了一个 视觉上更温和的弹窗通知。它不仅能提示用户“复制成功”或“复制失败”,还能居中显示、跟随页面滚动保持位置不变,让整个交互过程显得更加自然顺滑。
这段功能完全由我手动编写,未引入第三方框架,兼容性良好,适合嵌入在各类项目中。也欢迎各位开发者交流探讨。
📸 效果展示图

复制按钮弹窗通知样式设计与实现:手撸 CSS + JS 示例代码分享
💡 核心功能说明
复制按钮点击后会自动将内容复制到剪贴板,并弹出一个居中显示的通知层,显示“复制成功”或“复制失败”。弹窗在1秒后自动消失,确保页面整洁。
🎨 CSS 样式代码(支持弹窗居中显示):
.tubiaotanchuang {
display: flex;
justify-content: center;
align-items: center;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 9999;
}
.tubiaotanchuang-content {
min-width: 100px;
background-color: rgba(0, 0, 0, 0.6);
color: #fff;
border: none;
padding: 12px 25px;
font-size: .875rem;
text-align: center;
}
🧠 JavaScript 实现逻辑:
document.getElementById('copyViewer').addEventListener('click', function() {
const outputText = viewer.getValue().trim(); // 获取第二个输入框的内容并去除首尾空白
// 创建一个临时的textarea元素,用于复制操作
const tempTextarea = document.createElement('textarea');
tempTextarea.value = outputText;
document.body.appendChild(tempTextarea);
tempTextarea.select();
try {
let message;
if (outputText !== '') {
// 尝试执行复制操作
const successful = document.execCommand('copy');
message = successful ? '复制成功' : '复制失败';
} else {
message = '复制失败';
}
// 修改页面的<div id="tanchutongzhi"></div>为相应的消息
const tanchutongzhiDiv = document.getElementById('tanchutongzhi');
tanchutongzhiDiv.innerHTML = `
<div class="tubiaotanchuang">
<div class="tubiaotanchuang-content">${message}</div>
</div>
`;
} catch (err) {
console.error('复制操作失败:', err);
} finally {
// 移除临时的textarea元素
document.body.removeChild(tempTextarea);
}
setTimeout(function() {
// 3秒后恢复页面的<div id="tanchutongzhi"></div>为初始状态
const tanchutongzhiDiv = document.getElementById('tanchutongzhi');
tanchutongzhiDiv.innerHTML = '';
}, 1000);
});
✅ 使用说明
-
页面中需包含
<div id="tanchutongzhi"></div>
,用于承载弹窗。 -
viewer.getValue()
是从编辑器获取内容,你可替换成任意 DOM 元素的innerText
或value
。 -
可根据需求调整弹窗颜色、字体大小、显示时长等参数。
这个小功能虽然简单,但细节之处不容忽视。如果你也在为页面交互优化做努力,不妨试试这样的提示弹窗样式。轻巧、直观、不打扰用户,又能提升操作反馈的清晰度。
欢迎点赞、评论或留言交流你的实现方式😉
© 版权声明
文章版权归作者所有,未经允许请勿转载。
本文暂时没有评论,来添加一个吧(●'◡'●)