-
🔍 这段代码几乎出现在每个前端初学者的搜索框第一个项目里。但真正把它做出质感的样式,没几个。搜索框 搜索框的样式样式,核心就三件事:**边框、搜索框背景、样式交互反馈**。搜索框别小看这三样,样式淘宝和谷歌的搜索框搜索框摆在一起,你一眼就能分辨谁是样式谁——差距全在细节里。 先解决边框。搜索框默认的样式`border: 1px solid #ccc`是原罪,灰扑扑的搜索框,像没睡醒的样式脸。试试`border: 2px solid transparent`加`background-clip: padding-box`,搜索框这样能让聚焦时的边框变化不产生布局抖动。或者更干脆,用`box-shadow: 0 0 0 1px #ddd inset`模拟边框,聚焦时改成`0 0 0 2px #4a90d9 inset`——这种内阴影方案在圆角较大时特别好看,因为`border-radius`不会把阴影切出毛边。 背景色也别用纯白。`#f5f5f5`这种浅灰在白色页面上更柔和,聚焦时再切回白色,视觉上会有种“页面被点亮”的感觉。这个技巧在暗色模式下尤其重要,纯白输入框在深色背景上像贴了块膏药,但`rgba(255,255,255,0.08)`的背景就能自然融入。 圆角是个性格分明的参数。`border-radius: 4px`是工整的商务脸,`20px`是圆润的可爱风,`999px`直接做成胶囊形状——适合那种极简的图标搜索。但别全用圆角,右侧按钮和输入框的衔接处应该直角对接,否则中间会漏出背景色,像门牙缝。 交互反馈才是区分业余和专业的分水岭。`:focus`状态必须有,但别只改个边框颜色。加上`transition: box-shadow 0.2s ease, background 0.2s ease`,让变化有延迟感——人眼喜欢这种“被回应”的过程。悬停时轻微放大?不建议,那会让布局抖动。但可以改背景色深浅,或者加个`transform: translateY(-1px)`,配合`will-change: transform`防掉帧。 还有那些没人提的细节。输入框内的文字要调`font-size: 16px`以上,否则iOS会自动放大页面。占位符`::placeholder`的颜色别用默认的`#999`,试试`#aaa`加`opacity: 0.7`,太深的占位符会让人误以为已经输入了内容。清空按钮`::-webkit-search-cancel-button`,要么彻底隐藏,要么自定义成小叉号,默认的灰色圆圈实在太丑。 按钮和输入框的比例也讲究。按钮宽度别超过输入框的1/3,高度保持一致,用`display: flex`让它们天然贴合。图标用SVG而不是emoji,因为emoji在不同系统下长得不一样——你在Windows上看到的🔍和Mac用户看到的根本不是同一个东西。 我见过一个很妙的做法:整个搜索框做成一个`






评论专区