zoukankan      html  css  js  c++  java
  • css绘制三角形原理

    1、新建一个元素,将它的宽高都设置为0;然后通过设置border属性来实现三角形效果,下面是css绘制三角形的原理:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
          .caret{
      height:0;/*将宽高都设置为0*/
      width:0;
      border:100px solid #000;
      border-color:red green yellow blue;
    }
    p{color:red;}
        </style>
    </head>
    <body>
    <div class="caret"></div>
    <p>
     将宽高都设置为0<br/>
     border-color:red green yellow blue;将变宽四个方向颜色设置成不同的颜色以便观察
    </p>
    </body>
    </html>

    效果:(为了jsfiddle防止被屏蔽,上面已插入了源代码)

    从上面的效果可以看到,四个三角形拼成了一个正方形,我们只要把其中一个想要的三角形保留下来,其他的设置为透明的,就可以达到想要的效果了;

    如border-color:red transparent transparent transparent;就能看到一个红色三角形

    效果:

    但是ie6不支持transparent,所以没有透明效果,这就需要把border-style:solid dashed dashed dashed;实现了透明效果;

    2、如果要实现直角对着45度斜线方向的三角形,可以将两个三角形拼在一起来实现;

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
          .caret{
      height:0;/*将宽高都设置为0*/
      width:0;
      border:100px solid #000;
      border-color:red green transparent transparent;
      border-style:solid solid dashed dashed;
    }
    p{color:red;}
        </style>
    </head>
    <body>
    <div class="caret"></div>
    <p>
     border-color:red green transparent transparent transparent;
     border-style:solid solid dashed dashed;
    </p>
    </body>
    </html>

    效果:

    注意:此方法在ie6中,会有个行高撑开了,需要把行高设置为0,line-heiht:0;

    下面用css绘制三角形的原理来绘制一个三角形气泡

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>除去列表最后一个li的底边框</title>
        <style>
            body,p{margin:0;padding:0;}
            #container{
                margin:0 auto;
                position:relative;
                width:400px;
                height:100px;
                border:10px solid #81A7FF;
            }
            #caret{
                position:absolute;
                width:50px;
                height:50px;
                left:100px;
                bottom:-50px;
            }
            .triangle1,.triangle2{
    
                display:block;
                height:0;/*将宽高都设置为0*/
                width:0;
                line-height:0;
                border-style:solid dashed dashed dashed;
            }
            .triangle1{
                border-width:50px;
                border-color:#81A7FF transparent transparent transparent;
            }
            .triangle2{
                position: absolute;
                top:-14px;/*这个数据三角函数是计算出来的*/
                border-width:50px;
                border-color:#fff transparent transparent transparent;
            }
            p{color:#81A7FF;text-align: center;line-height: 100px;}
        </style>
    </head>
    <body>
    <div id="container">
        <div id="caret">
            <span class="triangle1"></span>
            <span class="triangle2"></span>
        </div>
        <p>
            css绘制三角形气泡
        </p>
    </div>
    </body>
    </html>

    效果:

    .triangle2的top值不能直接是10px,不然显示的三角形边框会小于10,会导致气泡部分小于容器div元素的边框(border-width);top值的计算:(border-width)*(border-width)/((border-width)*sin45)

  • 相关阅读:
    在Eclipse中运行JAVA代码远程操作HBase的示例
    hbase基本概念和hbase shell常用命令用法
    如何使用putty远程连接linux
    如何在Eclipse下安装SVN插件——subclipse
    solr之创建core(搜索核心,包括索引和数据)的方法
    百度地图api基本用法
    四年大学不如选择培训一年?
    树常见的算法操作
    二叉树常见遍历算法
    Java多线程实现生产者消费者延伸问题
  • 原文地址:https://www.cnblogs.com/jnslove/p/6084946.html
Copyright © 2011-2022 走看看