css中双冒号after,::before和:after中单冒号和双冒号的区别是什么,这两个伪元素有什么作用?...

发现这道题和后面的题目有点类似,都是讲伪元素 :before 和 :after ,直接看这道题的解释吧,同样可以回答这个问题。

[css] 第19天 css的属性content有什么作用呢?有哪些场景可以用到?

认识 :before 和 :after

默认 display: inline;

必须设置 content 属性,否则一切都是无用功, content 属性也只能应用在 :before 和 :after 伪元素上;

默认user-select: none,就是 :before 和 :after 的内容无法被用户选中;

伪元素可以和伪类结合使用形如:.target:hover:after。

:before 和 :after 是在CSS2中提出来的,所以兼容IE8;

::before 和 ::after 是CSS3中的写法,为了将伪类和伪元素区分开;

CSS 中其他的伪元素有:::before、::after、::first-letter、::first-line、::selection 等;

不可通过DOM使用,它只是纯粹的表象。在特殊情况下,从一个访问的角度来看,当前屏幕阅读不支持生成的内容。

content 定义用法

content 属性与 :before 及 :after 伪元素配合使用,在元素头或尾部来插入生成内容。

说明: 该属性用于定义元素之前或之后放置的生成内容。默认地,这往往是行内内容,不过该内容创建的盒子类型可以用属性 display 控制。

MDN 对 content 的取值描述:

content: normal /* Keywords that cannot be combined with other values */

content: none

content: 'prefix' /* value, non-latin characters must be encoded e.g. \00A0 for   */

content: url(http://www.example.com/test.html) /* value */

content: chapter_counter /* values */

content: attr(value string) /* attr() value linked to the HTML attribute value */

content: open-quote /* Language- and position-dependant keywords */

content: close-quote

content: no-open-quote

content: no-close-quote

content: open-quote chapter_counter /* Except for normal and none, several values can be used simultaneously */

content: inherit

content: value 字符串

可以加入任何字符,包括 Unicode 编码等各种字符。

精彩,一下就有

.demo:after{

content: "↗"

}

69d634b7bb32ecfdb8a12941eb828b90.png

我们还可以通过 content 内字符串的变化,实现类似 加载中... 的动画效果

.demo:after{

animation: dot 1.6s linear both;

}

@keyframe dot{

0%{ content: "." }

33%{ content: ".." }

66%{ content: "..." }

100%{ content: "." }

}

00bc7f9f0fbe473d39a62c6cb378bf21.gif

类似的,还有种实现方式,steps阶梯函数实现元素位移

精彩,一下就有...

dot {

display: inline-block;

height: 1em;

line-height: 1;

text-align: left;

vertical-align: -.25em;

overflow: hidden;

}

dot::before {

display: block;

content: '...\A..\A.';

white-space: pre-wrap;

animation: dot2 1.6s infinite step-start both;

}

@keyframes dot2 {

33% {

transform: translateY(-2em);

}

66% {

transform: translateY(-1em);

}

}

content: value 外部资源

用于引用媒体文件,图片,图标,SVG等。

.demo:after{

content: url(https://img-vip-ssl.a.88cdn.com/img/xunleiadmin/5b9889e14dcdc.png);

}

24fed98dbadd4267138440634f1860e7.png

受 background-image: url() 可以用渐变实现背景启发,类似的,一些函数是不是可以放在 content 中来实现?

.demo:after {

content: radial-gradient(circle at 35% 35%, white 10%, pink 70%);

display: inline-block;

border-radius: 50%;

width: 100px;

height: 100px;

overflow: hidden;

}

4c2ba3f6da832b1f0a84c3f24341eabb.png

完美!当然本来就伪元素背景就可以实现,又为什么要放 content 呢?

content: attr() value 属性值的引用

调用当前元素的属性,可以方便的比如将图片的 Alt 提示文字或者链接的 Href 地址显示出来。

.demo:after{

content: attr(href);

}

4cfc8899817fccda0712e102093347ab.png

.demo:after{

content: attr(class);

}

01bf24dad623fa0e9bd218c627c17e08.png

content: values

调用计数器,可以不使用列表元素实现序号功能。具体请参见 counter-increment 和 counter-reset 属性的用法。

大标题

中标题

小标题

小标题

中标题

小标题

小标题

大标题

中标题

小标题

小标题

中标题

小标题

小标题

h1::before{

content:counter(h1)'.';

}

h1{

counter-increment:h1;

counter-reset:h2;

}

h2::before{

content:counter(h1) '-' counter(h2);

}

h2{

counter-increment:h2;

counter-reset:h3;

margin-left:40px;

}

h3::before{

content:counter(h1) '-' counter(h2) '-' counter(h3);

}

h3{

counter-increment:h3;

margin-left:80px;

}

64c3d93848f286c35f7ae0fd3c4db757.png

引用符号

属于引用符号的取值有 4 种,共 2 对,在 CSS 中用了语义较为清晰的关键词来表示: open-quote、 close-quote、no-open-quote、no-close-quote。

默认:

.demo::before {

content: open-quote;

}

.demo::after {

content: close-quote;

}

d2ff5eaa59709cf8cd02f7bf3669ba3f.png

自定义引用符号:

.demo {

quotes: "『" "』";

}

.demo::before {

content: open-quote;

}

.demo::after {

content: close-quote;

}

b5b4c39f43d9a9adac417ddb42c5e4b4.png

quotes 可以设置多组引用符号,用以应对次级引用:

.demo {

quotes: "«" "»" "‹" "›";

}

.demo::before {

content: no-open-quote open-quote;

}

.demo::after {

content: close-quote;

}

8da481545ee0be7c973b95b565b13e81.png

总结

以上我们主要了解了 content 的一些用法和巧用,当然 :before 和 :after 本身作为元素,也可以实现多种应用效果,比如:三角形(border)、装饰元素、阴影等。希望通过以上介绍,能让大家对 content 有更深入的了解,帮助我们在平时的布局和样式以及用户体验中发挥更大的价值。

END.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值