Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于InputControl的交互行为 #16

Closed
otakustay opened this issue Apr 11, 2013 · 6 comments
Closed

关于InputControl的交互行为 #16

otakustay opened this issue Apr 11, 2013 · 6 comments
Labels

Comments

@otakustay
Copy link
Member

以下两点是我 强烈 要推动的(甚至希望强制之):

  1. 对IE6不作完美兼容(这里是带有强制性地放弃IE6的完美兼容,而不是“如果我做得到,我去做”这样消极的想法),如鼠标悬浮的样式(仅样式,如果有动态交互的行为另谈)直接不支持IE6。这有助于我们减少控件开发者和业务线人员的精力,逐渐推动IE6的淘汰。
  2. 输入控件支持键盘操作,如tab导航等。

因此,我提出以下建议:

  1. 控件是否加hoveractivepressfocus这些state由控件自己决定,仅样式上的变化的话,通过CSS处理,不通过鼠标事件管这事。
  2. 一定要有:hover:active:focus这几个伪类,样式通过这些伪类实现,不去使用这几个state相关的class。通过鼠标事件修改的class通常只能管理鼠标操作的情况,键盘操作不能覆盖,远没有伪类来得正确。
  3. InputControl的主元素必须有tabindex,默认值为0,这个可以在InputControl.prototype.initStructure中实现。
  4. 复杂的输入控件考虑键盘的操作,如Select应该能通过TAB聚焦,然后按方向键下或者回车打开层,使用方向键选择具体的项,按回车确认。
@errorrik
Copy link

控件是否加hover、active、press、focus这些state由控件自己决定,仅样式上的变化的话,通过CSS处理,不通过鼠标事件管这事。
一定要有:hover、:active、:focus这几个伪类,样式通过这些伪类实现,不去使用这几个state相关的class。通过鼠标事件修改的class通常只能管理鼠标操作的情况,键盘操作不能覆盖,远没有伪类来得正确。

没理解这个

@otakustay
Copy link
Member Author

  1. initMouseBehaviors虽然提供,但不强制要求所有InputControl子类一定调用。
  2. 如果在鼠标悬浮、按下的时候,仅仅样式产生变化,则要求写.ui-xxx:hover而不是.ui-xxx-hover,使用伪类解决问题。
  3. 事实上initMouseBehaviors产生的事件,在某些极端情况下没有伪类精准,比如“浏览器不在激活状态下元素移动过鼠标时某些版本的浏览器不触发mouseenter事件但会触发:hover伪类”。

@errorrik
Copy link

那,ui-xxx-hover有没有可能干掉,在Control层面?

@otakustay
Copy link
Member Author

现在是有个initMouseBehavior方法的,我觉得这个方法留着,且从helper暴露出来,但是多数控件是不需要使用的,有需要的时候借用一下就好

@errorrik
Copy link

好吧,我再考虑考虑。未来,hover、press这种mouse相关的状态,我觉得都可以考虑不要了。

@otakustay
Copy link
Member Author

已经在 808d8be 中移除了默认的鼠标交互,由CSS去实现,如果要js提供功能则则通过patch来做

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants