css3渐变

本文详细介绍了CSS3中的线性渐变(linear-gradient)和径向渐变(radial-gradient)的使用方法,包括它们的语法、参数含义及浏览器兼容性,并通过多个实例展示了如何运用这些渐变效果创建美观的视觉元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初次接触css3 渐变是在很早以前了,觉得这个东西很有意思哈,跟玩PS似的,可以做出很多华丽的东西

浏览器支持情况

IEFFChromeSafariOperaiOSAndroidAndroid Chrome
6-9(no)2-3.5(no)4-9(部分-webkit-)3.1-3.2(no)-3.2-4.3(部分)2.1-3.0(-webkit-)10-25(-webkit-)
10+3.6-15(-webkit-)10-25(-webkit-)4-5(部分)5-6.1(-webkit-)-5+4-4.3(-webkit-)26+
-15+25+5-615+-4.4+-

线性渐变 linear-gradient

使用语法

linear-gradient([ [ [ | to [top | bottom] || [left | right] ],]? [, ]+);

以下代码都可以运行,执行的结果一样

linear-gradient(#fff, #333);
linear-gradient(to bottom, #fff, #333);
linear-gradient(to top, #333, #fff);
linear-gradient(180deg, #fff, #333);
linear-gradient(to bottom, #fff 0%, #333 100%);

可以定义角度,起始方向,颜色,以及颜色占比

demo

<div style="width: 200px; height: 200px;"></div>
<style>
div {
  background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet);
}
</style>

1526629454815.png

填充试线性渐变 repeating-linear-gradient

用法和linear-gradient 差不多,其实就是渐变的一个填充。可以精确到像素,比如实现一个斑马纹

<div class="g"></div>
<style>
.g{
    background: repeating-linear-gradient(-45deg, transprent, transprent 25px, #fff 25px, #fff50px);
}
</style>

1526632856739.png

径向渐变radial-gradient

使用语法

radial-gradient( [ circle || ] [ at ]? ,
| [ ellipse || [ | ]{2}] [ at ]? ,
| [ [ circle | ellipse ] || ] [ at ]? ,
| at ,
[ , ]+ )

以下代码执行结果一样

radial-gradient(circle, #f00, #ff0, #080);
radial-gradient(circle at center, #f00, #ff0, #080);
radial-gradient(circle at 50%, #f00, #ff0, #080);
radial-gradient(circle farthest-corner, #f00, #ff0, #080);

可以通过length 来快速定位形状的位置
closest-side 渐变的边缘形状与容器距离渐变中心点最近的一边相切(圆形)或者至少与距离渐变中心点最近的垂直和水平边相切(椭圆)。

closest-corner 渐变的边缘形状与容器距离渐变中心点最近的一个角相交。

farthest-side 与closest-side相反,边缘形状与容器距离渐变中心点最远的一边相切(或最远的垂直和水平边)。

farthest-corner 渐变的边缘形状与容器距离渐变中心点最远的一个角相交。

可以通过at 来快速制定圆心的位置
circle at left top  圆心在左上角

circle at right top  圆心在右上角

circle at left bottom 圆心在左下角

circle at right bottom 圆心在右下角 

circle at center | at 50% 圆心在正中间

代码示例

<style>
div {
    width: 200px;
    height: 100px;
    margin-top: 10px;
    border: 1px solid #ddd;
}
.g1 {
 background: radial-gradient(circle at center, #f00, #ff0, #080);
}
.g2 {
 background: radial-gradient(circle closest-side, #f00, #ff0, #080);
}
.g3 {
 background: radial-gradient(farthest-side, #f00 20%, #ff0 50%, #080 80%);
}
.g4 {
 background: radial-gradient(at top right, #f00, #ff0, #080);
}
.g5 {
 background: radial-gradient(farthest-side at top right, #f00, #ff0, #080);
}
.g6 {
 background:radial-gradient(farthest-side at top right, #f00, #ff0, #080, transparent),
radial-gradient(60px at top left, #f00, #ff0, #080);
}
</style> 
<div class="g1"></div>
<div class="g2"></div>
<div class="g3"></div>
<div class="g4"></div>
<div class="g5"></div>
<div class="g6"></div>

得到如下
1526634345686.jpg

填充式径向渐变repeating-radial-gradient

这个和repeating-linear-gradient 使用差不多,就是对渐变的填充。

代码示例

<style>
div {
    width: 200px;
    height: 100px; 
    border: 1px solid #ddd;
    float:left;
    margin:10px;
}
.g1 {
    background: repeating-radial-gradient(circle, #f00 0, #ff0 10%, #f00 15%);
}
.g2 {
    background: repeating-radial-gradient(at top left, #f00, #ff0 10%, #080 15%, #ff0 20%, #f00 25%);
}
.g3 {
    background: repeating-radial-gradient(circle closest-corner at 20px 50px, #f00, #ff0 10%, #080 20%, #ff0 30%, #f00 40%);
}
</style>
 
<div class="g1"></div>
<div class="g2"></div>
<div class="g3"></div>

得到如下,棒棒糖??
1526634674155.png

利用渐变可以做出什么多效果

代码示例

<style>
@keyframes up {
      0% { top: 100%;   }
      100% { top: -100px; }
  }
  .blister {
    position: absolute;
    width: 80px;
    height: 80px;
    display: block;
    border-radius: 50%;
    // left: 300px;
    overflow: hidden;
    animation: up 20s linear infinite;
    bottom: -100%;
    background: rgba(255, 255, 255, 0.1);
    cursor: pointer;
    &:hover{
        animation-play-state:paused;
    }
    &::before {
      content: "";
      left: 0;
      top: 0;
      height: 100%;
      width: 100%;
      box-shadow: 0 0 20px #fff inset;
      position: absolute;
      border-radius: 50%;
    }
    .light {
          border-radius: 50%;
      width: 75px;
      height: 54px;
      transform: rotate(140deg);
      top: -24px;
      position: absolute;
      left: -18px;
      display: block;
      background: radial-gradient(farthest-side, #fff, rgba(255, 255, 255, 0));
    }
    .light2 {
          width: 24px;
      height: 15px;
      position: absolute;
      bottom: 9px;
      right: 15px;
      transform: rotate(-25deg);
      border-radius: 50%;
      display: block;
      background: radial-gradient(farthest-side, #fff, rgba(255, 255, 255, 0));
    }
  }
</style>
<span  class="blister">
      <span class="light"></span>
      <span class="light2"></span>
</span>

如下图,可以做一个漂亮的气泡
1526639154669.jpg

然后再用上一篇文章的animation 让他动起来。

看效果点这里 https://k-ui.xyz  动画延迟,要等会才能呈现。

[完]

资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 HttpServletRequestWrapper 是 Java Servlet API 中的一个工具类,位于 javax.servlet.http 包中,用于对 HttpServletRequest 对象进行封装,从而在 Web 应用中实现对 HTTP 请求的拦截、修改或增强等功能。通过继承该类并覆盖相关方法,开发者可以轻松地自定义请求处理逻辑,例如修改请求参数、添加请求头、记录日志等。 参数过滤:在请求到达处理器之前,可以对请求参数进行检查或修改,例如去除 URL 编码、过滤敏感信息或进行安全检查。 请求头操作:可以修改或添加请求头,比如设置自定义的 Content-Type 或添加认证信息。 请求属性扩展:在原始请求的基础上添加自定义属性,供后续处理使用。 日志记录:在处理请求前记录请求信息,如 URL、参数、请求头等,便于调试和监控。 跨域支持:通过添加 CORS 相关的响应头,允许来自不同源的请求。 HttpServletRequestWrapper 通过继承 HttpServletRequest 接口并重写其方法来实现功能。开发者可以在重写的方法中添加自定义逻辑,例如在获取参数时进行过滤,或在读取请求体时进行解密。当调用这些方法时,实际上是调用了包装器中的方法,从而实现了对原始请求的修改或增强。 以下是一个简单的示例,展示如何创建一个用于过滤请求参数的包装器: 在 doFilter 方法中,可以使用 CustomRequestWrapper 包装原始请求: 这样,每当调用 getParameterValues 方法时,都会先经过自定义的过滤逻辑。 HttpServletRequestWrapper 是 Java Web 开发中一个强大的工具,它提供了灵活的扩展性,允许开发者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值