美文网首页
学习CSS函数

学习CSS函数

作者: microkof | 来源:发表于2021-01-22 16:41 被阅读0次

今天列举5个CSS函数,从使用频率从高到低排列。

calc()

最著名的CSS函数。

支持加法、减法、乘法和除法,支持括号运算。为一致性考虑,运算符前后必须加空格。

支持百分比与具体数值混合运算。

水平垂直居中案例:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    * {
      padding: 0;
      margin: 0;
    }

    html,
    body {
      height: 100%;
      background: gray;
    }

    body {
      position: relative;
    }

    .center {
      position: absolute;

      top: calc((100% - 200px) / 2);
      left: calc((100% - 300px) / 2);

      width: 300px;
      height: 200px;

      background: white;
    }
  </style>
</head>

<body>
  <div class="center"></div>
</body>

</html>

var()

与CSS变量配合使用的函数。关于CSS变量可以看我写的文档https://www.jianshu.com/p/a0f6233cf335

var()可以与calc()混合使用,还是上方案例,我们稍微改改,用变量声明宽高,且参与calc运算:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    /* 清除默认样式 */
    * {
      padding: 0;
      margin: 0;
    }

    /* 令html和body全屏显示, 并有一个灰色背景 */
    html,
    body {
      height: 100%;
      background: gray;
    }

    /* 先在父元素上设置相对定位 */
    body {
      position: relative;
      --width: 300px;
      --height: 200px;
    }

    .center {
      /* 绝对定位 */
      position: absolute;

      /* 减去的值是height和width的一半 */
      top: calc((100% - var(--height)) / 2);
      left: calc((100% - var(--width)) / 2);

      /* 给定宽高 */
      width: var(--width);
      height: var(--height);

      /* 白色背景 */
      background: white;
    }
  </style>
</head>

<body>
  <div class="center"></div>
</body>

</html>

counter()

counter()函数返回指定计数器的当前值,需要与counter-reset和counter-increment配合使用。它只能用在伪元素的content的值里。

它在CSS里属于稍复杂的玩意。

  1. 首先给父元素设counter-reset,它的值可以随便写,只是一个标记,写成abcxxx都行,但是最好写成有意义的单词,比如count。

  2. 给子元素统一设上counter-increment: count;,count就是父元素设的那个单词。

  3. 子元素的::before,设上content: counter(count, lower-roman) '. ';,这里counter(count, decimal) '. '前面的counter函数和后面的'. '是拼接字符串关系,中间敲个空格。

  4. counter(count, lower-roman)这种2参数写法是高级用法,第一个参数就是上文提到的标记,没啥可说的,第二个参数lower-roman是计数器样式,也就是说,并不一定只显示12345,还可以显示abcde以及更奇怪的样式,比如小写罗马数字等,这个decimal并不是随便写的,是有规定的(例如:disc | circle | square | decimal | lower-roman | upper-roman | lower-alpha | upper-alpha | none | armenian | cjk-ideographic | georgian | lower-greek | hebrew | hiragana | hiragana-iroha | katakana | katakana-iroha | lower-latin | upper-latin),这块知识就需要查更多资料,我就不说了。

比如:

image.png
<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    div.counter {
      counter-reset: count;
      list-style: none;
      padding: 0;
      margin: 0
    }

    div.counter>div {
      counter-increment: count;
    }

    div.counter>div::before {
      content: counter(count, lower-roman) '. ';
      color: orange;
    }
  </style>
</head>

<body>
  <div class="counter">
    <div>张三</div>
    <div>李四</div>
    <div>王五</div>
  </div>
</body>

</html>

大标题套小标题:

这可能是更有意义的一种用法,直接看这个案例即可:https://www.runoob.com/try/try.php?filename=trycss_gen_counter-reset

attr()

attr()分为老语法和新语法,先说老语法。

attr()老语法不太好玩,它用于获取写在html上的某节点任意属性(包括href之类)的内容,它跟counter()类似,也限制很大: 只能用在该节点的伪元素的content的值里。比如:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    .button {
      width: attr(data-width); /* 无效 */
    }
    .button::after {
      content: attr(data-title);
      width: attr(data-width); /* 无效 */
    }
    a::after {
      content: attr(href);
    }
  </style>
</head>

<body>
  <div class="button" data-title="我是提示" data-width="200px">我是按钮</div>
  <a href="http://www.baidu.com">链接</a>
</body>

</html>

attr()旧版语法最大的用途可能就是把<a>标签的href显示在元素后面吧。

attr()新语法见张鑫旭的https://www.zhangxinxu.com/wordpress/2020/10/css-attr-polyfill/,但是目前没有任何浏览器支持。

clip-path的几个函数

clip-path直译过来就是裁剪路径,使用SVG或形状定义一个HTML元素的可见区域的方法。想象一下你在Photoshop中勾勒路径的场景。MDN上是这样介绍 clip-path的:

clip-path属性可以防止部分元素通过定义的剪切区域来显示,仅通过显示的特殊区域。剪切区域是被URL定义的路径代替行内或者外部svg,或者定义路线的方法例如circle()。clip-path属性代替了现在已经弃用的剪切 clip属性。

clip-path的函数具体就不举例了,可以看clip-path相关知识。

相关文章

  • 学习CSS函数

    今天列举5个CSS函数,从使用频率从高到低排列。 calc() 最著名的CSS函数。 支持加法、减法、乘法和除法,...

  • 2019-11-11-本周学习周报

    学习总览 JavaScript 函数作用域、块级作用域 变量提升、函数提升 CSS 新增属性transition ...

  • jQuery API学习之CSS操作函数与动画效果篇

    jQuery CSS操作函数 常用jQuery CSS操作函数介绍: jQuery 常用特效API: jQuery...

  • css3-变形

    .css3-变形 transform 是css的变形属性,通过变形函数,设置具体的变形方式 scale()变形函数...

  • Day24 知识点 part1

    持续 SQL交互学习 JS 函数式编程指南 React.js 小书 碎片 css-animation-101 He...

  • CSS函数

    函数变量 calc()函数支持 "+", "-", "*", "/" 运算;

  • CSS 函数

  • 常用的jQuery方法

    animate函数 运动函数 css each遍历的方法 stop([clearQueue],[jumpToEnd...

  • JQuery CSS选择器

    CSS普通选择器 选择器函数 CSS伪类选择器

  • css的calc和自定义属性

    css计算 CSS calc 只是一个 CSS 函数,类似于rgb,var等,它可以让您对各种 CSS 单元进行加...

网友评论

      本文标题:学习CSS函数

      本文链接:https://www.haomeiwen.com/subject/cgnszktx.html