利用border和伪类画出三角形 ps:好久没写博客了。。。

  有一个半月没有写博客了,这段时间,小哥我经历了自入行前端最为黑暗的时期,迷茫,空虚,不想写代码,不想做研究了。连打游戏都没有兴趣,如同行尸走肉一般。还好,毕业论文的初稿完成后,整个时间段最恶心最难熬的部分已经过去了,于是乎,小哥我满血复活,继续在前端中挥舞着大宝剑,砍怪升级。

  之前看极客学院的幽灵按钮视频,发现了他们在做tooltip提示框的时候,利用span标签在div下方定位一个小的三角形,至于形状的做法,利用border来实现。具体做法是:以向下三角形为例,将span的border设一个高的值,其颜色设为transparent,并将border-top设为自己需要的颜色,宽和高都设为0px。这样这个三角形就完成了,接下来只要用position定位将它定位到我们设想的位置就可以了。

  今天,在做一个移动端应用的时候,又碰到了这个问题,突然想起了之前一道百度的面试题,也是用html和css实现这样的小三角形。这次,我通过after伪类来实现。

  

<!DOCTYPE html>
<html>
<head>
    <style>
        div{
            width: 100px;
            height: 100px;
            border: 1px solid #000000;
        }
        div:before, div:after{
            content: ""; 
            width: 0px;
            height: 0px;
            position: absolute;
            top: 40px;
            left: 109px; 
            border: 10px solid transparent;
            border-left-color: #ffffff;
        }
        div:before{
            top: 39px;
            border: 11px solid transparent;
            border-left-color: #000000;
        }
    </style>   
</head>
<body>
    <div></div>
</body>
</html>

  效果图如下:

  这里的三角形,我用了before和after两个伪元素后,将其重叠在一起,并且两个伪类的border值相差为1px,这样正好组成上图这样的效果。

  前端路漫漫啊,小哥还要继续努力,把这个方法发布上来是为了跟大家一起分享。更主要是为了给自己记个笔记,免得自己再碰到这种情况时忘记怎么做,让自己早日摆脱前端小白的窘境。

 

posted @ 2015-01-23 15:59  哥斯拉用爪子敲代码  阅读(1146)  评论(0编辑  收藏  举报