【HTML】CSS绘制奥运五环

文章目录

CSS绘制奥运五环

1.伪元素遮盖法

html 复制代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>奥运五环-伪元素遮盖法</title>
    <style>
      /*
              * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        } */
        
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            padding: 20px;
        }
        
        .container {
            text-align: center;
            max-width: 800px;
            padding: 30px;
            background-color: rgba(255, 255, 255, 0.9);
            border-radius: 20px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
        }
        
        h1 {
            color: #2c3e50;
            margin-bottom: 10px;
            font-family: "楷体";
            font-size: 3.4rem;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);
        }
        
        .subtitle {
            color: #7f8c8d;
            margin-bottom: 30px;
            font-size: 1.2rem;
        }

        .olympics-container {
            position: relative;
            width: 600px;
            height: 400px;
            margin: 0 auto 40px;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        /*奥运五环的CSS属性*/
        
        .ring {
            position: absolute;
            width: 200px;
            height: 200px;
            border-radius: 50%;
            border-width: 20px;
            border-style: solid;
            top: -20px;
            right: -20px;
        }
        .green {
            color: #30a751;
            top: 70px;
            right: -160px;
            z-index: 2;
        }
        .black {
            position: relative;
            width: 200px;
            height: 200px;
            border-radius: 50%;
            border-width: 20px;
            border-style: solid;
            margin: 10vw auto;
        }
        .black::before {
            content: "";
            position: absolute;
            width: 200px;
            height: 200px;
            border-radius: 100%;
            top: -20px;
            right: -20px;
            border: 20px solid transparent;
            border-bottom: 20px solid currentcolor;
            z-index: 1;
        }
        .black::after {
            content: "";
            position: absolute;
            width: 200px;
            height: 200px;
            border-radius: 100%;
            top: -20px;
            right: -20px;
            border: 20px solid transparent;
            border-right: 20px solid currentcolor;
            z-index: 3;
        }
        .red {
            color: #ef314e;
            right: -275px;
        }
        .red::after {
            content: "";
            position: absolute;
            width: 200px;
            height: 200px;
            border-radius: 50%;
            border-width: 20px;
            border-style: solid;
            top: -20px;
            right: -20px;
            border: solid 20px transparent;
            border-bottom: solid 20px currentcolor;
            z-index: 2;
        }
        .yellow {
            color: #fcb32e;
            top: 70px;
            left: -138px;
        }
        .blue {
            color: #0082c9;
            left: -273px;
        }
        .blue::after {
            content: "";
            position: absolute;
            width: 200px;
            height: 200px;
            border-radius: 50%;
            border-width: 20px;
            border-style: solid;
            top: -20px;
            right: -20px;
            border: solid 20px transparent;
            border-right: solid 20px currentcolor;
            z-index: 2;
        }

        /**/
        /* 奥运五环标志 */
        .olympic-symbol {
            font-size: 1.5rem;
            color: #2c3e50;
            margin-top: 20px;
            letter-spacing: 2px;
            font-weight: bold;
        }

        
        /* 环的颜色说明 */

        .blue-color { background-color: #0085C7; }
        .yellow-color { background-color: #F4C300; }
        .black-color { background-color: #000000; }
        .green-color { background-color: #009F3D; }
        .red-color { background-color: #DF0024; }

        .color-info {
            display: flex;
            justify-content: center;
            flex-wrap: wrap;
            gap: 15px;
            margin-top: 30px;
        }
        
        .color-item {
            display: flex;
            align-items: center;
            margin: 5px 10px;
        }
        
        .color-box {
            width: 20px;
            height: 20px;
            border-radius: 3px;
            margin-right: 8px;
        }
        
        .footer {
            margin-top: 30px;
            color: #7f8c8d;
            font-size: 0.9rem;
        }
    </style>
  </head>
  <body>
    <div class="container">
      <h1>奥运五环</h1>
      <p class="subtitle">使用纯HTML和CSS绘制 - 代表五大洲的团结</p>
      <div class="olympics-container">
        <div class="black">
          <div class="ring blue"></div>
          <div class="ring yellow"></div>
          <div class="ring green"></div>
          <div class="ring red"></div>
        </div>
      </div>

      <div class="olympic-symbol">OLYMPIC RINGS</div>

      <div class="color-info">
        <div class="color-item">
          <div class="color-box blue-color"></div>
          <span>蓝色 - 欧洲</span>
        </div>
        <div class="color-item">
          <div class="color-box yellow-color"></div>
          <span>黄色 - 亚洲</span>
        </div>
        <div class="color-item">
          <div class="color-box black-color"></div>
          <span>黑色 - 非洲</span>
        </div>
        <div class="color-item">
          <div class="color-box green-color"></div>
          <span>绿色 - 大洋洲</span>
        </div>
        <div class="color-item">
          <div class="color-box red-color"></div>
          <span>红色 - 美洲</span>
        </div>
      </div>

      <div class="footer">
        <p>奥运五环标志由皮埃尔·德·顾拜旦于1913年设计,五个环代表五大洲,六种颜色(含白色背景)代表当时所有国家的国旗颜色</p>
        <p style="margin-top: 10px;">少莫千华 | 纯CSS实现 | 无JavaScript | 响应式设计</p>
      </div>
    </div>
  </body>
</html>

2.元素旋转法

html 复制代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>奥运五环-元素旋转法</title>
    <style>
      /*
              * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        } */
        
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            padding: 20px;
        }
        
        .container {
            text-align: center;
            max-width: 800px;
            padding: 30px;
            background-color: rgba(255, 255, 255, 0.9);
            border-radius: 20px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
        }
        
        h1 {
            color: #2c3e50;
            margin-bottom: 10px;
            font-family: "楷体";
            font-size: 3.4rem;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);
        }
        
        .subtitle {
            color: #7f8c8d;
            margin-bottom: 30px;
            font-size: 1.2rem;
        }

        .olympics-container {
            position: relative;
            width: 600px;
            height: 400px;
            margin: 24px;
            display: flex;
            justify-content: center;
            align-items: center;
            transform-style: preserve-3d;
        }
        
        /*奥运五环的CSS属性*/
        
        .ring {
            position: absolute;
            width: 200px;
            height: 200px;
            border-radius: 50%;
            border-width: 20px;
            border-style: solid;
            top: -20px;
            right: -20px;
        }
       
        /*504*/
        .blue {
            color: #0082c9;
            left: 0px;
            top: 0px;
            transform: rotateX(356deg); 
            transform-origin: center 75%;
        }
        .yellow {
            color: #fcb32e;
            top: 100px;
            left: 126px; /*240+6 - 120 */
            transform: rotateX(358deg); 
            transform-origin: center 25%;
        }
        .black {
            color:#000000;
            top: 0px;
            left: 252px; /*200 + 40 +12 */
        }
        .green {
            color: #30a751;
            top: 100px;
            left: 376px;/*504-6 - 120 */
            transform: rotateX(2deg); 
            transform-origin: center 25%;
        }
        
        .red {
            color: #ef314e;
            top: 0px;
            left: 504px; /*200 + 40 +20 */
            transform: rotateX(4deg); 
            transform-origin: center 75%;
        }



        /**/
        /* 奥运五环标志 */
        .olympic-symbol {
            font-size: 1.5rem;
            color: #2c3e50;
            margin-top: 20px;
            letter-spacing: 2px;
            font-weight: bold;
        }

        
        /* 环的颜色说明 */

        .blue-color { background-color: #0085C7; }
        .yellow-color { background-color: #F4C300; }
        .black-color { background-color: #000000; }
        .green-color { background-color: #009F3D; }
        .red-color { background-color: #DF0024; }

        .color-info {
            display: flex;
            justify-content: center;
            flex-wrap: wrap;
            gap: 15px;
            margin-top: 30px;
        }
        
        .color-item {
            display: flex;
            align-items: center;
            margin: 5px 10px;
        }
        
        .color-box {
            width: 20px;
            height: 20px;
            border-radius: 3px;
            margin-right: 8px;
        }
        
        .footer {
            margin-top: 30px;
            color: #7f8c8d;
            font-size: 0.9rem;
        }
    </style>
  </head>
  <body>
    <div class="container">
      <h1>奥运五环</h1>
      <p class="subtitle">使用纯HTML和CSS绘制 - 代表五大洲的团结</p>
      <div class="olympics-container">
        <div class="ring black"></div>
        <div class="ring blue"></div>
        <div class="ring yellow"></div>
        <div class="ring green"></div>
        <div class="ring red"></div>
      </div>

      <div class="olympic-symbol">OLYMPIC RINGS</div>

      <div class="color-info">
        <div class="color-item">
          <div class="color-box blue-color"></div>
          <span>蓝色 - 欧洲</span>
        </div>
        <div class="color-item">
          <div class="color-box yellow-color"></div>
          <span>黄色 - 亚洲</span>
        </div>
        <div class="color-item">
          <div class="color-box black-color"></div>
          <span>黑色 - 非洲</span>
        </div>
        <div class="color-item">
          <div class="color-box green-color"></div>
          <span>绿色 - 大洋洲</span>
        </div>
        <div class="color-item">
          <div class="color-box red-color"></div>
          <span>红色 - 美洲</span>
        </div>
      </div>

      <div class="footer">
        <p>奥运五环标志由皮埃尔·德·顾拜旦于1913年设计,五个环代表五大洲,六种颜色(含白色背景)代表当时所有国家的国旗颜色</p>
        <p style="margin-top: 10px;">少莫千华 | 纯CSS实现 | 无JavaScript | 响应式设计</p>
      </div>
    </div>
  </body>
</html>
相关推荐
好学且牛逼的马41 分钟前
从“混沌初开”到“有序统一”:Java集合框架发展历程与核心知识点详解
前端·数据库·python
嵌入式×边缘AI:打怪升级日志1 小时前
编写Bootloader实现下载功能
java·前端·网络
恋猫de小郭1 小时前
Flutter 设计包解耦新进展,material_ui 和 cupertino_ui 发布预告
android·前端·flutter
linux_cfan2 小时前
[2026深度评测] 打造“抖音级”丝滑体验:Web直播播放器选型与低延迟实践
前端·javascript·html5
天天向上的鹿茸2 小时前
前端适配方案
前端·javascript
We་ct2 小时前
LeetCode 226. 翻转二叉树:两种解法(递归+迭代)详解
前端·算法·leetcode·链表·typescript
哆啦A梦15882 小时前
Vue3魔法手册 作者 张天禹 013_pinia
前端·vue.js·typescript
哆啦A梦15882 小时前
Vue3魔法手册 作者 张天禹 014_组件通信
前端·vue.js·typescript
木斯佳2 小时前
前端八股文面经大全:有赞前端一面二面HR面(2026-1-13)·面经深度解析
前端·状态模式
码云数智-园园3 小时前
Vue 3 + TypeScript 企业级项目架构实战:从0到1打造可维护的前端工程体系
前端·vue.js·typescript