当前位置: 首页 > news >正文

css 毛玻璃_CSS之函数的小技巧

db06d976e643b7fc5f4648753cab61e7.png

f65fa33b719fe830d20726eac84d9d91.gif 阅读本文约需要8分钟

大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了JS之 undefined与null的知识,今天跟大家分享下CSS之函数的小技巧的知识。

1 CSS之函数的小技巧 CSS现在已经能实现比网站开发者预料到的更多的功能,并且随着时间的推移,样式表语言越来越强大,能实现许多原先需要依靠JavaScript才能实现的功能。在这篇文章中我们将会介绍CSS函数中8种有用的小技巧。 1、纯CSS Tooltip 许多网站还是在使用JavaScript来创建Tooltip效果,但实际上通过CSS能更简单的实现。最简单的方法是在你的HTML代码中添加一个带有提示文本的属性,比如。 然 后你就可以在你的CSS文件中添加以下的代码通过attr()函数来显示提示文字:
.tooltip::after {content: attr(data-tooltip);}
相当简单对吧?当然实际上我们还需要更多的代码来给提示增加样式,但是不用担心,已经有了为此设计的强大且纯粹的叫Hint.css的CSS库和Balloon.css。 ca24ad4bb1fad4998693b887d430b784.png 演示地址: https://codepen.io/airen/pen/NRKpXy 2、使用自定义数据属性和attr()函数 我们已经学会如何使用attr()来创建提示,另外还有一些场景能使用到这个函数 。通过与数据属性相结合,你可以通过很简单的一行HTML代码来创建带有标题和描述的缩略图:
现在你可以通过attr()函数来显示标题与描述:
.caption::after {    content: attr(data-title);    ...}
演示地址: https://codepen.io/airen/pen/jrNBKp 注意:这个方法在浏览器支持方面可能会有一些问题,具体内容你可以查看Accessibility support for CSS generated content这篇文章。

3、CSS Counters

你可以通过CSS Counters实现超棒的功能。这不是一个非常为人熟知的属性,大多数人甚至可能认为浏览器不能很好的支持这个属性,但事实上所有的浏览器都支持这个属性: d0b76a3ac819e2cc534997b51c3164ff.png 但是你不应该将CSS counters使用在有序列表
  1. 上,它更适合使用在类似分页或者图片库下面显示的数字上。你可以通过下面的例子看出如何使用很少的代码(甚至不使用JavaScript)来对选中的项目进行计数,查看地址:
https://codepen.io/airen/pen/ALAqPk CSS counters也非常适合显示可通过拖放进行重新排序的项目列表上动态变化的数字,查看演示地址: https://codepen.io/airen/pen/vXBxVg 正如最后一个例子,我们需要记住,通过该方法生成的内容在可访问性上可能会有些问题。

4、CSS滤镜实现的磨砂效果

在iOS7中,苹果实现了“磨砂玻璃”的效果--半透明的,模糊的元素,看起来像覆盖了一层磨砂玻璃。受到苹果的启发,这种效果被运用到很多地方。在CSS滤镜出现之前要重现这个效果还是有些棘手的。 你必须通过使用模糊图片来实现这种毛玻璃的效果。但现在CSS滤镜得到了几乎所有的主流浏览器的支持,所以要重现这个效果就简单很多了。 4e3c207ebdd198ff85c52c0eb041097b.png 在未来,我们可以通过背景过滤器和filter()函数来实现这样的效果,但目前只有Safari同时支持这两个功能。 有关于CSS的filter更多的介绍可以点击这里进行了解。 5、将HTML元素作为背景 一般我们可以设置一个JPEG或者PNG文件作为背景,或者也可以设置一个渐变的背景。但是你知道可以通过使用element()函数,从而将一个
设置为背景图片吗?现在,element()函数只有在Firefox中得到了支持: f5de8d5cebed05b83403a7271e0ebb0b.png 可能性是无止境的,这里是MDN上的一个例子。 关于CSS的element()函数的相关介绍可以点击这里。 6、通过calc()创建更好的网格 db06d976e643b7fc5f4648753cab61e7.png 流体网格虽然很棒但是仍然存在很严重的问题。比如,在顶部和底部的间距大小几乎不可能与在左边和右边的间距大小相同。另外,若使用的网格系统不一样,标记就会非常混乱。 虽然弹性布局不是最终的解决方案,但是通过与calc()(可以在CSS文件中作为一个属性值)相结合,我们能够创建一个更好的网格。在这里,George Martsoukos列举了很多例子,比如拥有完美间距的画廊网格。 通过使用CSS预编译语言,比如Sass,组建一个创造性的网格系统可以非常简单且易于维护。同时浏览器对calc()的支持几乎完美,因此calc()绝对是你应该掌握的一个功能。 d12ac372bec1ec837842e1444dd4d3f7.png 有关于CSS的calc()函数相关的介绍可以点击这里。

7、通过calc()对齐position:fixed元素

calc()的另一个作用是用来对齐position:fixed的元素。比如,你有一个内容封装器,它左右都有流动的间距,你希望在这个内容封装器内精确对齐 position为fixed的元素,但是这种情况下要计算出left和right属性的具体赋值就很困难。通过calc(),你可以结合相对和绝对的值来精确定位你的元素:
.wrapper {max-width: 1060px;margin: 0 auto;}.floating-bubble {position: fixed;right: calc(50% - 530px); /* 50% - half your wrapper width */}
比如: 25897c9064421b0e7d8d49173a727e53.png 演示地址: https://codepen.io/airen/pen/ozvkAz 有关于这方面的详细介绍可以阅读@brnnbrn写的《Aligning position:fixed Elements with CSS calc》一文。 8、使用cubic-bezier()实现动画 为了使一个网站或者APP的用户界面更具有吸引力,你可使用一些动画,但是可以选择的过渡效果的速度曲线是相当有限的,比如,linear或者ease-in-out。而标准的速度曲线连弹力运动的效果都实现不了。通过使用cubic-bezier()函数,你可以精确实现你想要的动画效果。 有两种方法使用cubic-bezier()——了解背后的机制后自己创建,或者是使用cubic-bezier生成器。 说实话,我使用的是后者。 有关于cubic-bezier()详细的介绍可以点击这里。

总结

更加聪明的使用CSS函数不仅仅可以解决上面的问题比如创建一个更好的网格,它还可以给你更多的创作自由。随着浏览器支持越来越好,你可以使用CSS函数比如calc()来修改和提升一下你之前的CSS代码。

参考文献:https://www.w3cplus.com/css/8-clever-tricks-with-css-functions.html
今天 就分享这么多, CSS之函数的小技巧 学会了多少欢迎在留言区评论,对于有价值的留言,我们都会一一回复的。如果觉得文章对你有一丢 丢帮助 ,请点右下角【在看】,让更多人看到该文章。

db06d976e643b7fc5f4648753cab61e7.png

ce804e2f4102d392118262016ff80a28.gif

相关文章:

  • html js获取session_如何用 JS 一次获取 HTML 表单的所有字段 ?
  • springboot默认数据源如何设置连接数_HTML如何设置复选框、单选框以及默认选项?...
  • pta求阶乘序列前n项和_python在时间序列分析中的简介
  • python链表实现多项式_Python数据结构——链表的实现
  • python的整数类型_Python数字类型Number
  • python变量名有哪些_python变量名命名规则
  • unity3d 求两个点长度_初二数学经典的做对称求最小值问题,也是中考中的常客...
  • java调用shell获取错误信息_python学习笔记---linux/windows调用sas程序
  • python中continue和pass的区别_Python中 break continue pass 之间的异同点
  • python装饰器wrappe_Python进阶-III 函数装饰器(Wrapper)
  • java 传绝对路径无效_java架构师系列1-数据结构(2)数组
  • ros 机械臂复位_DYNAMIXEL PRO PH54-200-S500-R 开源机械臂
  • pb数据窗char只有255_MySQL的基本数据类型
  • c语言 malloc_研究了多年C语言,却还没有搞懂malloc和free
  • 从零开始学python数据分析 电子版_从零开始学Python数据分析与挖掘[PDF][67.81MB]
  • javascript面向对象之创建对象
  • Java反射-动态类加载和重新加载
  • Java精华积累:初学者都应该搞懂的问题
  • Linux快速复制或删除大量小文件
  • Mysql优化
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • swift基础之_对象 实例方法 对象方法。
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • - 概述 - 《设计模式(极简c++版)》
  • 构建工具 - 收藏集 - 掘金
  • 诡异!React stopPropagation失灵
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端相关框架总和
  • 自定义函数
  • #if #elif #endif
  • #if 1...#endif
  • #前后端分离# 头条发布系统
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (备忘)Java Map 遍历
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (三分钟)速览传统边缘检测算子
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (原創) 物件導向與老子思想 (OO)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET实现之(自动更新)
  • .Net小白的大学四年,内含面经
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • @PreAuthorize注解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [100天算法】-不同路径 III(day 73)
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [hdu 4552] 怪盗基德的挑战书
  • [Hive] 常见函数