Css伪元素和伪类

pseudo-class:俗称伪元素
作用:在选择器后面给选择的元素添加一个特定的状态,比如说:hover
使用方法:

selector:pseudo-class {
  property: value;
}

为什么要使用伪元素?
在文档树之外定义相关的样式或者字段,定义的内容不在文档树中
举个简单例子:


在li元素前面添加相应的图标?
:before,是不是很简单?

关于伪类和伪元素,Alloyteam有个很好的总结:伪类和伪元素
常见的pseudo-class:

点击四元组作用(四个元素只能按照下面顺序排列)
:link让它表现地像个链接一样
:visited访问过之后什么效果(只能修改特定的样式)
:hover把鼠标移动上去有什么效果
:active激活之后是什么效果
常用的作用
:nth-of-type(x)常用来对表格显示奇数行和偶数行不同色块;注意是x-1行对应的效果
:empty如果选择元素没有子节点,表现什么样式,常用来做首屏渲染
:read-only元素只读
:only-of-type页面中只有这一个类型的元素会显示的效果
:focus当focus之后显示效果
:invalid校验之后显示的效果

这里重点说一下:empty元素,在首屏渲染的时候,由于加载速度的问题,通常会使用一些效果来表示为加载完成时的界面,比较好的首屏渲染是Skeleton Screen,下面借鉴下网上的代码来简单说明下:
首屏渲染

html:
<button>Add content</button>
<div class="demo"></div>
js:
document.querySelector('button').addEventListener('click', function() {
  document.querySelector('.demo').innerHTML = '<h1>Injected content.</h1>';
})
css:
.demo:empty {
    margin: auto;
        width: 500px;
        height: 600px; /* change height to see repeat-y behavior */

        background-image:
            radial-gradient( circle 50px at 50px 50px, lightgray 99%, transparent 0 ),
            linear-gradient( 100deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.5) 50%, rgba(255, 255, 255, 0) 80% ),
            linear-gradient( lightgray 20px, transparent 0 ),
            linear-gradient( lightgray 20px, transparent 0 ),
            linear-gradient( lightgray 20px, transparent 0 ),
            linear-gradient( lightgray 20px, transparent 0 );

        background-repeat: repeat-y;

        background-size:
            100px 200px, /* circle */
            50px 200px, /* highlight */
            150px 200px,
            350px 200px,
            300px 200px,
            250px 200px;

        background-position:
            0 0, /* circle */
            0 0, /* highlight */
            120px 0,
            120px 40px,
            120px 80px,
            120px 120px;
        //动画
        animation: shine 1s infinite;
    }
    /**使用keyframes定义动画@keyframes animationname {keyframes-selector {css-styles;}}
    **/
    @keyframes shine {
        to {
            background-position:
                0 0,
                100% 0, /* move highlight to right */
                120px 0,
                120px 40px,
                120px 80px,
                120px 120px;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值