div+css实现带三角箭头提示框

链接:http://www.xuebuyuan.com/160534.html
链接:http://www.admin10000.com/document/4089.html

带三角箭头的提示框,就是下面所示:

 
 

这是一个提示框

通常我们都用图片来实现上面那个小三角,因为这样方便快速,但是如果图片处理得不好,会看起来有杂边,从而影响视觉,所以换一种思路来解决。

首先来研究一下CSS是如何实现三角形的。

假定有一个盒子(div),给定宽高分别为100像素,再给定边框50像素,那么它看起来会是下面这个样子(为了更直观,给了边框四种不同的颜色):

 

接下来,把盒子的高度设为0:

 

再把宽度也设为0:

 

这样雏形就已经出来了,由于IE6的bug(高度为0的div会有一定默认的高度,我的电脑上测量结果为19像素),需要做一些小调整,给div加一个overflow:hidden,IE6就能正确解析了。

接下来的工作就是去掉其余的三个边框。以向上箭头为例,假如我想让箭头朝上,那么就需要将左、上、右三条边框的颜色给去掉。一个常规的方法是将这三条边框的颜色设为透明,即transparent属性。

border-color:transparent transparent #056F61

设置以后可以看到如下效果:

 

这样CSS制作的三角形就完成了。到这里看起来工作好像差不多可以结束的样子,还需要测试一下浏览器的兼容性,经过测试,主流浏览器都支持,但是打开IE6,结果悲催了,居然是这个样子(T-T) :

 

排查一下哪个地方出了问题,才发现原来IE6不支持transparent属性,如之奈何?前面已经做了这么多工作,总不能倒在IE6下吧。

于是上网查了一下IE6支持transparent的方法,结果是需要使用滤镜。不过这个方案肯定不行,要使用滤镜的话,还不如直接用图片。之后再研究了一下,

发现如果将其余三条边的属性由solid改为dotted或者dashed就可以了:

/*border-style:solid*/
border-style:dotted dotted solid;
border-width:50px;
border-color:transparent transparent #056f61;

这样看起来IE6就“支持”transparent属性了。为什么会这样呢?这个问题我还没搞明白。经过测试发现,如果将盒子的边框类型设置为dashed,在IE6下会有一个奇特的行为:

当盒子的宽高为100像素,边框的宽度为34像素且类型为dashed时,边框就会消失,设为33像素时又显示了,而且这个比例是一定的。

这也许就解释了为什么将边框类型改为dashed时IE6显示“正常”了。

当边框类型为dotted时,IE6显示如下:

将盒子的宽高设为0时黑点消失,此时IE6也显示“正常”了。

虽然IE6的解析可能有问题,但是总算“解决”了其不支持transparent的bug。

接下来的工作就很简单了,如法炮制一个三角形,背景和提示框一致,将其叠加到之前的三角形上,只留一像素的边,再将其定位到提示框上。

可以根据需求制作左右和下边的三角。

以上是个人的一些心得体会,如果有不对的地方还请各位指正。

用纯CSS实现的箭头的更多相关文章

  1. 使用纯CSS实现带箭头的提示框

    爱编程爱分享,原创文章,转载请注明出处,谢谢!http://www.cnblogs.com/fozero/p/6187323.html 1.全部代码 <!DOCTYPE html> < ...

  2. 纯Css绘制三角形箭头三种方法

    在制作网页的过程中少不了绘制类似图片的三角形箭头效果,虽然工程量不大,但是确实麻烦.在学习的过程中,总结了以下三种方法,以及相关的例子. 一.三种绘制三角形箭头方法 1.方法一:利用overflow: ...

  3. 纯CSS 箭头流程,网上找的,留着备用

    无意之中看到一个纯CSS做的箭头导航(流程式),收藏一下,以备不时之需 实际效果 步骤一 步骤二 步骤三 步骤四 源代码: HTML: <div class="wrapper" ...

  4. css实现带箭头选项卡

    这阵子在做一个web端项目中遇到一个问题,需要实现带箭头的选项卡点击可切换.起初没想太多,直接切一个向上的小箭头图片,外层div设置相同颜色的边框,再用相对定位和绝对定位.这种方法是可行的,但是因为手 ...

  5. css实现三角箭头(兼容IE6)

    纯css实现三角箭头有几种方式,常规的方式用css3的rotate把元素旋转45度角,无法兼容ie的主要原因是ie不支持边框透明, 第二种方法,使用chroma滤镜透明,经尝试在ie下会出现activ ...

  6. 纯CSS实现tooltip提示框,CSS箭头及形状之续篇--给整个tooltip提示框加个边框

    在前面一篇中我们介绍了纯CSS实现tooltip提示框,通俗的讲也就是CSS箭头及形状 不过注意一点是,他始终是一个元素,只是通过CSS实现的,今天我们要说的是给这个“tooltip提示框”整体加一个 ...

  7. 【技能】使用纯CSS+html写出方向箭头,简单慷慨,好看

    使用纯CSS+html写出方向箭头,贴出来就能够用,100%原创 <html> <head> <title></title> <meta http ...

  8. 纯 CSS 实现三角形尖角箭头的实例

    上次无意中发现了个使用纯 CSS 实现三角形尖角箭头的方法 http://blog.csdn.net/zhouzme/article/details/18901943 ,但没有怎么用上,也没有详细完整 ...

  9. 纯CSS箭头,气泡

    原文地址: CSS Triangles 演示地址:CSS Triangles Demo 原文日期: 2013年8月5日 翻译日期: 2013年8月9日 本文两种实现方式: 使用或不使用 before ...

随机推荐

  1. 前端测试框架Jest系列教程 -- Asynchronous(测试异步代码)

    写在前面: 在JavaScript代码中,异步运行是很常见的.当你有异步运行的代码时,Jest需要知道它测试的代码何时完成,然后才能继续进行另一个测试.Jest提供了几种方法来处理这个问题. 测试异步 ...

  2. 利用nginx实现负载均衡和动静分离

    1.Nginx介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 . Nginx 是由 ...

  3. 雅虎WEB前端网站优化 -- 34条军规

    雅虎给出了优化网站加载速度的34条法则(包括Yslow规则22条) 详细说明,下载转发 ponytail 的译文(来自帕兰映像). 1.Minimize HTTP Requests 减少HTTP请求 ...

  4. C#、Java中的一些小功能点总结(持续更新......)

    前言:在项目中,有时候一些小的功能点,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小功能点,以备用,并持续更新...... 1.禁用DataGrid ...

  5. Azure ARM (18) 将传统的ASM VM迁移到ARM VM (1)

    <Windows Azure Platform 系列文章目录> 目前很多客户陆续的把传统ASM VM迁移至ARM VM.我这里简单介绍一下. 整个迁移过程分为: 1.Validate,Az ...

  6. Xamarin.iOS + MvvmCross: UIPickerView data binding, SelectedItemChanged event

    UI initialization: _pickerView = new UIPickerView(); _pickerView.ShowSelectionIndicator = true; _pic ...

  7. TRIZ系列-创新原理-26-复制原理

    复制原理的详细表述例如以下:1)用简化的,廉价的复制品来替代易碎的或不方便操作的物体;    这样能够减少成本,提高可操作性.2)假设已经使用了可见光的复制品,那么使用红外光或者紫外光的复制品:    ...

  8. 主从DB与cache一致性

    本文主要讨论这么几个问题: (1)数据库主从延时为何会导致缓存数据不一致 (2)优化思路与方案 一.需求缘起 上一篇<缓存架构设计细节二三事>中有一个小优化点,在只有主库时,通过" ...

  9. Tkinter界面编程(一)----函数分析

    Tkinter模块是python比较常用的GUI界面设计模块,首先对相关的函数进行分析. 一 .创建根窗口相关的函数说明 import tkinter as tk top = tk.Tk() # 创建 ...

  10. 救援模式(Rescue Mode)、单用户模式(Single-User Mode)、紧急模式(Emergency Mode)的区别与联系

    前天聚餐的时候一航和启飞学长讲到RUCTF中更改root密码要进入单用户模式,我插了一句"有的系统显示的是救援模式",说完后心里一直很虚...(技术上的事还是想好再说)今天查了一下 ...