我用网格布局实现奥运五环

1,164 阅读1分钟

我用网格布局实现奥运五环

这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

image.png

最近总结了网格布局的使用,可以看这篇文章布局的神--网格布局最全总结,建议收藏)

然后想着画一个有意思的网格。然后无意间就看见了奥运五环。

image.png

思路分析

想着想着觉得可以实现,那就开始布局思考。应该切割成几份呢。

最后对着图片一阵分析,决定切成3*6的网格。下面是草图 image.png

那其实完全可以切割的少一点的,每一个都作为半圆,但是因为有一些重叠部分,同一个圈圈在上面也可以在下面。所以分的越细,效果越好。每一个圈圈中间还有空格,所以分的越细效果越好。

代码实践

既然想法有了,那就开始动手。很明显我们要把每一个网格div设置边框和颜色,分别为左上角半圆、右上角半圆、左下角半圆、右下角半圆。

左上角半圆:border-radius: 100% 0 0 0; 右上角半圆:border-radius: 0 100% 0 0; 左下角半圆: border-radius: 0 0 0 100%; 右下角半圆:border-radius: 0 0 100% 0;

然后就是直接上代码,具体的网格使用可以看我开头发的博客链接。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="container">
        <div class="item1"></div>
        <div class="item2"></div>
        <div class="item3"></div>
        <div class="item4"></div>
        <div class="item5"></div>
        <div class="item6"></div>
        <div class="item7"></div>
        <div class="item8"></div>
        <div class="item9"></div>
        <div class="item10"></div>
        <div class="item11"></div>
        <div class="item12"></div>
        <div class="item13"></div>
        <div class="item14"></div>
        <div class="item15"></div>
        <div class="item16"></div>
        <div class="item17"></div>
        <div class="item18"></div>
    </div>
</body>
<style>
    * {
        margin: 0px;
        padding: 0px;
    }
    body {
        height: 100%;
    }
    .container {
       width: 400px;
       height: 200px;
       /* background: cyan; */
       display: grid;
       grid-template-columns: repeat(6,50px);
       grid-template-rows: repeat(3,50px);
       justify-content: center;
       align-content: center;
    }
    .container>div{
        /* background: chocolate; */
    }
    /* 篮圈 */
    .item1{
        border-radius: 100% 0 0 0; 
        border-top:2px solid #0F85CC;
        border-left:2px solid #0F85CC;
    }
    .item2{
        border-radius: 0 100% 0 0; 
        border-top:2px solid #0F85CC;
        border-right:2px solid #0F85CC;
    }
    .item7{
        border-radius: 0 0 0 100%; 
        border-bottom:2px solid #0F85CC;
        border-left:2px solid #0F85CC;
    }
    .item8{
        border-radius: 100% 0 100% 0; 
        border-bottom:2px solid #0F85CC;
        border-right:2px solid #0F85CC;
        border-top:2px solid #F9A410;
        border-left:2px solid #F9A410;
    }
    /* 黑圈 */
    .item3{
        border-radius: 100% 0 0 0; 
        border-top:2px solid #242826;
        border-left:2px solid #242826;
    }
    .item4{
        border-radius: 0 100% 0 0; 
        border-top:2px solid #242826;
        border-right:2px solid #242826;
    }
    .item9{
        border-radius: 0 100% 0 100%; 
        border-bottom:2px solid #242826;
        border-left:2px solid #242826;
        border-top:2px solid #F9A410;
        border-right:2px solid #F9A410;
    }
    .item10{
        border-radius: 100% 0 100% 0; 
        border-bottom:2px solid #242826;
        border-right:2px solid #242826;
        border-top:2px solid #0A9D49;
        border-left:2px solid #0A9D49;
    }
    /* 红圈 */
    .item5{
        border-radius: 100% 0 0 0; 
        border-top:2px solid #E60537;
        border-left:2px solid #E60537;
    }
    .item6{
        border-radius: 0 100% 0 0; 
        border-top:2px solid #E60537;
        border-right:2px solid #E60537;
    }
    .item11{
        border-radius: 0 100% 0 100%; 
        border-bottom:2px solid #E60537;
        border-left:2px solid #E60537;
        border-top:2px solid #0A9D49;
        border-right:2px solid #0A9D49;
    }
    .item12{
        border-radius: 0 0 100% 0; 
        border-bottom:2px solid #E60537;
        border-right:2px solid #E60537;
    }
/* 橙色 */
    .item14{
        border-radius: 0 0 0 100%; 
        border-bottom:2px solid #F9A410;
        border-left:2px solid #F9A410;
    }
    .item15{
        border-radius: 100% 0 100% 0; 
        border-bottom:2px solid #F9A410;
        border-right:2px solid #F9A410;
    }
    /* 绿色 */
    .item16{
        border-radius: 0 0 0 100%; 
        border-bottom:2px solid #0A9D49;
        border-left:2px solid #0A9D49;
    }
    .item17{
        border-radius: 100% 0 100% 0; 
        border-bottom:2px solid #0A9D49;
        border-right:2px solid #0A9D49;
    }
</style>

</html>

最后的效果图:

image.png