前言
css3中出现了很多骚操作,比如,定义变量,函数啊什么的,之前一直都是用的时候找一下,没有系统性的做总结。
1. 定义变量(var())
其实在
scss
跟less
还有styl
等预处理语言中,都可以自定义变量。但是无奈,这些语言最终还是要编译成css
才能运行。但是在css3
中可以自定义变量,然后使用var()
就可以使用
1 | body{ |
上面的以 --
双划线开头的便是定义的变量了,然后使用 var(变量名)
就可以
变量定义在类名内
这里注意:变量可以定义在类名内,如果有这个类名就可以使用变量,如果没有就无法使用,这个其实有点鸡肋,因为类名也可以办到这件事。
1 | <style> |
var()
函数可以接受两个参数。第一个参数是定义的变量名,第二个是当变量不存在的时候使用的默认值。
2. 加减乘除算法 calc()
calc(formula)
可以支持 加减乘除 四则运算- 其中
formula
可以是四则运算中的任何符合规则的表达式 - 运算表达式中,允许出现单位
- 但是表达式中,四则运算的符号两边必须有空格
1
2
3main{
height:calc(100vh - 100px);
}
3. attr()可以获取HTML结构上定义的属性值
attr()
表达式可以用于任何CSS属性
1 | <div data-title="做咸鱼虽然不好,但是很好吃啊"> |
4. Counters()用来计数的函数
counter-increment
:MDN上并没给出一个准确的中文翻译,我认为这个属性是定义计时器的变量的名字。以及计数之间是以什么形式展示。
这个属性有两个值,第一个值定义计数器的名字,第二个是计数的初始数字,如果没写默认是从1开始的。如果写了,那么初始数字就是规定的数字,并且数字间隔之前相隔的也是规定的数字。
例如:
1 | counter-increment:counterName 2 /*这个是表示计数器的名字叫counterName 并且每次两个数之间相差2*/ |
counter-reset
:设置计数器的标识作用域,可能说这个不好理解。其实就是当一个页面有多个计数器的时候,但是又不相同的时候,每一个相同的计数器编为同一组1
counter-reset:counterName 0 /*这个是定义计数器的边界标识,以及计数的初始数字是多少*/
这个属性是具有两个值的,第一个定义计数器的名字边界,第二个定义计数的初始数字,不过展示的结果是需要在定义的初始数字上加上一个默认数字 1 。
当 counter-increment和counter-reset
设置的初始数字不同的时候,会以 counter-increment
的初始数字为主,不过数字之前相隔为0
计数器使用:
1 | div::before{ |
5. filter()图片滤镜效果
这个函数接受两个参数。第一个参数为图像的地址。第二个为过滤器
1 | background: filter(url(path/to/img.jpg), blur(5px)); |
filter()
不能与 filter
属性做混淆,虽然函数的第二个参数过滤器可以参考filter属性的值
filter属性
blur(5px)
模糊brightness(1.4)
亮度contrast(200%)
对比度drop-shadow(4px 4px 8px blue)
投影grayscale(50%)
灰度hue-rotate(90deg)
色调变化invert(75%)
反相opacity(25%)
透明度saturate(230%)
饱和度sepia(60%)
褐色
例如:
1 | <div class="section">section1</div> |
效果
1 | .section{ |
还是上面这种情况。当你想做出 iOS
那种遮挡磨砂效果,就可以使用 backdrop-filte
1 | .header { |
如图效果:标题 <header>
后面的每个元素都被5px模糊了。就这么简单。
注意:
- backdrop-filter应用元素的背景应该是半透明的。否则,你永远不会看到效果。
- 有一个错误,当结合backdrop-filter任何性质作物元件(例如border-radius,mask,clip-path等)。这意味着现在无法实现高级效果。
- backdrop-filter创建一个新的堆叠上下文,就像opacity这样
- 这个属性还存在兼容性问题,在Safari中加前缀: -webkit-backdrop-filter
6. cubic-bezier()动画曲线函数
其实这个,相信很多人都熟悉,在做
animation
动画的时候,觉得默认提供的**ease、ease-in、ease-out**
等曲线不满意,就可以使用这个函数绘制指定的动画曲线。也称之为** 定时函数**
贝塞尔函数接受四个参数:P1,P2,P3,P4用来定义起始终点以及完成时间。四个值均为 Number
范围为 0~1。
step() 步进函数
这个函数接受两个参数。第一个参数,步进的总步数,第二个参数为步进的方向是左对齐还是右对齐。
1 | .animation{ |
7. element()设置HTML元素为背景
1 | <div id="css-source"> |
这个函数虽然看着蛮吊的,但是兼容性很大大,暂时只有火狐 Firefox 实现了这个功能
8. shape 图形设置
这个准确来说不是一个函数。准确来说是指一系列的不规则的文字环绕效果,不过需要与浮动配合
shape-outside
指定使用下面列表的值来定义浮动元素的浮动区域。这个浮动区域决定了行内内容(浮动元素)所包裹的形状。
shape-outside
的本质其实是生成几何图形,并且裁剪掉其几何图形之外周围的区域,让文字能排列在这些被裁剪区域之内。
1 | /* 关键字值 */ |
1 | <div> |
clip-path
可以创建一个只有元素的部分区域可以显示的剪切区域,超出剪切区域的都会被隐藏。并且不占位置。
他的属性值其实也跟 shape-outside
一样。
评论加载中