带自定义动画背景的HTML textarea无法选中或输入的问题
解决背景动画覆盖textarea导致无法输入的问题
问题原因
你的.circles元素采用绝对定位,宽高设置为100%,完全覆盖了整个页面区域,包括.context里的textarea。这些动画元素会拦截所有鼠标交互事件,导致下方的textarea无法被选中和输入。
解决方案
有两种简单的修复方式:
方案1:提升表单区域的层级
给包含textarea的.context容器添加z-index属性,让它处于动画元素的上方:
.context { width: 100%; position: absolute; top:100px; z-index: 10; /* 新增:提升层级 */ }
方案2:让动画元素不拦截鼠标事件
给.circles容器添加pointer-events: none,使鼠标事件直接穿透到下方元素:
.circles{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; pointer-events: none; /* 新增:禁止拦截鼠标事件 */ }
完整代码示例
修改后的CSS
@import url('https://fonts.googleapis.com/css?family=Exo:400,700'); *{ margin: 0px; padding: 0px; } body{ font-family: 'Exo', sans-serif; } .context { width: 100%; position: absolute; top:100px; z-index: 10; /* 新增 */ } .context h1{ text-align: center; color: #fff; font-size: 50px; } .area{ background: #4e54c8; background: -webkit-linear-gradient(to left, #8f94fb, #4e54c8); width: 100%; height:100vh; } .circles{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; pointer-events: none; /* 新增(二选一即可) */ } .circles li{ position: absolute; display: block; list-style: none; width: 20px; height: 20px; background: rgba(255, 255, 255, 0.2); animation: animate 25s linear infinite; bottom: -150px; } .circles li:nth-child(1){ left: 25%; width: 80px; height: 80px; animation-delay: 0s; } .circles li:nth-child(2){ left: 10%; width: 20px; height: 20px; animation-delay: 2s; animation-duration: 12s; } .circles li:nth-child(3){ left: 70%; width: 20px; height: 20px; animation-delay: 4s; } .circles li:nth-child(4){ left: 40%; width: 60px; height: 60px; animation-delay: 0s; animation-duration: 18s; } .circles li:nth-child(5){ left: 65%; width: 20px; height: 20px; animation-delay: 0s; } .circles li:nth-child(6){ left: 75%; width: 110px; height: 110px; animation-delay: 3s; } .circles li:nth-child(7){ left: 35%; width: 150px; height: 150px; animation-delay: 7s; } .circles li:nth-child(8){ left: 50%; width: 25px; height: 25px; animation-delay: 15s; animation-duration: 45s; } .circles li:nth-child(9){ left: 20%; width: 15px; height: 15px; animation-delay: 2s; animation-duration: 35s; } .circles li:nth-child(10){ left: 85%; width: 150px; height: 150px; animation-delay: 0s; animation-duration: 11s; } @keyframes animate { 0%{ transform: translateY(0) rotate(0deg); opacity: 1; border-radius: 0; } 100%{ transform: translateY(-1000px) rotate(720deg); opacity: 0; border-radius: 50%; } }
HTML(无需修改)
<div class="area" > <div class="context"> <h1>Title</h1> <textarea id="userName"> Enter user name</textarea><br> <textarea id="password"> Enter password</textarea> </div> <ul class="circles"> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div>
内容的提问来源于stack exchange,提问作者Signor
相关产品推荐
相关产品推荐

