利用css制作“彩虹”

任务

  1. 至少两种方式完成"彩虹效果"
  2. 彩虹颜色没有要求,可以自定义

效果图

思路

1、第一种方法

每条彩虹颜色可以使用边框来完成,然后使其变为圆角,增加一个父盒子,其高度通过overflow:hidden;溢出隐藏的方式切取多余部分(效果中多余的部分,可以设置超出隐藏,不一定是一半,调整父盒子的高度来改变彩虹效果,父盒子宽度一定要与第一个子盒子实际宽度一致)。

xml 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>01.html</title>
    <style>
        .box{
            /* 父盒子的宽高实际上是第一个子盒子的实际宽和实际高的一半 */
            width: 640px;
            height: 320px;
            margin: 100px auto;
        }
        /* 计算好每个盒子的宽高 */
        .box1{
            width: 600px;
            height: 600px;
            border: 20px solid purple;
        }
        .box2{
            width: 560px;
            height: 560px;
            border: 20px solid cyan;
        }
        .box3{
            width: 520px;
            height: 520px;
            border: 20px solid green;
        }
        .box4{
            width: 480px;
            height: 480px;
            border: 20px solid yellow;
        }
        .box5{
            width: 440px;
            height: 440px;
            border: 20px solid orange;
        }
    </style>
</head>

<body>
    <!-- 父盒子 -->
    <div class="box">
        <!-- 其余盒子实现彩虹效果 -->
        <div class="box1">
            <div class="box2">
                <div class="box3">
                    <div class="box4">
                        <div class="box5"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

</html>

此时效果图为

然后变为圆角并隐藏多余部分

css 复制代码
.box{
    ... ...
    /* 隐藏多余部分 */
    overflow: hidden;
}
.box1{
    ... ...
    /* 变圆角 */
    border-radius: 50%;
}
.box2{
    ... ...
    /* 变圆角 */
    border-radius: 50%;
}
.box3{
    ... ...
    /* 变圆角 */
    border-radius: 50%;
}
.box4{
    ... ...
    /* 变圆角 */
    border-radius: 50%;
}
.box5{
    ... ...
    /* 变圆角 */
    border-radius: 50%;
}

此时最终效果为

2、第二种方法

利用径向渐变效果来实现(线性渐变不行),此时需要纯色带的硬过渡。同样需要增加一个父盒子,其高度通过overflow:hidden;溢出隐藏的方式切取多余部分。

xml 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>02.html</title>
    <style>
        .per{
            width: 402px;
            height: 201px;
            overflow: hidden;
        }
        .son{
            width: 400px;
            height: 400px;
            border: 1px solid #000;
            background-image: radial-gradient(
                50% 50%,
                white 50%,
                orange 50% 60%,
                yellow 60% 70%,
                green 70% 80%,
                cyan 80% 90%,
                purple 90%);
            border-radius: 50%;
        }
    </style>
</head>

<body>
    <!-- 父盒子实现多余部分隐藏 -->
    <div class="per">
        <!-- 子盒子实现渐变效果 -->
        <div class="son"></div>
    </div>
</body>

</html>

此时最终效果为

相关推荐
夏幻灵4 小时前
CSS三大特性:层叠、继承与优先级解析
前端·css
会编程的土豆21 小时前
新手前端小细节
前端·css·html·项目
珹洺1 天前
Bootstrap-HTML(二)深入探索容器,网格系统和排版
前端·css·bootstrap·html·dubbo
BillKu1 天前
VS Code HTML CSS Support 插件详解
前端·css·html
1024小神1 天前
用css的clip-path裁剪不规则形状的图片展示
前端·css
GGGG寄了1 天前
CSS——文字控制属性
前端·javascript·css·html
HWL56791 天前
在网页中实现WebM格式视频自动循环播放
前端·css·html·excel·音视频
HWL56791 天前
防止移动设备自动全屏播放视频,让视频在页面内嵌位置正常播放
前端·css·音视频
小小测试开发2 天前
UI自动化测试:CSS定位方式超详细解析(附实战示例)
css·ui·tensorflow
RFCEO2 天前
前端编程 课程十五、:CSS核心基础3:文字+段落样式
前端·css·文字+段落样式·css文本样式·美化页面文本内容·演示动画说明·单行文字垂直居中技