页面禁止选中需求

本文详细介绍了如何在HTML中使用JavaScript通过各种事件如oncopy,ondragstart,onselectstart等来防止用户选中文本并复制,包括body标签内的代码示例。

禁止整个body中的内容被选中复制:

<body onselectstart="return false">
    <p>禁止整个body中的内容被选中复制</p>
</body>


禁止页面中某一块或某一篇文章被选中复制:

<body>
    <div onselectstart="return false">
        这段内容不可选,禁止文字被选中
        <p>禁止页面中某一块或某一篇文章被选中复制</p>
    </div>
</body>



再狠点,直接在body标签中写入如下代码,实现HTML中禁止文字的复制和选中.

<body oncontextmenu='return false' ondragstart='return false' onselectstart='return false'
    onselect='document.selection.empty()' oncopy='document.selection.empty()' onbeforecopy='return false'
    onmouseup='document.selection.empty()'>
    <div>
        HTML中禁止文字的复制和选中
        <p>HTML中禁止文字的复制和选中</p>
    </div>
</body>


<body>中的各个事件
οncοntextmenu='return false'取消鼠标右键
οndragstart='return false'禁止鼠标在网页上拖动
onselectstart='return false' 禁止选中网页上的内容
οnselect='document.selection.empty()'
onselect事件会在文本框中的文本被选中时发生
οnselect=“SomeJavaScriptCode”必需规定该事件发生时执行的 JavaScript
document.selection.empty()表示文本框被选中时为空
οncοpy='return false'防复制用户在网页上选中的内容
onbeforecopy='return false'onbeforecopy():默认动作的事件源对象上被取消
οnmοuseup='document.selection.empty()'
onmouseup事件会在鼠标按键被松开时发生
οnmοuseup=“SomeJavaScriptCode”同onselect一样,必需规定该事件发生时执行的 JavaScript
document.selection.empty()表示文本框被选中时为空

<think>我们只需在CSS中添加禁止用户选择文本的样式,通常使用`user-select: none;`属性。 需要将此样式添加到包含文字的元素上,例如添加到`.text`类中。 同时,为了兼容不同的浏览器,可以加上浏览器前缀。 注意:禁止选中可能会影响用户体验,但根据需求我们可以添加。 另外,我们还需要确保动画和布局不受影响。 修改后的代码将在.text类中添加: -webkit-user-select: none; /* Safari */ -ms-user-select: none; /* IE 10 and IE 11 */ user-select: none; /* Standard syntax */ 由于问题只要求添加禁止选中,其他保持不变,所以主要修改这一部分。 下面是完整代码: </think>以下是为字符添加禁止选中功能的优化代码,通过CSS的`user-select`属性实现: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Optibox 加载页面</title> <style> /* 全局禁止选中 */ body { margin: 0; padding: 0; height: 100vh; display: flex; justify-content: center; align-items: center; background-color: white; overflow: hidden; font-family: 'Arial Black', sans-serif; -webkit-user-select: none; /* Safari/Chrome */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* IE/Edge */ user-select: none; /* 标准语法 */ } .text { font-size: clamp(48px, 8vw, 80px); font-weight: 900; color: #222; letter-spacing: 1px; } /* 防止动画元素被选中 */ .text span { opacity: 0; display: inline-block; min-width: 0.5em; animation: char-fade 2.5s infinite forwards; position: relative; -webkit-user-select: none; /* 双重防护 */ user-select: none; } @keyframes char-fade { 0% { opacity: 0; transform: translateY(20px); } 40% { opacity: 1; transform: translateY(0); } 100% { opacity: 1; transform: translateY(0); } } /* 字母动画延迟设置 */ .text span:nth-child(1) { animation-delay: 0.1s; } .text span:nth-child(2) { animation-delay: 0.2s; } .text span:nth-child(3) { animation-delay: 0.3s; } .text span:nth-child(4) { animation-delay: 0.4s; } .text span:nth-child(5) { animation-delay: 0.5s; } .text span:nth-child(6) { animation-delay: 0.6s; } .text span:nth-child(7) { animation-delay: 0.7s; } /* 桌面端优化 */ @media (min-width: 992px) { .text { font-size: clamp(52px, 5vw, 90px); letter-spacing: 1.5px; } @keyframes char-fade { 0% { transform: translateY(25px); } } } /* 移动端优化 */ @media (max-width: 768px) { .text { font-size: clamp(24px, 10vw, 48px); } @keyframes char-fade { 0% { transform: translateY(10px); } } } /* 特殊尺寸优化 */ @media (max-width: 480px) { .text { font-size: clamp(20px, 12vw, 36px); } .text span { animation-duration: 2s; } } @media (orientation: landscape) and (max-height: 500px) { .text { font-size: clamp(24px, 6vw, 40px); } } </style> </head> <body> <div class="text"> <span>O</span> <span>p</span> <span>t</span> <span>i</span> <span>b</span> <span>o</span> <span>x</span> </div> </body> </html> ``` ### 禁止选中功能实现说明: **1. 全局禁止文本选择:** ```css body { -webkit-user-select: none; /* Safari/Chrome */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* IE/Edge */ user-select: none; /* 标准语法 */ } ``` - 在`<body>`层级设置禁止选中,覆盖所有子元素 - 使用多浏览器前缀确保兼容性 - 防止用户拖动时意外选中文字 **2. 动画元素的额外防护:** ```css .text span { -webkit-user-select: none; user-select: none; } ``` - 对每个动画字符单独设置禁止选中 - 防止移动端长按弹出选择菜单 - 双重保障确保任何操作都无法选中文字 **3. 保留交互元素例外处理:** - 当前实现专门针对动画文本 - 如需添加交互元素(如按钮),可单独设置: ```css .interactive-element { user-select: auto; /* 恢复可选 */ } ``` **4. 移动端特殊注意事项:** - 防止iOS/Android长按触发文本选择 - 避免触摸操作时出现文本选择光标 - 保持动画流畅性不受选择操作干扰 **5. 浏览器兼容性解决方案:** | 浏览器 | 支持方案 | 生效版本 | |-------------|----------------------------|---------| | Chrome | `-webkit-user-select` | 所有版本 | | Firefox | `-moz-user-select` | 所有版本 | | Safari | `-webkit-user-select` | 所有版本 | | Edge | `-ms-user-select` | 12+ | | 现代浏览器 | `user-select` | 大部分 |
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值