2010-09-08 55 views
0

tab-ver.tab {

background: url(../images/16by16.png) no-repeat center center; 
    text-indent: -10000em; 
    height: 16px; 
    width: 16px; 
    padding: 4px 1px; 
    margin-right: 1px; 
    margin-left: 50px; 
} 

<div id="tab-ver" class="tab"><a href="http://www.yahoo.com">English</a></div> 

以上脚本的问题是,一个链接不会在所有的工作。如果用户点击16by16.png图片,用户不会重定向到yahoo.com。CSS - 如何让一个DIV中的一个连接工作与背景图像

但是要解决这个问题?

谢谢

// update001// 
I have tried the following suggestion: 

#tab-ver.tab { 
    text-indent: -10000em; 
} 
#tab-ver.tab a{ 
    background: url(../images/16by16.png) no-repeat center center; 
    height: 16px; 
    width: 16px; 
    padding: 4px 1px; 
    margin-right: 1px; 
    margin-left: 50px; 
    display: block; 
} 

它为我原来的问题。但是,显示的图像现在偏移到水平菜单的底部。这是由'display:block'造成的。但是,如果我删除'display:block',那么图像将不可见。

谢谢

// update 1 // 

Based on the suggestion, the following script works best for me 

#tab-en-ver.tab a { 
    background: url(../images//16by16.png) no-repeat center center; 
    height: 16px; 
    width: 16px; 
    padding: 4px 1px; 
    margin-right: 1px; 
    margin-left: 50px; 
    text-indent: -10000em; 
} 

然而,这个建议确实有一个问题。文字“英文”与图像混合。我无法弄清楚如何从链接中删除“英文”文本。

通过添加下面的额外规则将导致图像消失。

#tab-ver.tab { 
text-indent: -10000em; 
} 

有什么想法吗?

回答

1

如果你想要的文字(“英语”)被隐藏,比你必须使用<img/>标签,与alt属性,是这样的:

<img src="english-flag.png" alt="English" /> 

您也可以使用一些CSS黑客,但:

  1. 用于什么?使用纯HTML可以轻松实现!
  2. 这些都是黑客行为,所以他们可能工作或不在不同的浏览器。

一种这样的黑客可以是一个背景设定为<a/>元件,以抵消文本,到溢流设置为隐藏,并设置固定宽度:

a{ 
    padding-left:16px; 
    overflow:hidden; 
    display:block; 
    width:16px; 
    height:16px; 
    url(../images/16by16.png) no-repeat left top;} 

<a href="...">English</a> 
+0

你好MainMa,我应该在哪里放这个IMG?谢谢 – q0987 2010-09-08 02:10:46

+0

他们不是'黑客'的任何定义的单词 - 图像替换是一个有效的技术,是跨浏览器兼容和广泛使用 – 2010-09-08 02:15:40

+0

你好MainMa,请检查这个图像http://i52.tinypic.com/245hax1 .png正如你所看到的,当鼠标悬停在图像上时,会出现白色背景。你知道如何解决这个问题吗?谢谢 – q0987 2010-09-08 02:17:07

3

改为将该CSS改为<a>。添加一个display: block,这样它将显示为块级元素,如<div><div>将扩大到适合<a>

编辑:尝试inline-block而不是看看是否有帮助。

#tab-ver.tab a { 
    display: inline-block; 
    background: url(../images/16by16.png) no-repeat center center; 
    text-indent: -10000em; 
    height: 16px; 
    width: 16px; 
    padding: 4px 1px; 
    margin-right: 1px; 
    margin-left: 50px; 
} 
+1

或者只是使用' img'标签 - 取决于什么'16x16。png'当然是 – 2010-09-08 01:14:24

+0

Hello BlotClock,#tab-ver是我用于页面的水平菜单之一。在我采纳你的建议后,英文和图像一起出现。任何修复?谢谢 – q0987 2010-09-08 01:16:29

+0

+1好的解决方案。但是它会增加你的可点击区域,所以如果这不是你想要的,你将不得不把填充放在'div'上。 – jeroen 2010-09-08 01:17:26

1

你可以有a标签使用填补了DIV:

a { 
    display: block; 
    height: 16px; 
} 

然后,您可以也从div删除height,因为它会自动增长。

+0

你好jeroen,1>我想隐藏文字2>我想让图像可点击。 3> DIV是页面上的水平菜单之一。谢谢 – q0987 2010-09-08 01:20:18

+0

当你尝试我的答案时会发生什么? – jeroen 2010-09-08 01:28:37

+0

当我使用'display:block'时,它打破了我的水平菜单布局。谢谢 – q0987 2010-09-08 02:18:07

相关问题