是CSS还是JavaScript?
来源:互联网 发布:mac地址修改失败 编辑:程序博客网 时间:2024/04/29 00:08
在现在的前端开发中,一直在倡导着这样三个分离:表现和结构分离;行为和结构分离;行为和表现分离。
前两个分离,都很好理解,就是通俗的div和css的分离,以及html和js程序的分离,而且这种分离很容易做到。
但对于第三个分离:行为和表现分离,比前两个要复杂得多。基本的问题是:哪些效果用CSS定义,哪些应该用JavaScript实现?尽管答案看似很明显:表现用CSS,行为用JS。但事实上存在很多CSS和JavaScript的灰色地带,不能清楚地把某个效果归为表现还是行为。
下面,我们通过两个常用的效果实现对比来分析下。
1.下拉菜单:hover或mouseover/mouseout
下拉菜单的用途是:当用户的鼠标移上某个主菜单上时,显示相应的子菜单;而当用户移出时,再将它隐藏。
下面是某个主菜单的下拉菜单的html程序;
<li><a href="#">News</a> <ul> <li><a href="#">Home</a></li> <li><a href="#">Abroad</a></li> </ul> </li>
通过css,我们可以这样来实现:
li ul{display:none;} li:hover ul {display:block;}
如上,我们可以通过简短的两行CSS代码来实现目的,从代码量和维护量来看,CSS的:hover方案明显比JavaScript的mouseover/mouseout方案好得多,但从另一方面,IE6和更早的浏览器并不支持li:hover.而且有些人喜欢用键盘来代替鼠标,通过tab键和enter键来获取焦点,这些键盘用户将无法使用CSS下拉菜单,因为li:hover是一个纯鼠标选择器,它不会对键盘焦点作出响应。另外,焦点也不可能被放在<li>上,因为键盘焦点只能选择链接、按钮和表单域。相反,JavaScript可以适应键盘用户,具有更好的可访问性。
因此,两种方法都有其自身独特的优缺点,没有哪一种能完全胜出。
从更高层的理论视觉看,下拉菜单是表现还是行为?它只有在用户做出触发动作之后才会产生效果,似乎是行为;但是,这种效果是子菜单的呈现,它又像是表现。
总之,到底是用CSS还是JavaScript,最终还是归结为个人的选择。
- 是CSS还是JavaScript?
- 【JavaScript】JavaScript是多线程还是单线程?
- CSS文件是链接 还是应该嵌入?
- Javascript匹配字符是中文还是英文
- js、javascript判断是汉字还是字母
- javascript判断是电脑还是手机,android手机还是ios
- Javascript中判断变量是 array还是object(是数组还是对象)
- 用javascript判断网站是静态还是伪静态
- javascript 确认按钮 判断点击的是确定还是取消
- JavaScript 传递参数是值传递?还是值传递啊?
- Javascript : 变量存放的是引用还是值
- 用javascript判断字符是全角还是半角
- javascript判断当前浏览器是iphone、android还是desktop版本
- JavaScript判断是手机登陆还是pc登陆
- PHP和JAVASCRIPT判断访客终端是电脑还是手机
- PHP和JAVASCRIPT判断访客终端是电脑还是手机
- javascript 判断是PC设备还是移动设备
- PHP和JAVASCRIPT判断访客终端是电脑还是手机
- Java synchronized是如何工作的
- 策略模式DEMO
- java区分中英文
- 文件不以%PDF-开始 解决方案
- Javascript 复制内容到剪贴板
- 是CSS还是JavaScript?
- linux下java调用matlab方案
- C#调用Windows API
- poj 1459(dinic 非递归的一个程序。。。。)
- jni javah找不到类文件的问题
- extern “C”使用说明
- FirstClass
- 导出DSN文档中的全部的独立元件库
- 深入理解Java多态性(转)