日期:2014-05-16  浏览次数:20414 次

采用 Javascript 编程,还需要 CSS 吗?
开发 Web 前端应用时,我们也曾遵循教科书的训导,从 HTML 到 CSS 再到 Javascript,老老实实做下去,但总感觉这套东西别别扭扭,为一点事码一大堆字符不说,那堆东西还特难读,缺少结构性,和原生应用相比,有点小儿科。

恰逢我们需要用 Javascript 开发一套应用框架,于是尝试模仿原生程序的模式来做,完全没用 CSS,所有 style 定义都用 JS 函数动态生成。HTML 代码也用得很少,差不多就是一个初始框架,然后就进入 script 状态,靠 JS 来完成。框架已基本搭好,功能也正常。这里自然就产生一个问题:CSS 还有用吗?

我们毕竟水平有限,不敢过早下结论。请问各路大侠:对此你们怎么看?

------解决方案--------------------
首先,据说css文件的执行速度要明显快于javascript,有些神人就只用css做些个动态玩艺.
其次,css和js文件分开有利与项目管理.
最后,也是最重要的,比如我们公司,大规模开发,美工和我们是分开的,让他们搞javascript太难了.
------解决方案--------------------
引用:
开发 Web 前端应用时,我们也曾遵循教科书的训导,从 HTML 到 CSS 再到 Javascript,老老实实做下去,但总感觉这套东西别别扭扭,为一点事码一大堆字符不说,那堆东西还特难读,缺少结构性,和原生应用相比,有点小儿科。

恰逢我们需要用 Javascript 开发一套应用框架,于是尝试模仿原生程序的模式来做,完全没用 CSS,所有 style 定义都用 ……

够用即可,如果js能完成全部需求,那么只用js即可。
如果js提供的功能与特性不能完全满足,再考虑css也可以。
相对于js,css控制dom的样式有一点点不同之处。
公共的css可以供多个页面访问,变更方便,而js需要测试的步骤要略多一步。
另外js操作效率要比浏览器解析速度要慢(也要分浏览器而论),如果加载的数据较多,性能可能有影响。
暂时就想到这些。
------解决方案--------------------
UI方面..css比js更好理解和维护,比如:

#demo p{color:red}


你用JS如何实现??你是动态创建 style 标签(这还是用到css了)? 还是便历所有 #demo 下的p标签然后修改每一个p标签的css属性??
------解决方案--------------------
举一个常见场景
有一个 div 在不同状态下有不同的表现

你是 每种状态给一个 样式
还是 每种状态 在代码中设置一堆 属性呢?

另外 编程 最终 就是 围绕配置 编程
大堆的 数据一般 都是写在配置文件中的 
样式表 你恰恰可以看成一个 配置文件

你说的 style 全是 动态生成  那么我觉得 要么你的代码的可配制性不够 要么你的代码 只涉及了很简单的css
------解决方案--------------------
目前来说,css还没有退位的迹象,

只能是css有其所不足,而js有其无所不能!

最近本人做的一个小站,就是因为css力不从心,最终还是借助js在几位大佬的帮助下,实现了最终的功能。
------解决方案--------------------
一般情况下,能用CSS就可以设置好的,就不要用js来做。主要原因就是效率问题。一般情况下,美工是专门做CSS,会js的话要求太高了。
------解决方案--------------------
我们的目的都是一样的,就是将页面完美的呈现出来,只是所用的方式不同。
像我这种对于JS不怎么熟练的开发人员来说,更偏向于用CSS来表现页面。毕竟先接触CSS,后接触JS。
而且现在的页面都是等到HTML加载完了,再去加载JS,这个过程就会让用户先看到很呆板的纯文字的页面,如果最后加载的JS有一点小错误的话,可能会导致JS写的那些CSS效果加载不出来,影响用户查看页面。
而CSS不同,CSS优先加载,而后在加载HTML结构,这样就不会影响用户查看页面。
另外,CSS相对于JS,修改起来也方便(个人觉得)。大小也要比JS小吧。
------解决方案--------------------
native vs web,
复杂运用 vs 简单页面
复杂类库+层层封装 vs 切面处理,html管内容,css管样式,js管特效

web向native学习,以AJAX为工具模仿运用,超大的类库还是个硬伤,10秒内看不到内容,手机用户下载xxxK的库都会严重影响用户体验。

所以看运用环境吧,某些特定环境下纯js是成立的,但大部分的轻量级运用,css文件还是比纯js来得简洁。
------解决方案--------------------
软件讲究的就是高内聚,低耦合,你把样式写在JS里面,看似没有问题,但是扩展性不知道怎么样,但是可维护性非常糟糕。

有些CSS是可以重用的,但是你没有独立出来,导致重用度降低,甚至没有重用。如果你要改一下字体大小或者颜色(整个页面改成统计的大小,颜色),这下你就开始找吧,改吧,改了后你就会知道,CSS要不要独立出来了。

假如你要做个换肤功能,这下你就蛋疼了,开始在JS里面写if else了。如果你把样式独立出来了,改起来相对比较简单的,不用去改动JS,只要写一份新的CSS就行了,在加载页面的时候,来相应的CSS。

------解决方案--------------------
这两者侧重点有区别,javascript侧重于动作,css侧重于表现。当然css做的渲染javascript也能做到,这是没有问题的(css3某些特性除外),你可以用javascript来做所有的渲染工作如果你愿意,就像你的团队现在所做的一样。
    当然更多的人会喜欢将动作与表现分开,就像一大堆的mvc框架一样,一个jsp就可以完成所有的操作(画面表示,逻辑处理,数据库访问),却要分为表示,控制,和持久层这样的层级结构,除了性能和安全考虑外,降低耦合也是非常重要的。