效果图如图1所示:(简单示范,有点丑,莫介意)
PS:兼容IE,FF , chrome ,360安全浏览器
先讲下原理吧,如图2所示:

这个div的样式如下所示:

div{
width: 0px;
height: 0px;
border-width: 20px;
border-style: solid;
border-color: lightgreen pink yellow lightblue;
}
解释:当div的宽高为0时,设border的宽度并设颜色,会发现div像是被分割为4个小三角形,
           因此当我们要其中一个小三角时,只需要将其它三个隐藏即可(方法:把那三条边颜色设为transparent即可)。
 
上三角:(图3
 
对应的CSS代码:
 
#triangle{
width: 0px;
height: 0px;
border-width: 20px;
border-style: solid;
border-color: transparent transparent yellow transparent;
}
 
为了让它尽可能适应各种浏览器,我们多添加几行代码(主要是解决IE的兼容问题):
 #triangle{
width: 0px;
height: 0px;
*width: 40px;
*height: 40px;
font-size:;
line-height:;
overflow: hidden;

border-width: 20px;
border-style: dashed dashed solid dashed;
border-color: transparent transparent yellow transparent;

}
解释:
①border-color: transparent transparent yellow transparent;
    因为我们要的是上三角,根据图2,我们要保留的是下边框,故把其他三条边设为transparent;
②border-style: dashed dashed solid dashed;
    把其他三边设为dashed,是因为IE6不支持透明属性transparent,故我们把其它三边的样式设为
    dashed,dashed在边框宽度很大时,会隐藏。(因为我的电脑没有ie6,所以没有实践过,这一点有点抱歉)
③font-size: 0;    line-height: 0;    overflow: hidden;
    如果不加这三句,会出现以下效果:
即在IE下,出现的不是三角形,而是梯形。
④最后多加了两句css hack:  *width: 40px;     *height: 40px;
    当时用IE测试效果时,我发现根本找不到小三角,在网上搜各种博客也搜不到相关问题,后来随手加了句
    width&height的样式,小三角就出现了,感觉应该是在IE下,div的宽高是包括border的(对于这点还是不太懂,希望有大牛给予解答)。
    为了解决IE下的这个问题,我最后就加了这两句css hack。如果觉得不保险,还可以再加上" _width: 40px;     _height: 40px;"
PS: ① IE6和IE7能识别"*",IE6能识别"_",具体搜索“CSS hack”。
      ② *width应设为 border-width 的两倍,*height同理。
 
对于下三角,左三角,右三角,只需改变上三角中的两句CSS即可,其他无需改变,改变的代码分别如下所示。
下三角:
border-style: solid dashed dashed dashed;
border-color: lightgreen transparent transparent transparent;
左三角:
border-style: dashed solid dashed dashed;
border-color: transparent pink transparent transparent;

右三角:

border-style: dashed dashed dashed solid;
border-color: transparent transparent transparent lightblue;
最后,给出效果图1的代码:
 /* css */
*{
margin: 0px;
padding: 0px;
text-align: center;
}
#container{
position: relative; //这句很重要,因为小三角是相对父元素#container来绝对定位的
width: 50px;
height: 40px;
border:1px solid lightblue;
margin: 200px auto;
padding: 20px; }
#chat{
width: 50px;
height: 40px;
background-color: lightblue;
}
#triangle{
position: absolute; //设置小三角绝对定位
width: 0px;
height: 0px;
*width: 14px;
*height: 14px;
font-size:;
line-height:;
overflow: hidden;
border-width: 7px;
border-style: dashed dashed dashed solid;
border-color: transparent transparent transparent lightblue;
top: 33px; //33px:父元素#container的内边距20px + #chat宽度的一半20px - 自身元素#triangle的边宽7px =33px
left: 70px; //70px: #chat的宽度50px + 父元素#container的内边距20px =70px
}
 
/* html代码 */
<div id="container">
<div id="chat"></div>
<div id="triangle"></div>
</div>
如有不足之处,欢迎批评建议,  O(∩_∩)O谢谢
 

css实现小三角(原理)的更多相关文章

  1. CSS的小三角

    上三角▲ width: 0; height: 0; line-height: 0; font-size: 0; border-width: 10px; border-style: solid; bor ...

  2. css制作小三角

    视觉稿中经常有些小三角,如下图.每次用图片做太不方便了,我们看看用css实现的效果(支持ie6,7哦) <style> /*border实现三角*/ /*箭头向上*/ .arrow-top ...

  3. 用CSS制作小三角提示符号

    今天在项目中遇到了如下图的切图要求. 对,重点就是那个小三角提示符号. html 结构如下 <div class="wrap"> <div class=" ...

  4. CSS实现小三角小技巧

    <style> .box{ width: 20px; height: 20px; background-color: #424; border: 10px solid #9C27B0; b ...

  5. CSS生成小三角

    前言:小三角的应用场景:鼠标移动到某个按钮上面,查看信息详情时,信息详情弹出框有时候会需要一个小三角. 代码如下: <div id='triangle'></div> #tri ...

  6. 纯css制作小三角

    在网站制作的过程中常涉及一些小图标,以前大部分会采用小图片.但有了css3后很多变得方便了,比如要在li列表的每行文字的前面加个小三角,可以这么写: <!DOCTYPE html> < ...

  7. css的小三角实现的方式

    先上一个简单的例子哈: 此时的方向向下. 如果想方向向上的话用:border-top:0;border-bottom:4px solid; 1. width:0 height:0 border宽度,颜 ...

  8. css 兼容小三角

    <!DOCTYPE><html ><head><meta http-equiv="Content-Type" content=" ...

  9. css实现小三角效果

    <!DOCTYPE html><html><head><meta charset="UTF-8"> <title>新闻标 ...

随机推荐

  1. 学习nodejs有感

    接触nodejs一段时间了,不断的去接触接触,nodejs是一个能让前端程序员做后台开发的一项技术.  随着学习,让我更好的理解了前后端,以及浏览器是如何运作的

  2. 今日提及之动画animation

    今天没有说什么内容,只是对HTML5的细节补充,如HTML结构的可以省略到最大的地步 <!DOCTYPE html><meta charset="UTF-8"&g ...

  3. dd

    1.属性 关键:get,set public class Account { private string id; private decimal money; public string Id { ...

  4. ie6 z-index不起作用的解决方法

    一.概念 z-index伴随着层的概念产生的.网页中,层的概念与photoshop或是flash中层的概念是一致的.熟悉photoshop或是flash的应该知道,层级越高(图层越靠上),越在上面显示 ...

  5. Dnsmasq安装与配置

    默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...

  6. css3使用技巧:细线边框的3种不同的写法

    一般的app边框描边的线都小于一像素,那么我就像往常一样直接描了1px的边框,虽然是1px可是结果和app里的描边完全不一样“粗了”,所以就在网找了一下看看有没有解决方法,可是找了一会没找到,那咋办, ...

  7. Android仿微信二维码扫描

    转载:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一 ...

  8. Mac OS apache php配置

    1.进入Apache配置文件sudo vi /etc/apache2/httpd.conf    找到#LoadModule php5_module libexec/apache2/libphp5.s ...

  9. javascript中函数声明和函数表达式浅析

    记得在面试腾讯实习生的时候,面试官问了我这样一道问题. //下述两种声明方式有什么不同 function foo(){}; var bar = function foo(){}; 当初只知道两种声明方 ...

  10. vmware安装win7提示No CD-ROM drive to use:GCDROM not loaded

    今天安装win7 64位的操作系统到vmware虚拟机,以为一切事如此的简单,因为自己以前经常拿vmware来装系统,结果确出现下面莫名其妙的错误: 提示说没有CD-ROM,可是我明明在vmware的 ...