- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在研究表单元素的默认功能以及它们在浏览器之间的不同状态。我发现了一件很奇怪的事情。这已经在不同的浏览器中进行了测试,结果是相似的。以下屏幕截图来自 Chrome v44.0.2403.155m(64 位 Windows)。
好的,所以问题出在按钮的焦点状态上。下面您将看到一个没有 CSS 样式的默认表单。我单击第一个输入,然后使用 Tab 键向下切换表单元素。在 chrome 中,您可以将浅蓝色轮廓应用于您选择的每个元素。
请注意,当我用鼠标单击按钮时,没有淡蓝色的“焦点”状态,只有当我点击它时才会出现。
我假设这只是使用了 :focus,如果我设置了 button:focus 的样式,那么我就能够复制这个默认行为。在突出显示的按钮上按 Tab 键,单击不突出显示的按钮。看看这个样式化的表单版本...
当我单击第一个输入并按下 Tab 键时,它会执行相同的操作,显示我的自定义大纲(这很好)。但是,请注意,当我单击按钮时,它正在对其应用 :focus 状态。 这与默认行为不同。在无样式版本中,单击不会应用焦点状态。
我在按钮上使用的唯一 CSS 是...
input:focus, button:focus {
outline: 2px solid green;
}
这是一个演示:http://jsfiddle.net/oy83s4up
如何确保单击按钮时没有轮廓,只有在选项卡时才显示轮廓?。另外,默认情况下,当一个按钮被 Tab 键聚焦时,即使点击它,轮廓仍然存在,这也是我想要复制的功能。
注意:我不是在寻找 JS 解决方法,第一个动画是浏览器中的默认行为。当然它只能用 css 复制吗?如果不是,那就是一个错误。
最佳答案
有趣的问题!
我在通过 Inspect Element
检查按钮并触发 :focus
时注意到,按钮的样式为 outline: -webkit-focus-ring-颜色自动 5px;
.
虽然这不会在按钮上创建轮廓。 (这可能是因为 Mac 上的 Chrome,因为 Tab 键也不会创建轮廓)
当我将此添加到样式表单中的按钮而不是您添加的 outline
时,它不会获得您在 Tab 键浏览时获得的蓝色阴影。如果你问我,这很奇怪。当我用谷歌搜索 -webkit-focus-ring-color
时,我找到了 this question on SO .在那个答案中,他写了一些关于 [NSColor keyboardFocusIndicatorColor]
的东西,它真正谈论的是键盘焦点(在表单中切换)而不是鼠标焦点。
在 focus indicators
上谷歌搜索时,我登陆了维基百科页面 Focus (computing) , 包含以下一段文字:
By convention, the tab key is used to move the focus to the next focusable component and shift + tab to the previous one. When graphical interfaces were first introduced, many computers did not have mice, so this alternative was necessary. This feature makes it easier for people that have a hard time using a mouse to use the user interface.
这告诉我按钮上的焦点只在按下键盘时显示,因为在开始时必须显示焦点在什么元素上,而现在用鼠标就可以清楚地知道焦点在什么上,因为你是主动将鼠标移动到按钮上。
关于html - 为什么伪元素:focus on button when using TAB but not click?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046375/
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我一直在尝试使用 Bootstrap 的表单样式处理 AngularJS 的电子邮件验证,并遇到了这个 CSS block 。 input:focus:required:invalid, textar
我在 bootstrap 中查看 dropdown.js 的历史,并在 git 上发现了以下更改历史文件,here : $this.focus() // focus() being changed
在不考虑性能的情况下,我总是认为 $(":focus") 返回的 jquery 对象等同于 $(document.activeElement)。 但是,如果您闯入浏览器调试器并评估 $(":focus
我使用 datatables from fluent kit和分页,当点击时(:active)突出显示: box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25); 我
我的目标是在单击 span(带有 Show Me 文本)时显示带有 show 类的 p 标签。我曾尝试使用 :focus 伪选择器来执行此操作,但使用此方法使得 p 标记仅在单击其他位置之前显示,其中
result 我想让图片保持点击状态。 我为每个图标使用了两个图像。一个是什么时候没有被点击。另一个是何时单击。悬停工作正常。但焦点根本不起作用。 我没有看到任何错误或错误。请帮帮我! 这是 body
我在表格布局中嵌套了编辑文本,然后在 ScrollView 中嵌套了表格布局,触摸模式下的可聚焦/可聚焦在真实设备中不起作用,但令人惊讶的是它在模拟器中起作用。 请问能否提供一些替代解决方案? 最佳答
我使用 Backbone.js 的代码的 View 部分是这样的: var myView = Backbone.View.extend({ events: { 'focus .
我有一个行为类似于选项卡控件的用户控件。选项卡标题是 UserControl 实例,它们重写 Paint 事件以使它们看起来是自定义的。 为了利用选项卡页上各种控件上的验证事件,当用户单击选项卡标题时
我遇到了一个麻烦的网页,其结构很复杂。如果用鼠标单击一个DIV,则一切正常。但是,如果它是通过 javascript 获得焦点的(即 divElement.focus)。布局变得凌乱。这只发生在 IE
这是一个代码笔来演示我所看到的: https://codepen.io/anon/pen/zMvxPy HTML: JS: $('input').on('focus', () => { cons
问题: PrimeFaces“p:focus”标签不是聚焦。 - 即,当 xhtml 页面呈现给用户时,没有输入字段处于焦点。 问题: 为什么不呢?如何让“p:focus”在这个简单的应用程序中正常工
我有一个 只有当第一个子元素获得焦点而不是第二个子元素时,我才想在其中设置焦点的元素。我尝试使用 :not伪类,但没有成功。 值得注意的是,我仍然需要关注第二个元素,只是不想有两个焦点元素(父 + 子
我正在尝试用纯 CSS 创建一个可访问的下拉菜单,但我不太确定该怎么做。 如果 anchor 处于事件状态,我可以获得下一个 UL(子菜单),但是一旦进入子菜单,聚焦第一个链接,我不确定如何告诉 an
我在 jQuery UI 代码库中看到 .focus(1),但我无法弄清楚该参数的用途。 它与.focus()有何不同?我阅读了 jQuery 网站上的 .focus 文档,但仍然一无所知。 谢谢。
在 WPF 中,有两种方法可以将焦点设置到元素上。 您可以调用 input 元素的 .Focus() 方法,也可以使用 input 元素作为参数调用 Keyboard.Focus() 。 // fir
我有一个可以获得焦点的父组件。它使用这个焦点来提供键盘控制。该父组件可以生成一个子组件,该子组件同样可以获取焦点,以便它可以响应键盘事件。子组件监听的键盘事件之一是 这会导致子组件被卸载。 当子组件卸
我有一个可以获得焦点的父组件。它使用这个焦点来提供键盘控制。该父组件可以生成一个子组件,该子组件同样可以获取焦点,以便它可以响应键盘事件。子组件监听的键盘事件之一是 这会导致子组件被卸载。 当子组件卸
我试图突出焦点 秒。 我添加了 -1 的标签索引给他们每个人,并确认调用some_tr.focus()套document.activeElement那个some_tr .然而,由于某种原因some_t
我是一名优秀的程序员,十分优秀!