CSS-函数详解

本文介绍了CSS中的高级特性,包括使用var定义变量,calc进行计算以设置元素尺寸,blur函数创建高斯模糊效果,以及如何运用gradient函数创建线性和径向渐变。这些技巧能提升CSS代码的灵活性和表现力。
摘要由CSDN通过智能技术生成

rgb/rgba/translate/rotate/scale等函数在之前的文章提到过,此处不再赘述。

1. var:定义变量

CSS中可以自定义属性

  • 属性名需要以两个减号(–)开始

  • 属性值则可以是任何有效的CSS值

    <style> :root {
      /* 定义了一个变量(CSS属性) */
      /* 只有后代元素可以使用 */
      --main-color: #f00;
    }
    
    .box {
      color: var(--main-color);
    }
    
    .title {
      color: var(--main-color);
    } </style>
    
    <div class="box">
      我是box
    </div>
    
    <h1 class="title">
      我是标题
    </h1> 
    

    var.png

  • 规则集定义的选择器, 是自定义属性的可见作用域(只在选择器内部有效)

    • 推荐将自定义属性定义在html中,也可以使用 :root 选择器

2. calc:计算CSS值

calc() 函数允许在声明 CSS 属性值时执行一些计算

  • 计算支持加减乘除的运算;

    • +- 运算符的两边必须要有空白字符。
  • 通常用来设置一些元素的尺寸或者位置

    .item {
      /* width的百分比相对于包含块(父元素) */
      width: calc(100% - 100px);
      background-color: #f00;
    } 
    

3. blur:毛玻璃(高斯模糊)效果

  • blur() 函数将高斯模糊应用于输出图片或者元素

    • blur(radius)

    • radius 模糊的半径, 用于定义高斯函数的偏差值, 偏差值越大, 图片越模糊

  • 通常会和两个属性一起使用:

    • filter: 将模糊或颜色偏移等图形效果应用于元素
    img {
      filter: blur(5px);
    }
    
    <img src="../images/kobe01.jpg" alt=""> 
    

    filter.png

    • backdrop-filter: 为元素后面的区域添加模糊或者其他效果
    <style> .box {
      display: inline-block;
      position: relative;
    }
    
    .cover {
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      background-color: rgba(255, 255, 255, 0.2);
      backdrop-filter: blur(10px);
    } </style>
    
    <div class="box">
      <img src="../images/kobe01.jpg" alt="">
      <div class="cover"></div>
    </div> 
    

    backdrop-filter.png

4. gradient:颜色渐变函数

<gradient> 是一种<image>CSS数据类型的子类型,用于表现两种或多种颜色的过渡转变。

  • CSS的<image>数据类型描述的是2D图形:比如background-image、list-style-image、border-image、content等, <image>常见的方式是通过url来引入一个图片资源;它也可以通过CSS的 函数来设置颜色的渐变。

  • <gradient>常见的函数实现有下面几种:

    • linear-gradient():创建一个表示两种或多种颜色线性渐变的图片
    .box {
      width: 200px;
      height: 100px;
      /* top -> bottom */
      background-image: linear-gradient(red, blue);
    } 
    

    image.png

    .box {
      width: 200px;
      height: 100px;
      /* top -> bottom */
      /* background-image: linear-gradient(red, blue); */
      /* background-image: linear-gradient(to right, red, blue); */
      /* background-image: linear-gradient(to right top, red, blue); */
      /* background-image: linear-gradient(-45deg, red, blue); */
      background-image: linear-gradient(to right, red, blue 40px, orange 60%, purple 100%);
    } 
    

    改变方向.png

    • radial-gradient():创建了一个图像,该图像是由从原点发出的两种或者多种颜色之间的逐步过渡组成
    .box {
      width: 200px;
      height: 100px;
      /* 中心向四周渐变 */
      /* background-image: radial-gradient(red, blue); */
      /* 改变方向 */
      background-image: radial-gradient(at 0% 50%, red, blue);
    } 
    

    原点渐变.png

    • repeating-linear-gradient():创建一个由重复线性渐变组成的<image>

    • repeating-radial-gradient():创建一个重复的原点触发渐变组成的<image>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值