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

dialog的zindex和mask的zindex问题 #511

Open
acelan86 opened this issue Aug 28, 2015 · 9 comments
Open

dialog的zindex和mask的zindex问题 #511

acelan86 opened this issue Aug 28, 2015 · 9 comments

Comments

@acelan86
Copy link

这样的场景
如果我在一个action里打开一个dialog(暂且叫A),然后A又有操作可以打开另外一个dialog(B),B打开的时候A依然存在
从代码上看,正常情况下这时候算dialog个数来计算zindex是对的

但是如果打开A的时候有网络io操作,这时候存在loadingbar也是用dialog实现的,这时候A的zindex计算是在2个dialog情况下完成的,然后io操作结束了,loadingbar相应删除了或者隐藏了,这时候要打开B,这时候B的zindex计算也是在2个dialog的情况下,所以,A跟B这时候的zindex是一样的。。导致mask的计算也是一样的,情况就是,B的mask根本没法盖在A上

解决方案:
是否可以在计算的时候吧loading不当作dialog,通过skin判断?

然后吧loading默认创建一个很高的mask和zindex

@acelan86
Copy link
Author

哦,混了,貌似是bat-ria的问题,用dialog来写loadingbar导致的 @Justineo

@Justineo
Copy link
Member

我感觉这个和 loading 提示好像没关系?假设有 ABCD 四个对话框。
ESUI 的对话框 z-index 初始值为 1203,在 show 时通过 zIndex += dialogNum * 10 来计算当前 z-indexdialogNum 是目前所有状态非 hidden 的对话框数。

A show -> dialogNum = 1, zIndex = 1213
B show -> dialogNum = 2, zIndex = 1223
C show -> dialogNum = 3, zIndex = 1233
A, B hide -> dialogNum = 1
D show -> dialogNum = 2, zIndex = 1223

这样是不是 D 就被更早显示的 C 覆盖了?当然通常情况下 Dialog 打开关闭类似一个栈,不会遇到这个问题。

你现在的问题就是遇到了先打开的 Dialog 先关闭,所以 A 和 B 有相同的 z-index,但是 B 比 A 先初始化所以 DOM 结构上排在前面,导致 B 无法覆盖 A。

@otakustay
Copy link
Member

@DDDBear

@acelan86
Copy link
Author

@Justineo zindex一样,B在A后面打开,因为在dom结构的关系B覆盖a不会出错,这点是没问题,但是B的mask无法盖住A

跟loadingbar有关系的原因在于loading是随着io自动打开自动关闭的,且A打开的时候loading存在,这时候A的层级是2个dialog计算出来的层级,loading因为io结束关闭后,A的层级不会重写,这时用户在A上打开B,B的层级也是2个dialog算出来的层级

@Justineo
Copy link
Member

@acelan86 我是说不管是不是 loading 提示,都有可能遇到这个问题。只是一般来说先打开的不会先关闭。而不带 modal 层的 Dialog 其实是没有这个限制的。

@acelan86
Copy link
Author

@Justineo 哦,对。没看仔细,只是loading的特殊使用场景导致会有先打开先关闭的情况才遇到这样的问题,有建议的解决方案么?
我现在就是粗暴的用skin-loading来判断,把他排除在外面了

@Justineo
Copy link
Member

是不是可以考虑让所有的 Dialog(或 Modal 层) 都拥有相同的 z-index,在 show 的时候移动一下 DOM 中的位置保证在最后呢?

@otakustay
Copy link
Member

@DDDBear 这里有个啥结论不……

@yankun01
Copy link
Contributor

yankun01 commented Sep 8, 2015

#489
和这个问题相关的一个issue

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

No branches or pull requests

4 participants