【制作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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SSM整合(1)

    SSM整合(1)一、web.xml&amp;lt;?xmlversion=&quot;1.0&quot;encoding=&quot;UTF-8&quot;?&amp;gt;&amp;lt;web-appversion=&quot;2.5&quot;xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot;xmlns:xsi=&quot;http://www.w

    2022年5月11日
    27
  • MATLAB中画折线图:plot函数的简单用法

    MATLAB中画折线图:plot函数的简单用法使用plot绘制二维图像MATLAB中plot函数常常被用于绘制各种二维图像,其用法也是多种多样,本文仅介绍plot函数的基本用法——使用plot函数绘制二维点图和线图。plot函数的一般调用形式如下:plot(X,Y,LineSpec)其中X由所有输入点坐标的x值组成,Y是由与X中包含的x对应的y所组成的向量。LineSpec是用户指定的绘图样式,主要选项如下:Specif…

    2022年6月9日
    40
  • vue 解决跨域问题(开发环境)[通俗易懂]

    vue 解决跨域问题(开发环境)[通俗易懂]一、什么是跨域问题同源:域名,协议,端口均相同不同源就是跨域,比如你的前端为localhost:9528,后端为localhost:8080,此时前端去访问后端接口就会产生跨域问题,因为端口不同。这里不详细讲,可参考百度百科-同源策略。二、如何解决跨域问题前后端都可以解决,这里仅提供vue的前端跨域解决方案:前端vue.config.js配置如下,然后保证在你访问后端接口时加个前缀/api。devServer:{port:port,open:false,ov

    2025年12月11日
    2
  • Pprof

    PprofPprof

    2022年8月1日
    6
  • ajax文件上传报400,ajax上传文件报400错误「建议收藏」

    ajax文件上传报400,ajax上传文件报400错误「建议收藏」1、ajaxjQuery.ajax({url:contextUrl+”/accidentAttachment/saveAccidentAttachment”,type:’post’,data:formData,contentType:false,processData:false,error:function(XMLHttpRequest,status){bootbox.ale…

    2025年6月1日
    4
  • 模电基础部分总结(自用)

    模电基础部分总结(自用)模电基础部分总结(自用)第一章1.1半导体基础知识1.什么是模拟信号,数字信号?答:模拟信号在时间和数值上均具有连续性,例如正弦波信号。模拟信号在时间和数值上均具有连散性,它们的数值是最小量值的整倍数,并以此倍数作为数字信号的数值。2模/数转换,数/模转换?答:模数:对模拟信号进行数字化处理时,需首先将其转换成计算机识别的数字信号。数模:计算机输出的数字信号常需转换为能够驱动负载的…

    2022年6月20日
    26

发表回复

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

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