autofocus="autofocus"
如标题所述:即使使用display: none;
or隐藏表单控件,焦点仍将设置在表单控件上visibility: hidden;
吗?
问问题
7424 次
2 回答
3
HTML5 草案标准只要求一个元素是“可聚焦的”,其中可聚焦意味着:
如果用户代理的默认行为允许它是可聚焦的,或者如果该元素是特别可聚焦的,则该元素是可聚焦的,但前提是该元素正在呈现或者是表示嵌入内容的画布元素的后代。除非平台约定另有规定,否则用户代理应使以下元素具有焦点:
a
具有href
属性的元素link
具有href
属性的元素button
未禁用的元素input
type 属性未处于隐藏状态且未禁用的元素select
未禁用的元素textarea
未禁用的元素command
没有 disabled 属性的元素- 具有
draggable
属性集的元素,如果这将使用户代理允许用户在不使用定点设备的情况下开始对这些元素进行拖动操作- 编辑主机
- 浏览上下文容器
它确实说“但只有当元素被渲染时......”并且标准将“渲染”定义为:
如果元素在 Document 中,则元素正在被渲染,它的父节点本身正在被渲染或者它是 Document 节点,并且它没有使用以下任一方法明确地从渲染中排除:
- CSS 'display' 属性的 'none' 值,或
- 'visibility' 属性的 'collapse' 值,除非它被视为等同于 'hidden' 值,或者
- 其他样式语言中的一些等价物。只是在屏幕外并不意味着元素没有被渲染。hidden 属性的存在通常意味着元素没有被渲染,尽管这可能会被样式表覆盖。尽管如此,不尊重作者级 CSS 样式表的用户代理仍被期望以与本规范和相关 CSS 和 Unicode 规范一致的方式应用这些部分中给出的 CSS 规则。
简而言之,答案似乎是,如果所有其他要求都得到满足,那么display:none
将不会被关注,而是display:hidden
会——假设所有浏览器实际上都遵循规范。
于 2012-02-03T01:42:12.090 回答