div标签别样的属性——tabindex

今天做开发遇到一个问题,经过努力还是解决了,这次让我认识了div中一个新的属性tabindex,下面结合例子谈一下该属性的作用:

代码1:

<html>
	<head>
		<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
		<title>01</title>
	</head>
	<body>
		<div onfocus="javascript:alert('得到焦点!');" style="border:1px solid #ccc;width:200px;height:200px;"> </div>
	</body>
</html>

说明:当你通过点击div区域试图使div区域获取焦点时,div的onfocus函数并不能触发,这种情况下如果div有onblur事件也是不能触发的;

代码2:

<html>
	<head>
		<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
		<title>02</title>
	</head>
	<body>
		<div tabindex="0" onfocus='alert("得到焦点!");' style="border:1px solid #ccc;width:200px;height:200px;"> </div>
	</body>
</html>

说明:当你通过点击div区域试图使div区域获取焦点时,div的onfocus函数就会触发,这种情况下如果div有onblur事件也可以触发;

总结:如果试图触发div标签绑定的onfocus事件和onblur事件,需要为该标签添加tabindex属性。

为什么试图触发div标签绑定的onfocus事件和onblur事件,需要为该标签添加tabindex属性呢?

代码3:

<html>
	<head>
		<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
		<title>03</title>
	</head>
	<body>
		<input type="text" id="text1" id="text1" >   <input type="text" id="text2" id="text2" >
	</body>
</html>

说明:使用浏览器运行上面代码后,请点击计算机“Tab”键,这是你会发现input控件获取了焦点;input控件可以直接触发onfocus事件和onblur事件,但div不行,这是怎么回事儿呢?呵呵呵,只能有一种情况div标签默认没有tabindex属性——tab键进行移动光标的时候,光标只在具有tabindex属性的元素上进行跳转。

什么是tabindex,其值代表着什么意思?

说明:tabindex属性其实指定了点击计算机“Tab”键时光标移动的顺序,在点击计算机“Tab”键时tabindex属性值越小(最小为0)其所在的标签越先得到焦点:看下面两个代码:

代码4:

<html>
	<head>
		<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
		<title>04</title>
	</head>
	<body>
		<input type="text" id="text1" id="text1" tabindex = "0">   
		<input type="text" id="text2" id="text2" tabindex = "0">   
		<input type="text" id="text3" id="text3" tabindex = "0">
	</body>
</html>

说明:在点击计算机“Tab”键时你会看到上面控件获取焦点的顺序依次自左向右;

代码5:

<html>
	<head>
		<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
		<title>05</title>
	</head>
	<body>
		<input type="text" id="text1" id="text1" tabindex = "3">   
		<input type="text" id="text2" id="text2" tabindex = "2">   
		<input type="text" id="text3" id="text3" tabindex = "1">
	</body>
</html>

说明:在点击计算机“Tab”键时你会看到上面控件获取焦点的顺序依次自右向左;

总结:通过代码4和代码5我们可以充分的认识到:在点击计算机“Tab”键时tabindex属性值越小(最小为0)其所在的标签越先得到焦点。

使用tabindex注意点

代码6:

<html>
	<head>
		<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
		<title>06</title>
	</head>
	<body>
		<div tabindex="2" style="border:1px solid #ccc;width:200px;height:200px;"> </div>
		<br>
		<div tabindex="1" style="border:1px solid #ccc;width:200px;height:200px;"> </div>
	</body>
</html>

图6-1

图6-2

说明:上图中的两个div都添加了tabindex属性,由于第二个div的tabindex属性值比第一个div的tabindex属性值小,所以在点击计算机“Tab”键时第二个div首先获取焦点,可是你留意了吗——获取焦点的div在谷歌浏览器中会出现一个浅蓝色的“框”,在IE浏览器中会出现一个由虚线构成的“框”,这和我们原来的框是不一样的,那么怎么解决这个问题呢?解决出现浅蓝“框”只需要向div标签的样式表中添加“outline:0;”样式即可,解决出现由虚线构成的“框”只需要向div标签中添加“hidefocus="true"”属性和属性值即可;

代码7:

<html>
	<head>
		<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
		<title>07</title>
	</head>
	<body>
		<div tabindex="0" onfocus="javascript:alert('得到焦点!');" style="border:1px solid #ccc;width:200px;height:200px;outline:0;"> </div>
	</body>
</html>

说明:使用IE、火狐或Opera浏览器运行代码7的代码,让div获取焦点(通过鼠标点击div域即可)你会发现出现了一个对话框,点击“确定”按钮,该对话框取消,但是在谷歌或Safari浏览器运行代码7的代码,让div获取焦点(通过鼠标点击div域即可)点击出现的对话框中的“确定”按钮,你会发现该对话框会一次又一次的出现,这不是我们想要看到的,为什么会出现这种情况,怎么解决这种情况呢?呵呵呵,我也正在为此而探索,但到现在也没有找到一个有效的办法,最后迫不得已使用了onclick事件
,div支持onclick事件的而且不需要添加原本不属于div的tabindex属性。

div标签别样的属性——tabindex

时间: 2024-08-03 06:33:45

div标签别样的属性——tabindex的相关文章

div 属性 DIV标签属性有什么如何设置属性

div 属性 DIV标签属性有什么如何设置属性(音乐放松椅) div 属性介绍,对DIV可加属性有哪些,DIV属性一览表DIVCSS5整理 DIVCSS5给大家整理DIV标签内常用属性,同时通过div各属性小实例,让大家认识各属性并掌握属性. div标签内常用属性列表 1.style 设置css样式(扩展了解style标签) 2.align 设置div盒子内的内容居中.居左.居右 3.id 引人外部对应#(井号)选择符号样式 4.class 引人外部对应.(句号)选择符号样式 5.title 设

div/span等获取焦点问题(tabindex属性的简单理解)

1.先看问题 当我们要对一个div/span元素获取焦点的时候,直接对$("#div1").focus()是不能实现效果的,比如下图: 当点击输入框进行输入后,在点击区域弹出选择地段的时候,input输入框并没有失去焦点(或者说区域的div没有获得焦点),就出现了键盘显示在弹层的上面导致无法选择的bug 解决办法有两个: a:循环所有的input等可以获取焦点的元素,让他们失去焦点(blur); b:点击区域选择地段的时候让div获取焦点,从而解决input不失焦的问题: 在这里对于普

jQuery 的 Div 标签滚动条属性及判断垂直滚动条是否到达底部

转自:http://blog.163.com/[email protected]/blog/static/1284651702010894509982/ 关于 jQuery 的 Div 标签的滚动条的概念,没有几个人能够完全.正确搞明白的. 我知道很多人不同意我的观点.但是如果去百度上搜素,与 jQuery 滚动条有关的信息,都是关于滚动条外观和滚动条插件的.我最近在制作一个滚动条相关的页面效果,去 CSDN 论坛里提问,得到了一段代码,还是错误的. jQuery 里和滚动条有关的概念很多,但是

div层调整zindex属性无效原因分析及解决方法

在做的过程中,发现了一个很简单却又很多人应该碰到的问题,设置Z-INDEX属性无效.在CSS中,只能通过代码改变层级,这个属性就是z- index,要让z-index起作用有个小小前提,就是元素的position属性要是relative,absolute或是fixed. 1.第一种情况(z-index无论设置多高都不起作用情况): 这种情况发生的条件有三个: 1.父标签 position属性为relative: 2.问题标签无position属性(不包括static): 3.问题标签含有浮动(f

区别CSS中display:box;inline;none以及HTML中 &lt;frame&gt; 标签&lt;table&gt; 标签的 frame 属性

区别display:box:display:inline:display:none三者的不同 display:block的特点是: block是Display默认的值.总是在新行上开始:该对象随后的内容自动换行;行高以及顶和底边距都可控制:宽度缺省是它的容器的100%,除非设定一个宽度:<div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子,意思是他们默认显示方式是block: display:inl

【转载】div层调整zindex属性无效原因分析及解决方法

在做的过程中,发现了一个很简单却又很多人应该碰到的问题,设置Z-INDEX属性无效.在CSS中,只能通过代码改变层级,这个属性就是z-index,要让z-index起作用有个小小前提,就是元素的position属性要是relative,absolute或是fixed. 1.第一种情况(z-index无论设置多高都不起作用情况): 这种情况发生的条件有三个: 1.父标签 position属性为relative: 2.问题标签无position属性(不包括static): 3.问题标签含有浮动(fl

【Web前端】div层调整zindex属性无效原因分析及解决方法

在做的过程中,发现了一个很简单却又很多人应该碰到的问题,设置Z-INDEX属性无效.在CSS中,只能通过代码改变层级,这个属性就是z- index,要让z-index起作用有个小小前提,就是元素的position属性要是relative,absolute或是fixed. 1.第一种情况(z-index无论设置多高都不起作用情况): 这种情况发生的条件有三个: 1.父标签 position属性为relative: 2.问题标签无position属性(不包括static): 3.问题标签含有浮动(f

html中div标签的使用方法

 CSS是DHTML的基础,CSS用于设定HTML元素在页面上的显示风格,而CSS-P则是CSS的一个扩展,它可用来控制HTML元素在网页上或者说在窗口的位置.下面的两个链接提供了CSS和CSS-P详尽的技术手册: W3C CSS-Positioning Builder.com's CSS Guide 在本课程中,将会反复地对CSS进行介绍. 使用DIV标签 使用CSS-P,主要依靠< div >标签来实现,当你把HTML内容放在< div >标签里时,可以称它为:"

HTML中的div标签

在网页制作过程过中,可以把一些独立的逻辑部分划分出来,放在一个<div>标签中,这个<div>标签的作用就相当于一个容器.为了使逻辑更加清晰,我们可以为这一个独立的逻辑部分设置一个名称,用id属性来为<div>提供唯一的名称,这个就像我们每个人都有一个身份证号,这个身份证号是唯一标识我们的身份的,也是必须唯一的. 语法: <div  id="版块名称">-</div>