使用按钮的5个理由
时间:2023-04-05 23:48:55
HTML5
按钮是使用最广泛的HTML元素,推荐在有点击交互的地方使用它。但是,仍然有大多数网站使用div,例如博客,几乎无处不在。既然div是按钮,为什么不直接用按钮呢?以下是使用按钮的5个理由1.禁用功能Button支持禁用。这也是表单元素的共性。直接设置disabled属性就可以实现禁用的效果button而且这种禁用不仅可以禁用鼠标点击,还可以禁用键盘访问,是真正的禁用。如果要改变disabled样式,需要使用:disabled伪类而不是disabled属性button:disabled{}/*不推荐*/button[disabled]{}因为有时候按钮被disabled了,不一定来自于本身,有可能因为父元素,比如fieldset,可以看到当fieldset被disabled时,所有包含的form元素是Disabled的,这些表单元素本身是没有disabled属性的,所以要禁用一个按钮,必须通过:disabled伪类另外,在div中,一般是通过pointer-events:none;来实现的,但是this只能禁用鼠标行为div.disabled{pointer-events:none;}当然对于div来说,这个方法已经足够了,因为div本身不会聚焦到2.盒模型的默认盒属性和居中特性是border-box,可以进一步扩展实际上,几乎所有的表单元素的box属性都是border-box。所以在给按钮设置具体尺寸的时候,不需要设置这个按钮{padding:5px10px;宽度:100%;框大小:边框框;/*不需要*/}然后,按钮中的默认值是垂直居中和水平居中。几乎所有的按钮都是居中的,所以不需要设置任何居中属性就可以实现水平和垂直居中按钮{width:100px;高度:100px;文本对齐:居中;/*不需要*/line-height:50px;/*不需要*/}第三,键盘访问按钮支持键盘访问。使用tab键切换焦点时,会有明显的焦点提示(轮廓)。并且在focused状态下,按钮的click事件可以通过键盘enter或者space键触发(以下是键盘操作,使用tab进行focus,然后通过enter或者space键触发click)。所以,为了保持键盘访问的可见性,最好不要做这个Do按钮{outline:0;/*最好不要这样做*/}默认情况下,这个轮廓只有在键盘获得焦点时才会出现,而鼠标在单击焦点时不会出现。如果需要改变焦点的颜色,改变outline-color即可,这个不会影响浏览器按钮的默认时序{outline-color:salmon;}最好不要改变整个outline,这样不管是键盘焦点还是鼠标点击焦点都会导致轮廓出现(一般设计不喜欢鼠标点击有轮廓)/*最好不要这样*/button:focus{outline:1pxsolidsalmon;}如果想完全控制键盘焦点的样式,可以使用这个伪类:focus-visible,兼容性稍差button:focus-visible{outline:5pxsolidsalmon;}四、表单特征按钮有一些形式特征。合理利用这些特性,可以实现很多不需要js的交互,比如这样的表单其中,type="submit"自然支持表单提交,即触发表单的提交事件,也支持回车登录,所以体验非常好。输入用户名和密码后,可以直接回车登录,type="reset"可以执行表单的重置。请注意,这是重置,而不是清理。理解为修复可能更好。那么这个特性在之前的这篇文章中已经应用过了:CSS实现了搜索相关的交互。如果不使用按钮,可能需要更多的javascript来实现类似的功能,可能会出现未知的bug。5.读屏按钮默认支持读屏访问。比如使用macOS自带的旁白,当你读一个按钮的时候,你可以清楚的明白这是一个按钮,里面的文字。如果是div,想要实现这种效果,可能需要加上tabindex来聚焦div。=0属性为了使div被识别为按钮,需要添加role="button"属性。有时候还有比较极端的情况,直接把背景图当成没有文字的按钮,需要进行如下操作才能让div被识别。需要添加aria-label属性login
这样屏幕阅读器基本可以正常访问。没错,文章开头就是这么搞的,再回顾一下这些浩如烟海的属性。既然这么麻烦,为什么不直接用button呢?6.为什么不用按钮?以下是我个人的推测。各个浏览器中按钮的样式不一致。该按钮不能包含某些标签或导致无效。比如a标签的历史原因,之前是用div实现的。知道button有那么多好用的功能,先不管这些,只要能实现,我的js就很强了。在实际项目中,不需要键盘访问或屏幕阅读。一些第三方组件库的封装。七。总结与说明以上是从样式和功能上介绍了原生按钮元素的几个特点,同时也猜测了一些按钮没有被使用的原因。下面总结一下:按钮支持disabled特性,disabled样式是通过:disabled伪类自定义的。按钮的默认框模型是border-boxbutton中默认水平居中的按钮,支持键盘访问。在focused状态下,可以通过enter或者space触发click事件。按钮键盘焦点的轮廓可以通过outline-color修改,也可以通过:focus-visible自定义键盘焦点样式。按钮支持在表单中输入提交表单按钮在表单中具有重置功能。该按钮默认支持屏幕阅读。虽然有这么多有用的特性,但是在实际开发中还是有很多原因没有用到。但不管过去发生了什么,从现在开始,只要遇到“按钮”,就可以先选择按钮。不需要做太多的修改,就可以在不知不觉中提升用户体验。最后,如果觉得对你有帮助,请点赞、收藏、转发???