任务
- 至少两种方式完成"彩虹效果"
- 彩虹颜色没有要求,可以自定义
效果图
思路
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>
此时最终效果为