原文地址:http://css-tricks.com/css-content/


CSS中有一个属性content,只能和伪元素:before:after一起使用,他们的写法像伪类选择器(前面有冒号),但是他们并不能选择页面上的任何元素,却可以往页面上添加一些东西,通常这样来写:

.email-address:before {
content: "Email address: ";
}

我们把这段CSS代码放到下面的HTML中:

<ul>
<li class="email-address">chriscoyier@gmail.com</li>
</ul>

效果如下:

• Email address: chriscoyier@gmail.com

或许这段代码还不能让你流口水,但伪元素的content很有用,可以做许多很酷的事情。来看一下一些创意和注意事项。

Hey! That's content not design!

The first concern might be that of a separation-between-content-and-design purist.(不知道如何翻译,o(╯□╰)o)。你可以用CSS content向页面中添加文本内容,这样做打破上面提到阻碍。而且我们也这样做了,但这并不是说明没有讨论的意义,如果你多CSS content和它的用法有任何的想法,请在评论里留言。 (这一段不知道在讲啥,估计就是在讲,讨论CSS content的用法很有意义,o(╯□╰)o)

我认为这及其的适合CSS,想一下上面的例子,我们使用email-address类给所有元素的前面添加了文本*Email address: *。这使得content的意义更加清晰。或者在网站重构的过程中,那些邮件地址没地可放,就可以使用一个小的图标代替。这符合CSS的思想,既然html元素不需要改变,那么让CSS做出完美的改变。

Using Special Characters

在CSS Content里使用特殊的字符有点怪异,需要使用ASCII码,当然这里有一张表很方便。在这个表里版权符号©是&#169,所以ASCII码是169。然后将这个数字填入这里,可以转换成我们想要的CSS。

下面这些比较常用:

\2018 - 左单引号

\2019 -右单引号

\00A9 - 版权

\2713 - 对号

\2192 - 右箭头

\2190 - 左箭头

Example Trick: Checkmark visited links

让点击过的链接有个对勾

#main-content a:visited:before {
content: "\2713 ";
}

Using Attributes

你可以使用content向元素中插入属性,例如,一个链接或许含有title属性。

<a title="A web design community." href="http://css-tricks.com">CSS-Tricks</a>

你可以通过content属性获取title属性

a:before {
content: attr(title) ": ";
}

任何属性都可以这样用,如果你想向HTML插入一些内容,但并不可见,可以使用HTML5的data-*

Example Trick: CSS3 tooltips

基于title属性的链接提示:

a {
color: #900;
text-decoration: none;
} a:hover {
color: red;
position: relative;
} a[title]:hover:after {
content: attr(title);
padding: 4px 8px;
color: #333;
position: absolute;
left:;
top: 100%;
white-space: nowrap;
z-index: 20px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: 0px 0px 4px #222;
-webkit-box-shadow: 0px 0px 4px #222;
box-shadow: 0px 0px 4px #222;
background-image: -moz-linear-gradient(top, #eeeeee, #cccccc);
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #eeeeee),color-stop(1, #cccccc));
background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc);
background-image: -moz-linear-gradient(top, #eeeeee, #cccccc);
background-image: -ms-linear-gradient(top, #eeeeee, #cccccc);
background-image: -o-linear-gradient(top, #eeeeee, #cccccc);
}

这个实例使用title属性,或者你在网络上看到的其他的例子也是使用的title属性。但是,记住浏览器都有自己的提示框,可能会覆盖,就会显得很怪异。我尝试着去截图展示这一问题但不知什么原因没成功。没有方法控制,除非不使用title属性而使用HTML5的data-*。

Points to consider

  • Firebug无法定位伪元素。Webkit浏览器中的web inspector可以定位,但不会显示他们的属性\值,我听说IE的开发工具也可以,但不确定。
  • Webkit浏览器中,伪元素为块级时才可旋转,Firefox中内联元素就可以。
  • Firefox 3.0中,伪元素不能绝对定位。
  • 伪元素不能使用transition或者animation

Example Trick: Fancy email link popouts

下面实现这样的效果:有一列名字,当鼠标划过名字时,邮件地址从名字后边划出,为了使HTML更加整洁,我决定使用:after伪元素和-webkit-transition来完成,但是,唉,你不能对伪元素使用transition或者animation。

使用伪元素只能弹出邮件地址,但并不能实现划出这样的效果。我又使用了span标签。看demo页面

Example trick: display full links in print stylesheets

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

Browser support / Accessibility

主流浏览器都是支持的(Firefox 3+, Safari 3+, Chrome 3+, Opera 10+, and Internet Explorer 8+).支持列表

考虑到可访问性,我不能100%保证。

翻译水平有限。。。惨不忍睹。

[译]CSS content的更多相关文章

  1. CSS content内容生成技术以及应用

    content属性早在CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容.此特性目前已被大部分的浏览器支持:(Firefox 1.5+, Safari 3.5+, IE ...

  2. CSS content内容生成技术以及应用(转)

    一.哗啦哗啦的简介 zxx://这里“哗啦哗啦”的作用是为了渲染一种氛围.content属性早在 CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容.此特性目前已被大部 ...

  3. CSS Content 属性

    content 属性,用在after,before伪元素上,用于在选中的元素前后插入内容. 插入的内容多种多样, 纯文字 h1::after{ content:"h1后插入内容" ...

  4. CSS content换行技术实现字符animation loading效果

    一.之前我的字符loading实现 关于字符打点动画实现,我之前使用过box-shadow模拟,还有border+background模拟,还有使用text-shadow实现,以及今年自认为是最好的实 ...

  5. ISO in CSS content

    Name   Numeric Description Hex ISO in CSS content Octal       no-break space %A0 p:before { content: ...

  6. CSS content应用

    一.简介 content属性早在 CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容.此特性目前已被大部分的浏览器支持:(Firefox 1.5+, Safari 3. ...

  7. #学习记录#——CSS content 属性

    CSS content 属性常结合:before 和:after 这两个伪类一起使用,给指定的元素添加内容来丰富页面. 1. 添加文本内容 html: <h1>给末尾添加内容. </ ...

  8. css content之counter-reset、content-increment

    万万没想到,写了快三年前端,有不会用的css,居然还有完全没听过.见过的css属性,而且还是CSS2的内容! 关于counter-reset.content-increment两个属性的详解可以参看张 ...

  9. css content 的 attr 用法 (实现悬浮提示)

    content 的attr 实现 鼠标悬浮 显示 悬浮提示, content 属性与 :before 及 :after 伪元素配合使用,来插入生成内容. 方法/步骤 1 <div> < ...

随机推荐

  1. iOS开发-网络-合理封装请求接口

    概述 如今大多App都会与网络打交道,作为开发者,合理的对网络后台请求接口进行封装十分重要.本文要介绍的就是一种常见的采用回调函数(方法)的网络接口封装,也算的是一种构架吧. 这个构架主要的idea是 ...

  2. 两个简单方法加速DataGridView

    两个简单方法加速DataGridView (2009-03-24 16:57:13) 转载▼ 标签: 杂谈 分类: .NET DataGridView虽然好用,但是如果数据量比较大的话就会出现性能的问 ...

  3. 教你50招提升ASP.NET性能(十一):避免在调试模式下运行网站

    (17)Avoid running sites in debug mode 招数17: 避免在调试模式下运行网站 When it comes to ASP.NET, one of the most c ...

  4. C++ 外部调用private方法

    1.思考,对于C++,能不能在外部调用私有方法? 2.在Java中,子类继承不能缩小父类成员的访问权限.因为在Java中,继承只是表示Is-A关系,因此,父类提供的接口,子类必须承诺仍然提供,不能缩小 ...

  5. MVC4网站发布到windows server 2003服务器

    在windows server 2003上部署MVC4的网站,需要进行以下工作 用VS2013新建项目 在创建项目的时候选择的矿建为.NET Framework4,然后选择[ASP.NET MVC4 ...

  6. 看原理图之UART

    UART原理 协议类之间的通信就跟人之间交流一样,要遵守一定的原则:1.你说的话别人得听得懂,不能有语言障碍:2.你不能说的太快,别人都来不及反应. 对上面的话用专业点的语句描述下就是: 1.双方约定 ...

  7. LVS DR模型

    1,环境 VMWare10, CentOS6.3 2,LVS DR网络规划 所有机器都只需要一张网卡,给Director的eth0网卡起个别名eth0:1即VIP的值:给RealServer的lo网卡 ...

  8. java 十六进制数的转换

    今天晚上做了一道java基础题,题目看起来简单,但是实现起来却花了我近两个小时的时间,认真的做这道题,你会发现它特别考你的基本功.有兴趣的可以试一下哦. 题目: 请用此语言编写如下函数,采用自己的算法 ...

  9. github fork项目后,代码更新

    协助约定 每个人都可以fork一份自己的repo,所有的修改都在自己私有的repo上进行:修改完成,测试通过后通过给主repo发pull request请求合并:主repo(Johnqing/n.js ...

  10. C语言register关键字—最快的关键字

        register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率.注意是尽可能,不是绝对.你想想,一个CPU 的寄存器也就那么几个或几十个,你要是 ...