输入框边框渐变实现及自动补全禁用问题求助
解决To Do List输入框的两个问题
1. 实现完整边框渐变效果
你当前的边框渐变仅显示边角,原因是border-image属性缺少border-image-slice配置。修改#input:focus的CSS规则,添加border-image-slice: 1即可让渐变铺满整个边框:
#input:focus { outline: none; border: solid 2px; border-image: linear-gradient(90deg, #0cebeb, #20e3b2, #29ffc6) 1; border-radius: 0px; }
border-image-slice: 1会将渐变图像的边缘切割为1像素单位,拉伸后覆盖整个边框区域,解决边角显示的问题。
2. 禁用输入框自动补全
给input标签添加autocomplete="new-password"属性(该属性对现代浏览器兼容性更强,部分浏览器会忽略autocomplete="off"):
<input type="text" id="input" autocomplete="new-password" oninput="this.style.width = 0; this.style.width = this.scrollWidth + 'px'" placeholder="Enter an activity...">
修改后的完整代码
HTML
<p id="title" title="To do list">To Do List</p> <div class="container"> <form action="javascript:toElement()"> <input type="text" id="input" autocomplete="new-password" oninput="this.style.width = 0; this.style.width = this.scrollWidth + 'px'" placeholder="Enter an activity..."> <button id="submit" type="submit">Add</button> </form> </div> <ul id="list"> <li id="obj_1">Test 1</li> <li id="obj_2">Test 2</li> <li id="obj_3">Test 3</li> <li id="obj_4">Test 4</li> <li id="obj_5">Test 5</li> </ul>
CSS
@import url('https://fonts.googleapis.com/css2?family=Raleway:wght@300&display=swap'); body { background: rgb(255, 255, 255); background: -moz-linear-gradient(90deg, rgba(255, 255, 255, 1) 0%, rgba(174, 174, 174, 1) 100%); background: -webkit-linear-gradient(90deg, rgba(255, 255, 255, 1) 0%, rgba(174, 174, 174, 1) 100%); background: linear-gradient(90deg, rgba(255, 255, 255, 1) 0%, rgba(174, 174, 174, 1) 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#aeaeae", GradientType=1); user-select: none; } #title { font-family: 'Raleway', sans-serif; font-size: 50px; margin-top: 5%; font-weight: bold; text-align: center; } #input { min-width: 270px; height: 40px; border: none; font-family: 'Raleway', sans-serif; font-weight: bold; font-size: 25px; padding-left: 25px; padding-right: 25px; text-align: center; outline: none; } #input:focus { outline: none; border: solid 2px; border-image: linear-gradient(90deg, #0cebeb, #20e3b2, #29ffc6) 1; border-radius: 0px; } .container { display: flex; align-items: center; justify-content: center; }
JavaScript
function toElement() { var z = document.getElementById("input").value; if (z == "") { return } var x = document.createTextNode(z) var y = document.createElement("li"); y.appendChild(x); document.getElementById("list").appendChild(y); document.getElementById("input").value = ''; var a = document.getElementById("input") a.style.width = 270 + 'px'; }
内容的提问来源于stack exchange,提问作者Fieryfeng
相关产品推荐
相关产品推荐

