RSS
热门关键字:  CSS教程  CSS布局  CSS样式  CSS hack  CSS JS
当前位置 :| 主页>CSS教程>

100%点击区的滑动门

来源:cssplay 作者:cssplay 时间:2008-08-31 点击:

学习标准的朋友,一般都会在学习的过程中接触到CSS滑动门技术,或许大家也都看过这篇文章《CSS中的滑动门技术》,如果你还没接触过或还没看过上文或有点忘记内容,也没关系,可以点击上面的文章链接,先了解或温习一遍。


《CSS中的滑动门技术》一文中的滑动门例子,大家仔细实验,或许已经发现,链接区有9像素的盲点无法点击,而且在IE下,只能点击文字部分大小,不能点击整个按钮区块。而我们或许期望的是整个按钮区块都可以点击,并且不允许有盲点存在。


那我们又该如何去实现呢?下面我们一起来探讨一些解决方法:


首先为了方便我们先把《CSS中的滑动门技术》中的代码移过来:


XHTML部分:


<div id="header">
 <ul>
  <li><a  href="#">Home</a></li>
  <li id="current"><a  href="#">News</a></li>
  <li><a  href="#">Products</a></li>
  <li><a  href="#">About</a></li>
  <li><a  href="#">Contact</a></li>
 </ul>
</div>


CSS部分:


#header {
 float:left;
 width:100%;
 background:#DAE0D2  url("bg.gif") repeat-x  bottom;
 font-size:93%;
 line-height:normal;
}
#header ul  {
 margin:0;
 padding:10px 10px 0;
 list-style:none;
}
#header li  {
 float:left;
 background:url("left.gif") no-repeat left  top;
 margin:0;
 padding:0 0 0 9px;
}
#header a  {
 float:left;
 display:block;
 background:url("right.gif") no-repeat  right top;
 padding:5px 15px 4px  6px;
 text-decoration:none;
 font-weight:bold;
 color:#765;
}
/*  Commented Backslash Hack
hides rule from IE5-Mac \*/
#header a  {
 float:none;
}
/* End IE5-Mac hack */
#header a:hover  {
 color:#333;
}
#header #current  {
 background-image:url("left_on.gif");
}
#header #current a  {
 background-image:url("right_on.gif");
 color:#333;
 padding-bottom:5px;
}


方法一:使用相对位置负外边距


为了消除滑动门的9px的盲点区域,设置li的外边距为9px(9px为left图片的宽度大小),li的背景为right图片,不重复,右上对齐。


#header li {
 background:url("right.gif") no-repeat right  top;
 margin-left:9px;
}


然后让a向左移动9px,覆盖掉盲点区域,如何移动呢?可对a使用相对位置(position: relative;),用负值移动9px(left:-9px;)。由于li的宽度等于a的宽度,所以当a位置相对左移9px时,li的右边就会多出9px的盲区,如何解决呢?我们使用a的负外边距来解决(margin-right:-9px;)。


#header a  {
 position:relative;
 left:-9px;
 margin-right:-9px;
}

设置left图片为a的背景,不重复,左上对齐,并设置文字的内边距,注意现在a的区域为整个按钮的区域,所以padding-left和padding-right的值都应为15px。


#header a {
 background:url("left.gif") no-repeat left  top;
 padding:5px 15px  4px;
}

另注意一个细节:在 IE 中链接的区域为文字区域而不是按钮区域,而在其他对标准支持比较好的浏览器里是按钮区域。为了解决这个问题,我们给IE中的a指定个固定宽度来触发IE的layout(可以选用.1em,1px,1%等值),但这样一来a在其他对标准支持比较好的浏览器里则会识别这个宽度,我们选用对标准支持比较好的浏览器识别而IE6不识别的子选择器来让a的宽度变为auto 。


#header a {
 width:.1em;
}
#header > ul a  {
 width:auto;
}


相对应的,对于current选择器里的图片位置也要做一点调整:


#header #current  {
 background-image:url("right_on.gif");
}
#header #current a  {
 background-image:url("left_on.gif");
 padding-bottom:5px;
}


让我们把CSS代码整理优化一下:


#header li {
 background:url("right.gif") no-repeat right  top;
 margin:0 0 0 9px;
}
#header a  {
 position:relative;
 left:-9px;
 margin-right:-9px;
 width:.1em;
 background:url("left.gif")  no-repeat left top;
 padding:5px 15px 4px;
}
#header > ul a  {
 width:auto;
}
#header #current  {
 background-image:url("right_on.gif");
}
#header #current a  {
 background-image:url("left_on.gif");
 padding-bottom:5px;
}

Tag:CSS教程   滑动门   点击区   100  
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
热点实例