【制作CSS气泡框】

气泡状文本框,是一种很生动的网页设计手段。它可以用来表示用户的发言…

大家好,又见面了,我是全栈君。

气泡状文本框,是一种很生动的网页设计手段。


它可以用来表示用户的发言。

【制作CSS气泡框】

也可以用来作为特定信息的提示符。

【制作CSS气泡框】

DVD租借网站Netflix,还用它显示碟片的详细信息。

【制作CSS气泡框】

=========================

制作CSS气泡框的传统方法,需要5张背景图片,分别是:

  * 【制作CSS气泡框】 tl.gif,左上方的圆角。
  * 【制作CSS气泡框】 tr.gif,右上方的圆角。
  * 【制作CSS气泡框】 bl.gif,左下方的圆角。
  * 【制作CSS气泡框】 br.gif,右下方的圆角。
  * 【制作CSS气泡框】 angle.gif,突出的三角形。

现在假定有这样一段代码:

  <blockquote>床前明月光,疑是地上霜。</blockquote>

  <p>李白</p>

我们希望通过气泡框,产生一种视觉效果,将李白与诗句对应起来。

【制作CSS气泡框】

那么,首先需要为诗句添加四个”钩子”(handler):

  <div class=”tl”>
   <div class=”tr”>
    <div class=”br”>
     <div class=”bl”>
      <blockquote>床前明月光,疑是地上霜。</blockquote>
     </div>
    </div>
   </div>
  </div>

然后,为最外面的容器div.tl指定高度和宽度,使它形成一个视觉方框:

  .tl{
    width:300px;
    height:50px;
    text-align:center;
    line-height:50px;
  }

接着,为四个”钩子”依次添加四个不同的圆角背景:

  .tl{background:url(“tl.gif”) top left no-repeat #ff8c45;}
  .tr{background:url(“tr.gif”) top right no-repeat;}
  .bl{background:url(“bl.gif”) bottom left no-repeat;}
  .br{background:url(“br.gif”) bottom right no-repeat;}

最后,在”李白”前面加上三角形图片。

  p{
    padding: 15px 0px 0px 50px;
    background: url(“angle.gif”) 40px top no-repeat;
  }

气泡框就生成了。

这种方法的优点是所有浏览器都支持,缺点是比较麻烦,必须制作专门的图片,增加多余的标签,代码的灵活性较小。

============================

随着CSS3的出现,现在有了更好的方法,不需要任何背景图片和多余的标签,就能生成漂亮的文本框。

请看新方法发明人Nicolas Gallagher制作的范例:

【制作CSS气泡框】

【制作CSS气泡框】

由于这种方法用到了CSS3,所以IE6不支持,IE7和IE8无法显示圆角效果。其他浏览器的最新版本,都能够正常显示。

还是以前面的代码为例。

  <blockquote class=”bubble”>床前明月光,疑是地上霜。</blockquote>

第一步,生成基本的方框。

  .bubble{
    position:relative;
    padding:15px;
    margin:1em 0em 3em;
    width:300px;
    line-height:1.2;
    text-align:center;
    color:#fff;
    background:#075698;
  }

【制作CSS气泡框】

第二步,生成圆角。

  .bubble{
    -moz-border-radius:10px;
    -webkit-border-radius:10px;
    border-radius:10px;
  }

【制作CSS气泡框】

第三步,制作线性渐变的效果。

  .bubble{
    background:-webkit-gradient(linear, left top, left bottom, from(#f9d835), to(#f3961c));
    background:-moz-linear-gradient(top, #f9d835, #f3961c);
    background:-o-linear-gradient(top, #f9d835, #f3961c);
    background:linear-gradient(top, #f9d835, #f3961c);
  }

【制作CSS气泡框】

第四步,在容器后面添加一个空元素,并将长度和宽度都设为0。

  .bubble:after {
    content:”0a0″;
    width:0;
    height:0;
  }

第五步,指定这个空元素为块级元素,并且四个边框之中,只显示上方的边框,其他三个边框,都设为透明。因为该元素的大小为0,所以它的每一个边框,都是一个等腰三角形。

  .bubble:after{
    display:block;
    border-style:solid;
    border-width:15px;
    border-color:#f3961c transparent transparent transparent;
  }

这时,已经可以看见这个三角形了(其实是一个上边框)。

【制作CSS气泡框】

第六步,指定空元素的定位方式为absolute。然后,以容器元素的左下角为基点,将空元素水平右移一定的距离(这里是50像素),再垂直下移两个边界的距离。(由于第五步将空元素的边界设为15像素,所以这里就是下移30像素。)

  .bubble:after{
    position:absolute;
    z-index:-1;
    bottom:-30px;
    left:50px;
  }

至此,一个不需要任何背景图片和多余标签的气泡框,就出现在我们眼前了。

【制作CSS气泡框】

灵活处理空元素的边框,或者改变大小,或者生成圆角,或者将两个空元素的边框重叠,就会产生各种各样的变化。具体的效果和代码,请参考Nicolas Gallagher的范例页。

(完)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120836.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 《书谱》(书法理论知识)

    ٩(๑•ㅂ•)۶  夫自古之善书者,汉魏有钟、张之绝,晋末称二王之妙。王羲之云:“顷寻诸名书,钟张信为绝伦,其余不足观。”可谓钟、张云没,而羲、献继之。又云:“吾书比之钟张,钟当抗行,或谓过之。张草犹当雁行。然张精熟,池水尽墨,假令寡人耽之若此,未必谢之。”此乃推张迈钟之意也。考其专擅,虽未果于前规;摭以兼通,故无惭于即事。  评者云:“彼之四贤,古今特绝;而今不逮古,古质而今研。”夫质以代兴,妍因俗易。虽书契之作,适以记言;而淳醨一迁,质文三变,驰鹜沿革,物理常然。贵能古不乖时,今不同弊,所谓“文质彬

    2022年4月13日
    41
  • java文件转码工具-native2ascii.exe命令简介

    java文件转码工具-native2ascii.exe命令简介native2ascii.exe简介java的转码工具,需要java.dll动态库和相关程序才能执行。native2ascii.exe是Java的一个文件转码工具,是将特殊各异的内容转为用指定的编码标准文体形式统一的表现出来,它通常位于JDK_home\bin目录下,安装好JavaSE后,可在命令行直接使用native2ascii命令进行转码。JDK自带的工具native2ascii可以将uncode编码的文件转换为本地编码的文件,但是不能批量转换文件。native2ascii.

    2025年9月4日
    6
  • Androidclient和server第一种方法端数据交换

    Androidclient和server第一种方法端数据交换

    2021年12月31日
    38
  • SSM整合(狂神版)

    SSM整合(狂神版)SSM整合数据库环境环境依赖pom.xml建立基本结构mybatis-config.xmlapplicationContext.xml数据库环境CREATEDATABASE`ssmbuild`;USE`ssmbuild`;DROPTABLEIFEXISTS`books`;CREATETABLE`books`(`bookID`INT(10)NOTNULLAUTO_INCREMENTCOMMENT’书id’,`bookName`VARCHAR(100)NO

    2022年5月7日
    47
  • pycharm中使用anaconda部署python环境_如何创建lamp环境

    pycharm中使用anaconda部署python环境_如何创建lamp环境pycharm配合anaconda使用,在pycharm中选择anaconda创建的环境

    2022年8月28日
    4
  • bat中使用mshta调用vbs语句获取精准计算的日期

    bat中使用mshta调用vbs语句获取精准计算的日期1.在bat中,获取指定的日期格式是比较麻烦的。因为cmd环境中,日期格式随着系统的时间格式设置而变化,通常系统默认的时间格式是“\’”符号作为连接符。日期通常用在文件名上,比如日志的文件名。那么日期的格式就只能用“-”符号代替,更改系统日期格式会显得容易被外界因素改变,导致不稳定。当然也可以用bat中的set来进行替换,但这样费代码量。2.对于计算日期来说,bat是难以准确做到的,也需要堆积代码量才能完成。特别是到了每个月的一号时,无法确定昨天是否是31号还是30号还是28号。那么bat就只能陷入迷茫

    2025年6月7日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号