前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >css3中的函数,你曾用几个?

css3中的函数,你曾用几个?

作者头像
Maic
发布于 2023-09-11 05:19:02
发布于 2023-09-11 05:19:02
23200
代码可运行
举报
文章被收录于专栏:Web技术学苑Web技术学苑
运行总次数:0
代码可运行

css3在切图中占有半壁江山的位置,所谓人靠衣装,马靠鞍,一个网站好不好看除了设计本身,合理的布局以及完美css布局会让视觉更上一层楼

今天主要分享几个在css3中常用的函数,希望看完在项目中有所思考和帮助

正文开始...

calc

这是一个计算函数,通常在业务上使用也是非常之多,比如一个场景,一个三栏结构,如果想让内容铺满整个内容,但是头部与底部高度固定

有人说这个布局最简单,首先我想到的就是flex,比如你很快像下面这样写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="app">
  <header>我是Header</header>
  <main>这是内容</main>
  <footer>这是footer</footer>
</div>

对应的css如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  * {padding: 0;margin:0;}
  html,body {height: 100%;}
  .app {
      display: flex;
      flex-direction: column;
      height: 100%;
  }
  .app header {
     height: 50px;
     line-height: 50px;
     background-color: red;
  }
  .app main {
      flex:1;
      background-color: green;
  }
  .app footer {
      height: 80px;
      line-height: 80px;
      background-color: #111;
      color: #fff;
  }

预览

有人还想到另一种方式,我用grid实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* {padding: 0;margin:0;}
html,body {height: 100%;}
.app {
      height: 100%;
      display: grid;
      grid-template-columns: 1fr;
      grid-template-rows: 50px 1fr 80px;
  }
  .app header {
     line-height: 50px;
     background-color: red;
  }
  .app main {
      background-color: green;
  }
  .app footer {
      line-height: 80px;
      background-color: #111;
      color: #fff;
  }

张三看到使用grid,嗯,very good,小伙子骨骼惊奇,我再授一种方案

我们知道块级元素文档流是从上往下依次排列的,所以我只需要借助这个特性,并且借助calc就可以实现了

  • 单独计算main中间内容的高度height: calc(100% - 50px - 80px)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 * {padding: 0;margin:0;}
 html,body {height: 100%;}
  .app {
      height: 100%;
  }
  .app header {
     height: 50px;
     line-height: 50px;
     background-color: red;
  }
  .app main {
      background-color: green;
      height: calc(100% - 50px - 80px);
  }
  .app footer {
      height: 80px;
      line-height: 80px;
      background-color: #111;
      color: #fff;
  }

嗯,非常不错,小弟甘拜下风。

attr

calc很强大,但今天有一个css3技能必须让你感受她的强大,那就是传说中的attr

attr这个函数是一个非常有名的函数,那么她可以做什么呢?

在你的业务中,假设你的一个列表中需要展示不同的图标,那么你就可以借助attr来巧妙的实现你的需求

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<head>
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_3844652_3qxwqjxiuyp.css">
 <style>
    * {padding: 0;margin:0;}
    html,body {height: 100%; }
    #app {
        height: 100%;
    }
    #app div::before {
        font-family: "iconfont";
        content: attr(data-uniCode);
    }
    </style>
</head>
 <body>
   <div id="app"></div>
  </body>
 <script>
  const app = document.getElementById('app');
  const dataSource = [
      {
          title: "公众号:Web技术学苑",
          uniCode: "&#xe611;"
      },
      {
          title: "公众号:前端之巅",
          uniCode: "&#xe60f;"
      },
      {
          title: "公众号:前端之神",
          uniCode: "&#xe8bc;"
      },
      {
          title: "公众号:itclanCoder",
          uniCode: "&#xe60d;"
      }
  ];
  let htmlTemplate = "";
  dataSource.forEach(item => {
      htmlTemplate+=`<div data-uniCode=${item.uniCode}>${item.title}</div>`
  });
  app.innerHTML = htmlTemplate;
</script>

我们发现在源数据中,我们使用了uniCode,这个uni-code实际上就是我们的阿里矢量图标库

预览结果

attr是一个很强大的函数,除了在业务中你使用它来加载unicode图标,你也可以用来加载一段文字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
  <div data-text="Web技术学苑"></div>
</div>

对应的css如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<style>
  * {padding: 0;margin:0;}
  html,body {height: 100%; }
  #app {
      height: 100%;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
  }
  #app div::before {

      content: attr(data-text);
      display: block;
  }  
</style>

var

这是一个css3中非常有用的一个函数,通常来讲你想加载css3中的变量就必须使用var,比如说

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <div id="app">
  <div class="text">Web技术学苑</div>
</div>

对应的css如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<style>
  * {padding: 0;margin:0;}
  html,body {height: 100%; }
  :root {
      --text-color: red;
  }
  .text {
    color: var(--text-color)
  }
</style>

var函数基本在换肤主题,必然是一个高频函数,因此它是一个很常用的函数

clamp(min,default,max)

min最小值,default默认首选值,max最大值,当default大于max,则会取max,当default小于min时,则会取min,当在minmax之间时,则会取默认值。通常我们可以保证一个元素的最大值与最小值,在这范围内,就获取默认值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="text">
    <h1 class="title">Web技术学苑</h1>
    <p class="content">hello world</p>
  </div>

对应的css

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 * {padding: 0;margin:0;}
html,body {height: 100%; font-size:16px }
:root {
    --text-color: red;
}
.text {
    color: var(--text-color);
    width: min(500px, calc(80% + 100px));
    background-color: green;
}
.text .title {
    font-size: clamp(2rem, 2.5vw, 3rem);
}
.text p.content {
    font-size: max(1rem, 2rem);
}

repeat

这个函数,如果你有用过grid布局,那么一定会有所了解,主要用于在grid-template-rowsgrid-template-columns

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="text">
   <div>1</div>
   <div>2</div>
   <div>3</div>
</div>

对应css3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.text {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
}
.text >div:nth-of-type(2n) {
    background-color: red;
}

换成repeat函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.text {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
}

url

这是一个平时用到了但是你肯定没注意的css函数,因为你在用背景图片的时候肯定有用到

  • 在背景图片上使用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.text >div.img {
  display: block;
  height: 800px;
  background: url("https://t7.baidu.com/it/u=4162611394,4275913936&fm=193&f=GIF") no-repeat;
}
  • 在伪类元素上使用url
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  .text >div.img2::before {
  content: url("https://t7.baidu.com/it/u=4162611394,4275913936&fm=193&f=GIF");
  display: block;
}

对应的结构如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <div class="text">
    <div class="img"></div>
    <div class="img2"></div>
 </div>

fit-content

这个函数在grid布局中会有用到,相当于设置最大阀值,你可以把它当成max-width或者max-height

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="text">
  <div class="cursor">Web TEACH LEARN ARE YOU READLY </div>
  <div class="cursor">HELLO WORLD</div>
  <div class="cursor">JAVASCRIPT</div>
</div>

对应的css如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.text{
    display: grid;
    grid-template-columns: fit-content(100px) 1fr fit-content(300px);
    column-gap: 20px;
    height:200px;
}
.text >div:nth-of-type(1) {
    background-color: red;
}
.text >div:nth-of-type(2)  {
    background-color: green;
}
.text >div:nth-of-type(3)  {
    background-color: blue;
}

tan

这是一个数学中的正切三角函数,通常在我们业务中可能会很少遇到,但是在实现一个复杂的结构时,我们除了用图片替换,可能css也是可以绘制的,比如我们用css绘制一个平行四边形

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="box-wrap">
  <div class="box"></div>
</div>

对应的css如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 * {padding: 0;margin:0;}
  html,body {height: 100%; font-size:16px }
  :root {
      --bg: red;
      --defaultBg: #e5e5e5;
      --width: 400;
      --height: 200;
      --angle: 30deg;

  }
  #app {
      overflow: hidden;
  }
  .box-wrap {
      width: 100%;
      height: calc(1px * var(--height));
      display: flex;
      justify-content: center;
      position: relative;
  }

  .box {
      width: calc(1px * var(--width));
  }
  .box:nth-of-type(1):before{
      content: "";
      display: block;
      width: 100%;
      height: calc(1px * var(--height));
      transform: skewX(calc(var(--angle) * 1));
      background-color: var(--bg);
      border-left: 1px solid #e5e5e5;

  }

counter

这是一个计数函数,在一些特殊的列表中,我们可以巧妙的用这个函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
   <ul>
    <li>hello</li>
    <li>world</li>
    <li>JAVA</li>
    <li>JAVASCRIPT</li>
    <li>PYTHON</li>
   </ul>
</div>

对应的css

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  #app {
      overflow: hidden;
      padding: 50px;
  }
  #app  ul {
      counter-reset: count;
  }
  #app ul li {
      counter-increment: count 1
  }
  #app ul li::marker {
      content: "【"counter(count)"】"
  }

总结

  • 我们主要介绍了在css3常用的高频函数,比如calc,var,attr,repeat,url等,通常来讲有些函数可能用的并不是会那么多,比如countertansin函数等
  • 另外还有不少不太常用的css3函数,具体可参考Function[1]
  • 本文示例code example[2]

参考资料

[1]

Function: https://developer.mozilla.org/en-US/docs/Web/CSS/attr

[2]

code example: https://github.com/maicFir/lessonNote/tree/master/html/14-css函数

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Web技术学苑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
CSS布局(一)
只需要让header,footer充满整个屏幕,header的内容区、foooter的内容区,content设置一样的宽度,然后都设置 margin: 0 auto实现居中即可。
赤蓝紫
2023/03/11
1.4K0
CSS布局(一)
【Web开发】纯前端实现科技企业官网首页
本篇博文简单实现一个科技类产品官网的主页,图片素材来自于苹果官网。 相关教程参考自https://www.bilibili.com/video/BV117411n7R1 源代码下载:https://download.csdn.net/download/qq1198768105/85630862
zstar
2022/06/14
1.2K0
【Web开发】纯前端实现科技企业官网首页
前端主流布局方法
请注意,本文编写于 153 天前,最后修改于 80 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/18
2.3K0
前端主流布局方法
分享一些关于 CSS Grid 基础入门知识
在本文中,我们将通过一些实际示例来学习CSS网格,以帮助你更好地理解。让我们开始吧。
前端达人
2023/08/31
2590
分享一些关于 CSS Grid 基础入门知识
前端常用布局方案总结
若元素为行内块级元素,可以通过为其父元素设置text-align: center 实现水平居中。
越陌度阡
2022/05/06
2.8K0
前端常用布局方案总结
《前端技术基础》第03章 CSS 布局【合集】
CSS 布局(Cascading Style Sheets Layout)是网页设计的核心,定义元素位置、大小和排列,构建页面结构。其布局模式多样:Flexbox 通过display:flex激活,借助justify-content和align-items灵活排列元素,适用于导航栏、卡片列表;CSS Grid 用grid-template-columns和grid-template-rows定义二维网格定位元素,常用于电商、多列图文排版;传统流式布局基于文档流,元素顺序排列,自适应屏幕宽度,保障页面可读性。这些模式协同,助力开发者打造适配多设备的优质布局。
Rossy Yan
2025/01/24
1730
《前端技术基础》第03章 CSS 布局【合集】
22 个鲜为人知的 CSS 高招让你技高一筹
英文 | https://betterprogramming.pub/22-css-tricks-that-can-make-you-a-layout-ninja-452847fba639
前端达人
2021/09/08
1K0
建议收藏!总结了42种前端常用布局方案
对 CSS 布局掌握程度决定你在Web开发中的开发页面速度。随着Web技术的不断革新,实现各种布局的方式已经多得数不胜数了。
用户6835371
2021/11/26
4.3K0
全栈之前端 | 6.CSS3基础知识之网页几种布局方法学习(1)
描述: 前面相信大家已经跟着【WeiyiGeek】作者一起学习了CSS基础知识了,并且了解了盒子模型、以及元素的定位浮动方面的知识。现在我们在此基础上继续深入学习CSS布局,它是学习CSS之路上一个重点,是在进行前端开发时常常使用到的,所以说我们需要认真学习,若有不懂的地方可以在文章末尾,以及作者交流群【在公众号回复微信交流群】进行留言交流。
全栈工程师修炼指南
2023/10/31
7870
全栈之前端 | 6.CSS3基础知识之网页几种布局方法学习(1)
10分钟理解CSS3 Grid
上一篇文章我们介绍了 css3 flexbox,今天我们再来说说css3的另外一个强大的功能:Grid。 Grid做前端的同学应该都很熟悉了,翻译成中文为“栅格”,用过bootstrap、semantic ui、ant design的同学肯定都了解grid layout(删格布局),以往css框架中的grid布局一般是通过float和百分比的宽度实现的,这种实现有几种缺点:
MudOnTire
2019/05/26
7600
【Web前端】项目实训:CSS基本布局理解
对CSS学习已经接近尾声,下面你可以对以下两道“小卡拉米”测试进行测试下CSS理解程度。
一条晒干的咸鱼
2024/11/19
2220
【Web前端】项目实训:CSS基本布局理解
万字总结 CSS 布局
本文总结了主流的几种 CSS 的布局方法,无论你是一个想要学习 CSS 布局的新手,还是一个比较有经验但想要进一步巩固与了解最新CSS布局知识的前端开发者,这篇指南都能帮你全面了解如今CSS布局发展的现状。
用户8921923
2022/10/24
5.8K0
万字总结 CSS 布局
【HTML | CSS | JAVASCRIPT】耗时一下午,整理出了一个精美的响应式登陆注册表单(附源码)
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要: 各位C站的小伙伴们,你想要获得一款精美的响应式登录页面吗!收藏我并且关注博主,让我们拿起电脑一起练,一路火光带闪电!无论是电脑,手机还是平板都可以完美适配哦! 🤟每日
THUNDER王
2023/02/23
5410
【HTML | CSS | JAVASCRIPT】耗时一下午,整理出了一个精美的响应式登陆注册表单(附源码)
前端系列第3集-如何理解css盒子型?
CSS盒子模型是一种设计网页布局的概念,它将每个HTML元素表示为一个盒子,该盒子由内容、内边距、边框和外边距组成,这些部分共同构成了一个完整的盒子模型。
达达前端
2023/10/08
4160
前端系列第3集-如何理解css盒子型?
【CSS3——页面布局】画一只考拉(蓝桥杯真题-2341)【合集】
这段 HTML 代码构建了页面的基本结构,为绘制考拉提供了元素容器。主要通过嵌套的 <div> 元素来划分不同的部分,每个部分都有对应的类名,方便在 CSS 中进行样式设置。
Rossy Yan
2025/02/06
1080
【CSS3——页面布局】画一只考拉(蓝桥杯真题-2341)【合集】
如何使用Flexbox和CSS Grid,实现高效布局
CSS 浮动属性一直是网站上排列元素的主要方法之一,但是当实现复杂布局时,这种方法不总是那么理想。幸运的是,在现代网页设计时代,使用 Flexbox 和 CSS Grid 来对齐元素,变得相对容易起来。
葡萄城控件
2022/05/09
3.6K0
如何使用Flexbox和CSS Grid,实现高效布局
CSS 中的 Grid 布局 完全指南
Grid 是一个基于二维网格布局的系统,有了它我们可以非常方便的实现过去很复杂布局,无需再使用float, inline-block, position 这些本质上是 hack 的方法。
羽月
2022/10/08
4K0
CSS 中的 Grid 布局 完全指南
使用网络构建复杂布局超实用的技巧,赶紧收藏吧!
作者:Shadid Haque 译者:前端小智 来源:soshace 点赞再看,微信搜索 【大迁世界】 关注这个没有大厂背景,但有着一股向上积极心态人。本文 GitHub https://github.com/qq44924588... 上已经收录,文章的已分类,也整理了很多我的文档,和教程资料。 1024程序员节,160就能买到400的书,红宝书 5 折 网格布局是现代CSS中最强大的功能之一。使用网格布局可以帮助我们在没有任何外部 UI 框架的情况下构建复杂的、快速响的布局。在这篇文章中,将会介绍所有
前端小智@大迁世界
2020/10/30
1.1K0
使用网络构建复杂布局超实用的技巧,赶紧收藏吧!
【程序员装B系列】八种CSS3按钮动画特效
这是一款CSS3按钮动画特效。在该特效中,提供了八种按钮动画特效。每种特效在鼠标悬停到按钮上面的时候,都会触发按钮动画。
用户5997198
2019/09/19
1.2K0
【程序员装B系列】八种CSS3按钮动画特效
CSS3 新特性
如同人类的的进化一样,CSS3是CSS2的“进化”版本,在CSS2基础上,增强或新增了许多特性, 弥补了CSS2的众多不足之处,使得Web开发变得更为高效和便捷。
用户9615083
2022/12/25
5570
CSS3 新特性
推荐阅读
相关推荐
CSS布局(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验