CSS中用border画三角形等图形

问题背景

最近在做一个官网项目的时候,UI小姐姐设计了一些特殊图形,例如三角形,虽然element-ui是带有相应模板的,但是设计的和模版的不一样,因此研究了一下。

三角形怎么画

三角形实际上是border的产物 我们正常使用的border都是四边一个颜色,当我们把四边换上不同颜色 那么你就会发现,三角来了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css3三角形画法</title>
    <style>
        .content{
   
            width: 0px;
            height: 0px;
            margin: 50px auto 0px;
            border-width: 150px;
            border-color: #666 #CC0066 #CC9966 #FFCC33;
            border-style: solid;
        }
    </style>
</head>
<body>
    <div class="content"></div>
</body>
</html>

image.png

原来border每个边,形成了三角形。 之前一直很奇怪,为什么每次width 和 height 都是0px

我想原因已经不言而喻,当然我们应该试一下看看。

可以给加上padding:50px;中间的白色区域就是100px

image.png

再加上border-radius:50%;会变成这样

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css3三角形画法</title>
    <style>
        .content{
   
            width: 0;
            height: 0;
            margin: 50px auto 0px;
            /*没有修改width 和 height 而是用了padding*/
            padding: 50px;
            border-width: 150px;
            border-color: #666 #CC0066 #CC9966 #FFCC33;
            border-style: solid;
            /*还可以把border-radius设置一个玩玩*/
            -webkit-border-radius: 50%;
            -moz-border-radius: 50%;
            border-radius: 50%;
        }
    </style>
</head>
<body>
<div class="content"></div>
</body>
</html>

我们看到了三角,却拿不到三角?

很简单,我们知道border-color 值对应的边分别为 top 、right、bottom、left ;

现在我们不想要那个,就把那个变透明。

当然我们要的三角通常不是这样的,现在,我们只要让border-color和border-width搭配,就可以变换各种三角。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css3三角形画法</title>
    <style>
        .outer{
   
            display: inline-block;
            margin: 50px;
            text-align: center;
            font-size: 24px;
            line-height: 40px;
        }
        .content{
   
            width: 0;
            height: 0;
            border-style: solid;
        }
        .content-1{
   
            /*不要上面的三角 同时左边和右边不要有颜色 就是可爱的正三角*/
            border-width: 0px 100px 100px 100px;
            border-color: transparent transparent #CC9966 transparent;
        }
        .content-2{
   
            /*左边的三角 就是右边的不要了 上下三角透明 一点毛病都没有*/
            border-width: 100px 0px 100px 100px;
            border-color: transparent transparent transparent #CC9966;
        }
        .content-3{
   
            border-width: 100px 100px 100px 100px;
            border-color: transparent #CC9966 #CC9966 transparent;
        }
    </style>
</head>
<body>
<div class="outer">
    <div class="content content-1"></div>
    <div>下三角</div>
    <div class="content content-2"></div>
    <div>左三角</div>
    <div class="content content-3"></div>
    <div>右直三角</div>
</div>
</body>
</html>

image.png

注意:如果是采用border-weight不变,使对应边的color透明的话,那么就是边框的尺寸会不变。

至于正三角、不规则三角等,只要知道它的原理,都是可以画出来的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css3三角形画法</title>
    <style>
        div{
   
            width: 0px;
            height: 0px;
            border-style: solid;
            margin: 30px auto 0px;
        }
        .content-1{
   
             /*梯形借助了padding*/
            padding: 10px 20px;
            border-width: 0px 50px 50px 50px;
            border-color: transparent transparent #CC9966 transparent;
        }
        .content-2{
   
            /*padding做梯形*/
            padding: 20px 10px;
            border-width: 50px 50px 50px 0px;
            border-color: transparent #CC9966 transparent transparent;
            /*喇叭效果*/
            -webkit-box-shadow: inset 15px 0 #666;
            -moz-box-shadow: inset 15px 0 #666;
            box-shadow: inset 15px 0 #666;
        }
        .content-3{
   
            width: 100px;
            height: 100px;
            background-color: #CC9966;
            border:none;
            /*平行四边行完全可以用旋转实现*/
            -webkit-transform: skew(-30deg);
            -moz-transform: skew(-30deg);
            -ms-transform: skew(-30deg);
            -o-transform: skew(-30deg);
            transform: skew(-30deg);
        }
    </style>
</head>
<body>
<body>
    <div class="content-1"></div>
    <div class="content-2"></div>
    <div class="content-3"></div>
</body>
</body>
</html>

image.png

相关推荐

  1. 如何CSS3一个三角形

    2024-01-12 10:56:05       29 阅读
  2. css的 box-sizing: border-box

    2024-01-12 10:56:05       55 阅读
  3. cssborder详解

    2024-01-12 10:56:05       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-12 10:56:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-12 10:56:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-12 10:56:05       82 阅读
  4. Python语言-面向对象

    2024-01-12 10:56:05       91 阅读

热门阅读

  1. 近日遇到数据库及其他问题

    2024-01-12 10:56:05       60 阅读
  2. neo4j中如何并列执行多条命令

    2024-01-12 10:56:05       53 阅读
  3. GBASE南大通用 访问其他数据库服务器

    2024-01-12 10:56:05       40 阅读
  4. go 语言常见问题(3)

    2024-01-12 10:56:05       67 阅读
  5. 50天精通Golang(第14天)

    2024-01-12 10:56:05       51 阅读
  6. Unity敌人的自动巡逻脚本

    2024-01-12 10:56:05       56 阅读
  7. 服务器带宽有什么用? 带宽不足怎么办?

    2024-01-12 10:56:05       50 阅读
  8. Jtti:新手用户如何构建HTML 5 Web页面?

    2024-01-12 10:56:05       51 阅读
  9. SpringMVC传值与取值

    2024-01-12 10:56:05       53 阅读
  10. B_Tree 的数据结构

    2024-01-12 10:56:05       60 阅读