大放异彩的伪元素——可以做什么?(转)别人分享的文章,发现很不错,果断收藏了

伪元素:before:after可以做的东西是相当惊人的。对于页面上的每一个元素,你拥有了两个更灵活的、而且可以完成其它HTML元素都能完成的东西的元素。它们让一大堆有趣的设计成为可能,而且不会对你的语义标签产生负面影响。这里有一大堆关于这些有趣的效果的示例,你想看的话就接着往下看吧。

多重背景画布

因为你可以将伪元素相对于它们的父类元素绝对定位,你可以想象成每个元素都有两个额外的层。Nicolas Gallagher向我们展示了它的很多种应用,包括多边界、模拟CSS3多重背景、等高栏等。

增加单个元素能创建的形状数目

这上面所有的形状都可以只用一个元素创建,而且更加实用。相对于那些使用1700个div元素来“用纯CSS做一个咖啡杯”的事情,很整齐,但不实用。

这是一个六角星的示例:

CSS

#star-six {
  width: 0;
  height: 0;
  border-left: 50px solid transparent;
  border-right: 50px solid transparent;
  border-bottom: 100px solid red;
  position: relative;
}
#star-six:after {
  width: 0;
  height: 0;
  border-left: 50px solid transparent;
  border-right: 50px solid transparent;
  border-top: 100px solid red;
  position: absolute;
  content: "";
  top: 30px;
  left: -50px;
}

在打印网页时显示链接的URL

@media print {
  a[href]:after {
    content: " (" attr(href) ") ";
  }
}

清除浮动

相比插入额外的非语义标记来清除内联元素的浮动,我们可以使用一个伪元素来完成。俗称"clearfix",并且使用"group"这个类名也更语义化。

CSS

.group:before,
.group:after {
  content:"";
  display:table;
}
.group:after {
  clear:both;
}
.group {
  zoom:1; /* For IE 6/7 (trigger hasLayout) */
}

模拟float:center;

float属性实际上并没有center这个值,尽管我们可能非常需要。float虽然有左浮动和右浮动,但是我们通过使用占位伪元素也可以在两个容器之间占一块位置,并放上一个图像,我们可以看一下效果

使用对应的语言标记代码块

这个站点的当前设计是,使用伪元素通过不同的语言来标记代码块。

HTML

<pre rel="CSS"></pre>

CSS

pre:after {
  content: attr(rel);
  position: absolute;
  top: 22px;
  right: 12px;
}

创建一个完整的图标集

Nicolas Gallagher再次把他的idea提升到了创建一大组图标。没有使用任何图片,每两个元素(最多)只有伪元素。

更高效地使用有限的空间

使用CSS有所得,也必然有所失。我的意思是伪元素的内容可以通过媒体查询有选择地应用或删除。如果空间是有限的,你可能会应用图标,而如果有更多空间的话就可以使用一个更具描述性的单词。

适用内容多的布局

如果你的伪元素是文本,它们继承了和它们的父元素相同的布局样式。但是当你设置它们的内容时,你也可以编辑它们的样式。比如说,使用不同的字体和不同的颜色来让你的标题脱颖而出。

CSS

h2 {
  text-align: center;
}
h2:before, h2:after {
  font-family: "Some cool font with glyphs", serif;
  content: "\00d7";  /* Some fancy character */
  color: #c83f3f;
}
h2:before {
  margin-right: 10px;
}
h2:after {
  margin-left: 10px;
}

创建和浏览器等宽度的条

当你需要适应浏览器宽度的背景,但是元素的内容又不够将其撑开时,你往往会使用非语义化的内联元素包裹或重复且繁琐的间距声明。或许你可以试试使用元素来限制内容的宽度来模拟效果,通过设置伪元素的宽度让标题栏延伸出边界。

创建一个body边框

在左边和右边设置普通的border,在顶部和底部固定伪元素条的位置。完全不使用任何专门的标记,我们就可以得到一个“body border”的效果

CSS

body:before, body:after {
  content: "";
  position: fixed;
  background: #900;
  left: 0;
  right: 0;
  height: 10px;
}
body:before {
  top: 0;
}
body:after {
  bottom: 0;
}
body {
  border-left: 10px solid #900;
  border-right: 10px solid #900;
}

做一个闪烁的按钮

做一个有从白色到透明渐变的伪元素块,把它放在button外边,然后在鼠标悬停时让它从button上过渡移动,这样在鼠标悬停时,你可以得到一个看起来似乎抓到了一点光的按钮。只有Firefox、chrome 26+和IE10+支持。

Anton Trollbäck写的原版效果,Nicolas Gallagher用伪元素写的版本,我自己写的另一个版本

在特殊链接被鼠标悬停时将页面淡出

如果你没有给元素设置相对定位,绝对定位的伪元素就会相对于下一个父元素定位。如果没有写其它的内容,它就会相对于根元素定位。你可以使用它来做一个填充浏览器窗口的元素,将其相对叠齐在主元素下,然后在鼠标悬停于链接上时显示它,做一个页面淡出的效果

将header做成三维丝带的样式

丝带大家都很喜欢!查看一下这个示例的HTML和CSS片段。它使用了一个负的z-index,这在某些情况下需要额外的包裹元素,以防止失去背景不透明的父元素下方的元素。

为有序列表的数字设置样式

你试过为有序列表的数字编写样式吗?你还是做着这些繁琐的事情,比如把他们包裹在span内,为列表项写样式,然后跟着span一起把样式删除。或是胡乱地使用背景图像。或是移除列表样式,然后放进你自己的数字。这些方法都是非常糟糕的。最好是使用伪元素来作为计数器

让数据表可响应

在小屏幕上浏览大型的数据表是很可怕的。它们要么是被放大,并要求水平和垂直滚动,要么是缩得太小,无法阅读。我们可以把CSS媒体查询和伪元素结合起来,使数据表迅速反应并格式化成一个在小屏幕上更具可读性的表格。

创建样式化的提示

使用HTML5数据属性,然后将该属性导入并设置样式为一个伪元素,这样我们就可以使用CSS来创建完全自定义的提示

在导航item之间添加分隔符

如果你想将nav item之间相互分隔开,你的选择是有限的:你可以添加一个边框(很无聊),或是在每个项目之间添加额外的标记(也很无聊)。伪元素可以让你在项目之间使用任何内容来作为分隔。

CSS

.menu li:before {
  content: "// ";
  position: relative;
  left: -1px;
}

做一个完全没有HTML的网站

凭借浏览器自动插入<html>, <head><body>标签的功能,Mathias Bynens展示了如何只使用CSS和伪元素创建网站

构建仅用CSS编写的字体

对每个字母,使用一个HTML元素(包括伪元素)。Yusuke Sugomori通过CSS构建了一整套字体,命名为CSS Sans。这个交互式的demo,可以让你看到Yusuke用于构建字母的所有巧妙技术(如rotate(旋转)、border-radius(圆角半径)、skew(倾斜)等)。

这套字体仅包括了大写拉丁字母,而且非常可爱!CSS Sans项目是一个很棒的建立在各种约束上的富有创造力的演示!

本文根据@Chris Coyier的《A Whole Bunch of Amazing Stuff Pseudo Elements Can Do》所译,整个译文带有我们自己的理解与思想,如果译得不好或有不对之处还请同行朋友指点。如需转载此译文,需注明英文出处:https://css-tricks.com/pseudo-element-roundup/

原文地址:http://www.w3cplus.com/css3/pseudo-element-roundup.html

时间: 2024-09-30 16:54:26

大放异彩的伪元素——可以做什么?(转)别人分享的文章,发现很不错,果断收藏了的相关文章

伪元素控制网页表单样式

当开发web应用程序时,表单样式是个头疼的问题.以前,web开发人员不得不接受一个现实,就是由客户端浏览器控制表单样式.然而,作者通过伪元素给web渲染引擎添加钩子,就可以控制表单的显示. 然而,所有这些伪元素都是依赖于特定浏览器引擎的(所以要带有浏览器引擎前缀),这样方便区分特定的浏览器引擎.以下是我自己搜集整理的,在Trident, Gecko, 和 WebKit浏览器引擎下面都可用的伪元素列表.¬在我写这篇文章的同时,发布了一些webkit的伪元素,所以现在伪元素基本统一了.我不知道Pre

[CSS]利用伪元素实现一些特殊图形

给定的html代码是: <div class='square'></div> 平常实现我们常是通过添加小的icon来实现,不仅需要添加图片资源,还需要改动html结构. CSS伪元素 css中伪元素有四个,分别是:first-line,:first-letter,:before,:after.其中前两个分别选择的是目标元素内第一行文本和第一个字母,可以为其添加多余样式. 而最常用的就是:before和:after,这两个伪元素与前两个的用法不同,而用处也更大. :before,:a

伪元素 控制表单样式

转载 http://www.csswang.com/exp/4842.html 当开发web应用程序时, 表单样式 是个头疼的问题.以前,web开发人员不得不接受一个现实,就是由客户端浏览器控制 表单样式 .然而,作者通过 伪元素 给web渲染引擎添加钩子,就可以控制表单的显示. 然而,所有这些 伪元素 都是依赖于特定浏览器引擎的(所以要带有浏览器引擎前缀),这样方便区分特定的浏览器引擎.以下是我自己搜集整理的,在Trident, Gecko, 和 WebKit浏览器引擎下面都可用的伪元素列表.

也玩before 和after伪元素玩五颜六色的导航

demo地址:http://codepen.io/tianzi77/pen/gpEMxb 伪元素能做什么呢? "伪元素",顾名思义.它创建了一个虚假的元素,并插入到目标元素内容之前或之后. 单词"pseudo"是希腊语的英译,它的基本意思是"说谎的,不诚实的,错误的."因此叫伪元素是适合的.因为在文档中它不实际改变什么.相反的,它们是像幽灵一般的元素插入在css中,他们对用户是可见的,可以通过css控制. 基本语法 :before 和 :afte

[CSS]利用伪元素实现一些特殊图形 from baidu校招

最近在博客园看到某人发的baidu校招题目,说是要用一行html代码实现下面的这个图形: 给定的html代码是: <div class='square'></div> -----------------------以上为背景------------------------------ 正方形当然很好做,但是右侧突出来的小角标就得自己想办法了.所以,既然没有到有,自然是用上了CSS中的伪元素. 这个形状跟我们平时经常遇到的小气泡和下拉栏差不多 平常实现我们常是通过添加小的icon来实

学习使用:before和:after伪元素

(此文没有门槛,浅显易懂,适合新手入门) 之前以为伪元类选择器用的不多,所以没怎么关注,现在发现:before和:after伪元素已经在前端开发中获得了相当多的关注,所以来研究一下,加深印象. 尽管css 规范中包含其他的伪元素,但是目前我们焦点是 :before 和 :after.因此,为了简便起见,我所说的“伪元素”泛指这两个特别的伪元素. 伪元素能做什么呢? “伪元素”,顾名思义.它创建了一个虚假的元素,并插入到目标元素内容之前或之后.因为在文档中它不实际改变什么.相反的,它们是像幽灵一般

我不知道你知不知道我知道的伪元素小技巧

伪元素 伪元素能做什么?我们要他有何用?它能为我们解决什么问题?和其他的方法相比她有什么有点?我们为什么要使用它? 伪元素和伪类一样,添加到选择器,但是不是描述状态,他允许我们为元素某些部分设置样式:利用伪元素,我们可以简化页面的html标签,同时用起来也很方便,善于使用伪元素可以让你的页面更加地简洁优雅.之所以叫伪元素,是因为他修饰不在文档树中的部分:不是真实存在的: 伪元素实用小技巧 1.清除浮动 何谓清除浮动-?一个父元素的所有子元素如果都是浮动的,那么这个父元素是没有高度的;父元素并没有

[ css 伪元素 :before :after ] css中before, after伪元素特性表现解释和实例

一.特性表现one: 不能左右:empty伪类 CSS3选择器中有个:empty伪类,表示当元素里面什么都没有的时候(包括空格.标签内换行),应用相关样式.在现代web网页开发制作中,非常常用也非常方便. 例如,某元素类名是.box, 如下HTML和CSS: <div class="box"></div> .box { background-color: #cd0000; } .box:empty { background-color: #fae6e6; } 因

关于css伪类,伪元素详解总结

伪类 伪类就是一种虚构的状态或者说是一个具有特殊属性的元素可以使用CSS进行样式修饰.常见的几种伪类是: :link , :visited , :hover , :active , :first-child 以及 :nth-child. 这里还有很多,接下来我们将要逐一进行介绍.此外,伪类前面总是加一个冒号(:).之后跟着伪类的名字或者是括号里面的值,如:nth-child. 伪元素 关于伪元素,它们更像是虚拟的元素可以和HTML元素一样对待.区别在于它们并不存在于文档树或者DOM之中.这意味着