css函数的8个奇妙之处

CSS 语言比许多 web 程序员认为的更加强大。这种样式表语言正变得越来越强大,给浏览器带来了原本要用 JavaScript 实现的功能。本文将介绍无需 JavaScript 的 CSS 函数的 8 个妙用。

1. 纯 CSS 的 tooltips

很多网站仍在用 JavaScript 创建 tooltips,但实际上,用 CSS 实现更加简单。最简单的方法是在 HTML 代码的 data 属性中提供 tooltip 文本,比如: data-tooltip="…" 。这样就可以在 CSS 中添加以下代码来在 attr() 函数中显示 tooltip 文本了:

.tooltip::after {

content: attr(data-tooltip);}

很好懂,对吧?当然要想设计 tooltips 还需要更多的代码,但是不必担心,有一款很棒的纯 CSS 库就是为此而生的,叫做 Hint.css 。

2. 使用自定义data 属性和 attr() 函数

我们已经在 tooltips 中用过 attr() 了,但是还有一些情况也可以用 attr()。结合 data 属性,可以通过 title 和 description 仅用一行 HTML 代码创建缩略图:

<a class="caption" href="#" data-title="Vulture" data-description="...">

<imgsrc="img.jpg" alt="Illustration"/></a>

接下来就可以用 attr() 函数来显示 title 和 description 了:

.caption::after {

content: attr(data-title);

...

}

这里提供一个 hover 上去有字幕动画效果的缩略图例子:

See the Pen Thumbnail with Animated Captions by SitePoint ( @SitePoint ) on CodePen .

说明:CSS 生成的 content 是 不易获取  的。在此方面,这篇文章的  关于获取 CSS 生成 content 的内容 部分可以借鉴。

3. CSS 计数器

CSS 计数器可以做出神奇的效果。计数器不是最有名的特点,多数人可能认为它的支持性不够好,但实际上,所有浏览器都支持 CSS 计数器:

计数器用于分页或是在 gallery 下方展示项目数量都很棒,但是不应该用在有序列表( <ol> )上。也可以用 CSS 计数器计算已选项的数量,代码量会令你惊叹(并且没有 JavaScript):

See the Pen Selection CSS Counter by Will Boyd ( @lonekorean ) on CodePen .

在可拖放排序的列表中用 CSS 计数器动态改变数量也很赞:

See the Pen CSS Counters drag-and-drop demonstration by SitePoint ( @SitePoint ) on CodePen .

像上个例子一样,记住——CSS 生成的 content 是 不易获取 的。

4. CSS filters实现毛玻璃效果

苹果的 iOS 7 给我们带来了“毛玻璃”效果——看起来像磨砂玻璃窗的、半透明、模糊的元素。在苹果的推行下,在越来越多的地方可以见到这种效果了。再现这种效果有点复杂——在有 CSS filters 之前,只能用 模糊的半透明图片 来实现毛玻璃效果。目前几乎所有的主流浏览器都支持 CSS filters, 再现毛玻璃效果就简单多了 。

目前 backdrop filters 和 filter()?函数 只有 Safari 支持,但是将来我们就可以用它们实现相似的效果了。

5. HTML Elements做背景图

通常都是指定 JPEG 或 PNG 文件充当背景图或渐变。但是你知道 element() 函数可以用  <div> 做背景图吗?目前只有 Firefox 支持 element() 函数:

Element() 函数拥有无限可能,这里有个 MDN 上的 例子 。

6. calc() 实现智能栅格

Fluid grids(流体网格划分)很棒,但是有几个严重的问题。例如,无法实现顶部和底部的空隙和左右的空隙大小相同。此外,根据所使用的栅格系统不同,标记有些混乱。即使是 flexbox 也不是做好的解决方法。但是有了可在 CSS 中作为 value 使用的 calc() 函数,栅格会变得更棒。在 ?SitePoint?的此篇教程 中,George Martsoukos 列举了几个实例,比如间隔完美的网格画廊。通过 CSS 预编译器,比如 Sass,利用 calc() ?实现一套栅格系统 非常简单,并且易于维护。 calc() 的浏览器支持性近乎完美,极力推荐使用。

7. CSS calc() 对齐 position:fixed 元素

calc() 函数的另一个使用场景是对齐 fixed 定位的元素。例如,有一个左右均有空隙的 content wrapper,如果想要对 wrapper 内的一个 fixed 元素精准对齐——要算出给“right”或是“left”属性赋值多少是很困难的。用 calc() 可以结合 relative 和 absolute 的值来精准对齐元素:

.wrapper {

max-width: 1060px;

margin: 0 auto;}.floating-bubble {

position: fixed;

right: calc(50% - 530px); /* 50% - half your wrapper width */}

这里提供一个例子:

See the Pen Aligning “position: fixed” elements with CSS calc() by SitePoint ( @SitePoint ) on CodePen .

8. cubic-bezier() 动画

要想网站或 app 的 UI 更加引人注目的话,可以使用动画。但是标准的 easing 选项非常有限,比如“ linear ”或是“ ease-in-out ”。像是弹跳动画更是标准选项无法实现的。使用 cubic-bezier() 函数,就可以让元素按你想要的方式去动画。

使用 cubic-bezier() 有两种方式—— 理解背后的数学知识然后自己创建,或者使用 cubic-bezier?生成器 。

说实话,我喜欢后一种方式。

结语

聪明使用 CSS 函数不仅可以解决像是建立更合理的栅格系统等难题,它也给了你更多机会去创造。随着浏览器的支持性越来越好,你真的应该重新审视一下你的 CSS 代码,考虑用 calc() 等函数进行优化了。

文章来源:WEB前端-伯乐在线

时间: 2024-10-21 08:42:23

css函数的8个奇妙之处的相关文章

css函数,来自于jQuery,获取非行间样式

css(oDiv,'width')获取样式(会把样式的结果给返回出去) css(oDiv,'width','200px')       设置样式 简单来说,css函数给两个参数是获取,给三个参数是设置. html格式: <body> <div id="div1" style="width:200px; height:200px; background:red;"> </div> js代码: function css() { if(

agruments应用——求出函数参数的总合&amp;&amp;css函数——设置/读取对象的属性&amp;&amp;当前输入框高亮显

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

css函数总结

CSS函数 css 有以下几个常用的函数 函数 描述 attr() 返回选择元素的属性 calc() 返回计算后的css的属性值,可以动态的计算元素的长度或者宽度. linear-gradient() 创建一个线性渐变的图像(给元素设置渐变的背景色) radial-gradient() 创建一个径向渐变的图像(发散渐变) repeating-linnear-gradient() 用重复的线性渐变创建图像 repeating-linnear-gradient() 用重复的径向渐变创建图像 css

jQuery操作DOM和CSS函数

function des html jquery result html() 获取元素中HTML内容 <div id="box" style="color:red"> <strong>www.ycku.com</strong> <p>www.ppp.com</p></div> alert($('#box').html()); <strong>www.ycku.com</stro

【笨木头Lua专栏】基础补充02:函数的几个特别之处

没想到距离上一篇基础补充已经过了1年多了,近期准备捡回Lua,把基础都补补,今天来聊聊Lua的函数吧~ 0.环境 我突然对Lua又大感兴趣的最主要原因是,Cocos Code IDE開始浮出水面了,它是Cocos2d-x官方出的一款专门针对Cocos2d-x+Lua或JS的IDE.试着用了,尽管不能说非常完美.但,非常值得期待. 所以,本文使用的Lua编辑器就选它了,大家就任意吧~ 笨木头花心贡献,哈?花心?不.是用心~ 转载请注明,原文地址:http://www.benmutou.com/ar

Jquery css函数用法(判断标签是否拥有某属性)

判断一个层是否隐藏: $("#id").css("display")=="none"  ; 在所有匹配的元素中,设置一个样式属性的值: $("p").css("color","red"); 把一个"名/值对"对象设置为所有匹配元素的样式属性.这是一种在所有匹配的元素上设置大量样式属性的最佳方式 1    $("p").css({ color: &q

关于使用rem单位、css函数calc()进行自适应布局

一.关于css中的单位 大家都知道在css中的单位,一般都包括有px,%,em等单位,另外css3新增加一个单位rem. 其中px,%等单位平时在传统布局当中使用的比较频繁,大家也比较熟悉,不过px单位在进行自适应布局的过程当中则会有些力不从心,大部分的解决方案是使用%为单位配合@media媒介查询来进行自适应布局. 不过还有另外一个css3新添加的单位也同样可以拿来进行自适应布局,在我看来这种方法也更加方便直观. 1.em和rem 首先先介绍一下em,这个单位是根据其父元素的字体大小来进行计算

jquery使用css函数设置背景色无效解决办法

外部的css样式为: #imageArea{ width: 200px; height: 300px; background-color: #eee !important; } 通过 以下代码来修改其背景色是无效的 $("#imageArea").css("background-color", "#444444") $("#imageArea").css("background-color","#

jquery中css()函数的用法

#1div#2#1div#2一个页面中有多个相同元素如#1br /#2#3lt;div#3gt;层1#3lt;/div#3gt;#1br /#2#3lt;div#3gt;层2#3lt;/div#3gt;#1br /#2#3lt;div#3gt;层3#3lt;/div#3gt;#3nb#7p;#1/div#2#1p#2#3nb#7p;#1/p#2#1p#2$("div")和c#7#7("width")#3nb#7p;#1/p#2#1p#2获得的是div中的第一元素的c