首頁  >  文章  >  web前端  >  詳解使用CSS氣泡框實現方法

詳解使用CSS氣泡框實現方法

高洛峰
高洛峰原創
2017-03-27 09:50:141928瀏覽

气泡框(或者提示框)是网页中一种很常见的元素,大多用来展示提示信息,如下图所示:

詳解使用CSS氣泡框實現方法

拆分来看,形如这种气泡框无外乎就是一个矩形框+一个指示方向的三角形小箭头,要制作出这样的气泡框,如果解决了三角形小箭头就容易了。一种方法就 是制作这样一个三角形箭头的图片,然后定位在矩形框上。但这种解决办法在后期更改气泡框会很不方便,可能每修改一次气泡框都要重新制作一个三角形小图标。 如果我们能够直接用HTML和CSS代码实现这样一个三角形小箭头一切都迎刃而解了。

1、把div的width和height都设为0,四边都形成三角形。

# test{width:0; height:0; border-width:75px; border-style:solid; border-color:#09F #990 #933 #0C9;}

詳解使用CSS氣泡框實現方法

2、在主流浏览器中检测一下,发现IE6中存在一个小问题,上下边能形成三角形,左右两边仍然还是梯形。

詳解使用CSS氣泡框實現方法

解决:把div的font-size和line-height都设为0的,此时,div的四边在IE6下都能形成完美的三角形。

#test{ width:0; height:0; border-width:75px; border-style:solid; border-color:#09F #990 #933 #0C9; font-size:0; line-height:0;}

詳解使用CSS氣泡框實現方法

3、我们只需要其中的一个三角形,那么只需要将其他三边的color设置为透明或者跟页面背景一样的颜色,就能模拟出一个三角来,推荐将其他三边颜色设置为透 明,即color的值为transparent,如果其他三边颜色跟页面背景一样,虽然视觉上只能看到一个三角,但背景颜色一旦改变,其他三边颜色也要随 之改变。

#test{ width:0; height:0; border-width:75px; border-style:solid; border-color:#09F transparenttransparent; font-size:0; line-height:0;}

詳解使用CSS氣泡框實現方法

4、在IE6下transparent无效,其他三边被设置成默认的黑色了。

詳解使用CSS氣泡框實現方法

解决:把border-style设置为dashed后,IE6下其他三边就能透明了。

 5、到这一步我们已经成功的模拟出了一个小三角,下一步我们把这个小三角同矩形框结合起来。先设置一个矩形框,然后把小三角定位到矩形框上。先来写出HTML结构:

         

      CSS气泡框实现

.tag{ width:300px; height:100px; border:5px solid #09F; position:relative;}

#.20p{display:block; border-relative;}

.20p{display:block; border-width:20pxxx; position:absolute; bottom:-40px; left:100px;border-style:solid dashed dashed; border-color:#09F transparent transparent;font-size:0;#-height:0;## 詳解使用CSS氣泡框實現方法

##6、

現在指示方向的三角形箭頭是實心的,而我們想要的是鏤空的效果,這裡我們再疊加一個同氣泡框背景顏色一樣的小三角,然後把這個疊加的小三角形移動一下位置就能達到了。

首先需要調整HTML結構,如下:
##

         

詳解使用CSS氣泡框實現方法

詳解使用CSS氣泡框實現方法C

      CSS氣泡框實作

CSS樣式修改為:

.tag{tag width:300px; height:100px; border:5px solid #09F; position:relative; background-color:#FFF;}

#.tag em{display:block;):border-wid. ; bottom:-40px; left:100px;border-style:solid dashed dashed; border-color:#09F transparent transparent;font-size:0;taganline-height:0;}

# display:block; border-width:20px; position:absolute; bottom:-33px; left:100px;border-style:solid dashed dashed; border-color:#FFF transparfont-transpar0; 0;}

注意:疊加的小三角span的bottom值並不是border-width的值,兩個小三角bottom的差值理論上應該是2( border-width)2的平方根。

最後來把程式碼優化一下,以便在後期更容易維護,完整的HTML結構:

 

     

#o>詳解使用CSS氣泡框實現方法

#o######CSS樣式修改為:######.tag{ width:300px; height:100px; border:5px solid #09F; position:relative; background-color:#FFF;}######.arrow{ position:absolute; width:40px; height:40px; ######.arrow *{ display:block; border-width:20px; position:absolute; border-style:solid dashed dasheddashed; font-size:0; line-height:0; }#####; }####; #.arrow em{border-color:#09F transparent transparent;}######.arrow span{border-color:#FFF transparent transparent; top:-7px;}########## ##

以上是詳解使用CSS氣泡框實現方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn