CSS3 动画是表现还是行为?

我们常说表现、内容、行为要分离,在CSS3之前时我们分辨得很清楚。但是现在发现利用CSS3你可以做纯CSS的选项卡,纯CSS的下拉菜单,可以实现缓动效果,动画效果,利用 input[type=checkbox]:checked还可以实现点击响应。CSS3干了不少JavaScript一直在做的事。CSS3 的 content 还可以生成HTML内容。这个时候如何理解“表现、内容、行为”的分离?

看了这篇文章 谈谈我的“分离”观 还是疑惑。我们说不能认为脚本就是行为,脚本可以生成内容也可以改变表现,但里面提到“行为,指由用户触发的由脚本与服务器端的交互”,那么弹窗也不算行为?或者说到了现在,已经没必要分清楚?你怎么理解?

阅读 6.5k
2 个回答

这问题还挺有意思。

就我的理解,目前css3还是在做表现所做的事情,表现的东西,不管是否静与动,它与行为最大的区别在于,行为更大程度是再说与用户的事件交互上,比如点击了表单提交按钮,检验出不合格的字段给出提示

当然表单验证在html5这个代表内容的部分也改进做了很多,这我认为只是为了方便开发者的一个功能,其实严格来说也属于数据,html5可看成是浏览器才能解析的xml,只不过对某些属性提供了浏览器自己默认的处理方式,比如说required="required",表示这个字段的数据是用户必须提供的,本质上还是一个描述,不是行为,如果默认的处理方式不满意,你也可以用javascript去改变他

当然其他的一些事件交互,想网页游戏,就更不用说了,那必然要依靠javascript对事件进行一些相应处理

而反过来,在css3没出现之前,javascript做的一些仅仅是很炫但是不与用户交互的动画效果,其实也算是表现。

而对于css3生成内容,这个地方可能你理解有一个误区,它必定不是生成html的内容,而也是为了表现,如果这个概念不理解清楚,很可能会导致css3 content的滥用,比如说,给blockquote或者q标签的前后加引号,就是一个很好的运用,但是给一段话的后面加另外一段话,就是一个滥用的坏栗子。其实你可以这么去想,css3是为了装饰html这个内容的,所以每当你做完一个页面的时候,最好把css关掉看看html在默认的样式下是否依然还具有非常良好的结构和完整的数据(比如刚才说的坏例子,那已经少数据了),如果在脱掉css3这层漂亮的外衣下依然能一眼就分辨html的胴体,那才是真的搞清楚css和html的职责了

我觉得 这其实根本不需要分的那么细
Javascript还不是有很多代码为的是表现?
你可以将偏向于动作的CSS或者JS和偏向于表现的分开,发布的时候合并就行了
便于维护就好了而不是纠结教条
我以前也纠结过MVC具体到底是怎么分离的,但现在发现很多框架分离的方法都不一样,有分离的思想并且简单易懂便于维护就好了吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏