请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 11967|回复: 32

[教程] 用css模拟title和alt的提示效果 [复制链接]

Satellite 楼主
帖子
432
体力
38
威望
11
发表于 2006-9-26 23:14:54 |显示全部楼层
这段时间写了很多页面代码,除了一些知识重复以外,也学到css的一些新东西,或许是旧东西,但是还是希望能对大家有用。

其实在css里面有很多对a的样式应用,因为a标签是仅有的默认可以触发动作的标签,因此在很多时候可以用css来控制a达到js才能达到的效果,比如今天要介绍的css仿title和alt的提示效果:

先来分析一下这种效果的特点,无非就是在鼠标悬停的时候出现一个包含介绍文字的提示层,如果用传统的javascript来实现,就要设置对象的onmouseover和onmouseout属性,而如果把对象看作是a属性中的link和hover的话,这个问题就更清晰了,因为只要把对象的link属性设置为隐藏提示层、hover属性设置为呈现提示层即可,那么这个提示层的位置究竟在哪里呢?当然是在a标签中间了,目前常用的办法是把提示内容放在span标签中间进而包含在a标签内部,然后设置a:link和a:hover下不同的span样式即可。

下面结合代码给大家说一下这个简单的原理:
  1. <style>
  2. .info {position:relative;background:#fff;color:#666; text-decoration:none;font-size:12px;width:150px;text-align:center;border:1px solid #ccc;height:25px;line-height:25px;}/*设置链接的属性,一定要设置为relative才能使提示层跟着链接走*/
  3. .info:hover {background:#eee;color:#333;}
  4. .info span {display: none }/*设置正常下的span为隐藏状态*/
  5. .info:hover span /*设置hover下的span属性为呈现状态,并设置提示层的位置*/{display:block;position:absolute;top:30px;left:60px;width:130px;border:1px solid #ff0000; background:#fff; color:#000;padding:5px;text-align:left;}
  6. </style>
  7. <body>
  8. <a class="info" href="http://www.achome.cn">www.achome.cn<span>这是我的个人blog,里面有一些网站设计和制作的东东</span></a>
  9. <a class="info" href="http://www.achome.cn">www.achome.cn<span>这是我的个人blog,里面有一些网站设计和制作的东东,希望大家常来交流</span></a>
  10. <a class="info" href="http://www.achome.cn">www.achome.cn<span>这是我的个人blog,里面有一些网站设计和制作的东东,希望大家常来交流</span></a>
  11. <a class="info" href="http://www.achome.cn">www.achome.cn<span>这是我的个人blog,里面有一些网站设计和制作的东东,希望大家常来交流</span></a>
  12. <a class="info" href="http://www.achome.cn">www.achome.cn<span>这是我的个人blog,里面有一些网站设计和制作的东东,希望大家常来交流</span></a>
  13. </body>
复制代码

效果观看:

 提示:您可以先修改部分代码再运行

已有 1 人评分威望 收起 理由
greengnn + 3 鼓励原创,不错加油

总评分: 威望 + 3   查看全部评分

西部数码顶级域名注册商39元抢注!

蓝色怪兽

荣誉管理

帖子
4347
体力
14380
威望
69
居住地
香港特别行政区 湾仔区
发表于 2006-9-27 07:35:26 |显示全部楼层
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

帖子
1259
体力
3018
威望
3
发表于 2006-9-27 11:19:05 |显示全部楼层
不错,顶一下!简单实用。

使用道具 举报

lscn 

拎着猫的耗子

银牌会员

帖子
364
体力
1523
威望
0
居住地
山东省 青岛市
发表于 2006-9-27 20:29:58 |显示全部楼层
最近很流行这个效果...

使用道具 举报

ejan 
帖子
71
体力
67
威望
2
居住地
大洋洲 澳大利亚
发表于 2006-9-28 03:51:26 |显示全部楼层
不错,以前用js弄过一个,麻烦

使用道具 举报

Satellite 楼主
帖子
432
体力
38
威望
11
发表于 2006-9-28 10:16:29 |显示全部楼层
其实也可以用这个来做二级甚至三级菜单

使用道具 举报

帖子
15
体力
35
威望
0
发表于 2006-9-28 17:44:33 |显示全部楼层
其实简单的说就是利用display属性来控制容器是否显示

使用道具 举报

帖子
23
体力
105
威望
0
居住地
河南省 平顶山市
发表于 2006-10-20 13:51:41 |显示全部楼层

 提示:您可以先修改部分代码再运行



问题1:position的用法还是不很清楚,那位老哥能举个例子么?
问题2:为什么只能列出一个?

[ 本帖最后由 welovemsn 于 2006-10-20 13:58 编辑 ]

使用道具 举报

wgh001 
帖子
373
体力
752
威望
1
居住地
福建省 厦门市
发表于 2006-10-20 13:56:56 |显示全部楼层
不错,虽然以前有看过,但还是要支持一下楼子

使用道具 举报

蓝星国度

高级会员

帖子
271
体力
771
威望
38
居住地
台湾省 台北县
发表于 2006-10-20 14:15:05 |显示全部楼层

 提示:您可以先修改部分代码再运行



回樓上的老兄:可以列出兩個以上阿~為何不行
把.ao的position改成relative就行了
逝者已矣,來者可追,真的沒有什麼。

使用道具 举报

帖子
23
体力
105
威望
0
居住地
河南省 平顶山市
发表于 2006-10-20 14:55:32 |显示全部楼层
谢谢k236740,一语惊醒迷中人啊。

使用道具 举报

帖子
82
体力
197
威望
0
居住地
广东省 深圳市
发表于 2006-10-23 09:51:45 |显示全部楼层
效果很不错,支持原创!

使用道具 举报

mallee 

老李飞砖

银牌会员

帖子
662
体力
2394
威望
2
居住地
河北省 秦皇岛市
发表于 2006-10-24 15:08:24 |显示全部楼层
好用哦!

使用道具 举报

帖子
35
体力
122
威望
0
发表于 2006-10-28 21:16:34 |显示全部楼层
why not use tag

"<acronym></acronym>"

description:

"The <acronym> tag indicates that the enclosed text is an acronym, an abbreviation formed from the first letter of each word in a name or phrase, such as HTML or IBM. Like <abbr>, the popular browsers don't appear to change the display of the <acronym> content-based style tag. "
----------<<Oreilly.HTML.And.XHTML.The.Definitive.Guide.5th.Edition.>>



  1. <body>
  2. <acronym title="这是我的个人blog,里面有一些网站设计和制作的东东"><a href="http://www.achome.cn">www.achome.cn</a></span></acronym>
  3. </body>
复制代码

 提示:您可以先修改部分代码再运行

不一样蚊子

使用道具 举报

帖子
35
体力
115
威望
0
发表于 2006-10-31 15:22:46 |显示全部楼层
其实让最后的用层飘起来就可以了~ (相对定位还是有问题,当2行时候,内容会在菜单底下,就是因为前面设置的相对了)


 提示:您可以先修改部分代码再运行




::下面的去掉了position:relative ::


 提示:您可以先修改部分代码再运行



好像还不完美,还有一些问题,这个办法只能解决一部分问题,这样的提示层很难做到通吃:(~~~~~~

[ 本帖最后由 yunduan 于 2006-10-31 15:32 编辑 ]
1234567890

使用道具 举报

clovey 

黑屋子里躲猫猫

高级会员

帖子
1464
体力
1171
威望
0
发表于 2006-10-31 18:59:15 |显示全部楼层
ls的第二个方法解决了解释层被遮挡住的问题
不过这些问题我一向都觉得好难搞懂

使用道具 举报

esnak 
帖子
370
体力
1242
威望
0
发表于 2006-10-31 20:33:55 |显示全部楼层
不知道控制alt还有什么更好更通用的方法没有。。。。
jgwy-esnak

使用道具 举报

blank 

怿飞

荣誉管理

帖子
2375
体力
12545
威望
125
居住地
浙江省 杭州市
发表于 2006-11-1 00:09:00 |显示全部楼层
原帖由 yunduan 于 2006-10-31 15:22 发表
其实让最后的用层飘起来就可以了~ (相对定位还是有问题,当2行时候,内容会在菜单底下,就是因为前面设置的相对了)


<style type="text/css">
.info {position:relative;background:#ff ...


你所说的情况可以设置“info“和“info:hover”的z-index属性解决,只需要让“info:hover”的z-index值大于“info”的z-index值就可以!!

 提示:您可以先修改部分代码再运行

个人Blog:PlanABC   团队Blog:淘宝UED  专注Web前端技术!

使用道具 举报

ariex 

Dreamlessness

钻石会员

帖子
4960
体力
13275
威望
11
居住地
大洋洲 澳大利亚
发表于 2006-11-1 00:22:24 |显示全部楼层
LZ的效果在Opera里面显示有问题,似乎从第二个开始的tip曾都被什么覆盖掉了。。。嗯,是否是Opera不标准所致?

使用道具 举报

blank 

怿飞

荣誉管理

帖子
2375
体力
12545
威望
125
居住地
浙江省 杭州市
发表于 2006-11-1 00:31:07 |显示全部楼层
15楼的第2种方法是错误的解决方法!

[ 本帖最后由 blankzheng 于 2006-11-1 00:44 编辑 ]
个人Blog:PlanABC   团队Blog:淘宝UED  专注Web前端技术!

使用道具 举报

wgh001 
帖子
373
体力
752
威望
1
居住地
福建省 厦门市
发表于 2006-11-1 08:59:49 |显示全部楼层
哈哈,学习中呀

使用道具 举报

帖子
35
体力
115
威望
0
发表于 2006-11-1 10:49:25 |显示全部楼层
原帖由 blankzheng 于 2006-11-1 00:31 发表
15楼的第2种方法是错误的解决方法!


郁闷,错再那里哦~~~ 说一下看看? 你弄的优先级别我明白~~~~~ 不过我的代码好像简洁,不加相对定位也没有问题,也少加2个优先级,(最后的绝对定位,也要少了TBLR)。

之前说的相对有问题好像说错,我的意思是代码可以更简单!
1234567890

使用道具 举报

blank 

怿飞

荣誉管理

帖子
2375
体力
12545
威望
125
居住地
浙江省 杭州市
发表于 2006-11-1 13:31:24 |显示全部楼层
回楼上,我说是错误的解决方法,只是解决方法不好!!

下面解释一下为什么这样说:

如果你把你两段代码中.info:hover span的marigin属性去掉,加上top:0;left:0;你会发现有所区别。

当然这和position:relative|相对定位有关:

如果用到相对定位,紧随他的层div2是不会出现在div1的下方,而是和div1在同一个高度出现。


你会发现只有定义了position:relative你才能对漂浮的提示位置进行比较准确简便的定位!

对于这个你可以自己测试一下你第二种代码,定位是不是很麻烦,至于在其他浏览器的兼容问题暂时没有进行测试,到底第二段代码时候能用!

[ 本帖最后由 blankzheng 于 2006-11-1 13:34 编辑 ]
个人Blog:PlanABC   团队Blog:淘宝UED  专注Web前端技术!

使用道具 举报

帖子
35
体力
115
威望
0
发表于 2006-11-3 10:30:52 |显示全部楼层
我说相对定位还是有问题!
你说只是解决方法不好!
————————————————————
其实都一样,我再详细解释一下:

1. 去掉了position:relative,在去掉TBLR,这样的话,最后飘起来的层是以他的父层左上角为原点(所以是能跟着飘的),因此我加上MARGIN来控制位置。

2. 因为加上了position:relative,我对这个很反感,因为他不是很好用,有时候在具体开发上,(父层加上position:relative,可能会有问题) 或者根本就能不要的!

总结:所以我个人喜欢第一个,简单!
1234567890

使用道具 举报

月亮上的狗

银牌会员

帖子
745
体力
2627
威望
0
居住地
江苏省 苏州市
发表于 2006-11-3 18:47:19 |显示全部楼层
效果不错 不过感觉列向排列会覆盖提示层的问题没有解决...

使用道具 举报

SoftHt 

土豆小子

中级会员

帖子
175
体力
319
威望
0
发表于 2006-11-3 18:57:12 |显示全部楼层
真不错!

使用道具 举报

帖子
77
体力
158
威望
0
发表于 2006-11-3 19:00:49 |显示全部楼层
不错。学习学习~~~
Maxspeeds.com

使用道具 举报

gy132 
帖子
19
体力
47
威望
0
发表于 2007-3-9 15:51:21 |显示全部楼层
我的这个怎么不行呢?
郁闷。

 提示:您可以先修改部分代码再运行

使用道具 举报

gy132 
帖子
19
体力
47
威望
0
发表于 2007-3-9 15:54:26 |显示全部楼层
难道真的要像书上 说 要设置 .info:hover 里的
font-size为100% ,
但是我不想让 字体的大小变化么

使用道具 举报

帖子
1163
体力
4277
威望
0
发表于 2007-3-9 22:37:32 |显示全部楼层
郁闷,可多地方都有,我见过的不下三次
忍受。一定要学会忍受。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 10:50 , Processed in 0.222083 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部