有时我在看css时,看到有的css属性定义为background:transparent。意思就是背景透明。实际上background默认的颜色就是透明的属性。所以写和不写都是一样的有段时间没写文章了,一直在学校,虽然带着电脑,但是不能上网啊!最近在用javascript写一个网页版的操作系统,写好了一定发上来,写的过程中遇到很多问题,许多都是细节方面的,很麻烦,不过自己一直在努力解决,也是对自己的一种提高吧.下面我来说一下我最近遇到的一个问题.大家知道,你用createelement新建一个div,默认情况下这个div的style中的backgroungcolor属性是transparent,呵呵,如果我做一个div的蒙板,那么请看下面一段代码:复制代码代码如下:div.style.position="absolute"div.style.width=document.body.clientWidth+"px"div.style.height=document.body.clientHeight+"px"div.style.left="0px"div.style.top="0px"div.style.zIndex="2000"div.style.backgroundColor="black"div.style.filter="alpha(opacity="+0+")"这是很多蒙板div的设置,也就是说屏蔽用户对网页上的其他元素进行操作.我们主要看后面两行代码,前面不是已经说了嘛,div的默认backgroundcolor属性就是transparent,也就是是透明,那么我们干嘛还要多此一举去设置个black(这个无所谓,随便设置个颜色,只要不是transparent就行,也不能是空字符串,浏览器会默认将空字符串看成transparent),并且设置滤镜让他透明呢.我自己动手做了试验,一开始还对试验结果很迷惑,但自己静下来想想便发现了其中的区别,如果我们没有上面代码的后两句,那么我们便可以对蒙板后的元素进行操作,也就是说起不到屏蔽的作用,但是这个操作是有限制的,具体说就是我们只可以对有焦点的元素进行操作,比如文本,图片,按钮等,我举个例子:复制代码代码如下:<div style="border:1px red solidwidth:100pxheight:100px" onclick="alert(1)"123</div正常情况下,只要你点击这个div的任何位置,都会alert的,但是当它被一个backgroundcolor为transparent的元素遮住的时候,我们只有点击123才会alert,因为文本是可以获得焦点的,同理其他元素也一样.顺便说下,这个backgroundcolor为transparent的元素的事件会对被它遮住的元素所截获.如果我们所触发的对象没有焦点,那么事件会交换给transparent的元素处理并按这个元素进行冒泡,否则有焦点的会事件便由有焦点的那个对象处理,不会交换,并且按有焦点的元素进行冒泡.(貌似不是很好理解,可以自己多做做试验就明白了)设置样式为透明色有时,上文写了复制代码代码如下:background:inherit那么下文就可能要清除一下背景,就写了复制代码代码如下:background:transparent透明背景,也就是去掉了被如果一个元素覆盖在另外一个元素之上,而你想显示下面的元素,这时你就需要把上面这个元素的background设置为transparent点击事件只能设置在html元素中,所以background是没有办法设置点击的。但是,它的元素div是有点击事件onclick的。如果div设置onclick无效,建议使用jquery来绑定div的click事件。
此外,由于div中还有其它元素有click事件,所以,这就涉及到了事件冒泡的问题。
那么,说到这,指出你的一个代码问题。网页中,html元素的id必须是唯一的。如果id不唯一,一代涉及id,程序可能会出错。而class才是可以重复的。
可以如下纠正:
<input type="submit" name="button" id="btn_searc" value=" " class="button">
<input type="button" name="button" id="btn_ask" value=" " class="button" >
下面就是解决事件冒泡问题了,还是建议jquery来解决
对于div的内层元素,我们使用jquery来绑定它的单击事件,并且静止响应div的单击事件
$('#btn_searc').blind('click',function(event){
searchPost() //这里响应id为btn_searc元素的单击事件
event.stopPropagation() //这局话就是停止事件冒泡了,也就是说,接下来的div的单击事件将不再会被响应。
})
同理,另外一个原色的单击事件可以如下
$('#btn_ask').blind('click',function(event){
ask()
event.stopPropagation()
})
那么,接下来就是去绑定div的单击事件,首先,还是将div的class改成id,并保证其唯一性。同时,css也要改成id的选择器:
#communion_header{
height: 88px
width: 690px
margin: 0 auto
background: url(../../images/communicate/communtion_logo.png) no-repeat 50px 30px
padding: 40px 0 0 270px
}
jquery绑定click
$('#communion_header').click(function(){
//这里写div的单击代码。可以使用JavaScript,更可以使用其进阶语言jQuery
})
最后,需要说明的是,代码使用的是JavaScript语言的一种进阶语言jQuery。它的使用要借助于jQuery库的存在。所以你必须去下载个jquery.js,并且在网页中添加关联。