#07你认真学了css?伪类和伪元素

文档阅读:

总结伪类与伪元素 | AlloyTeamwww.alloyteam.com!

前文回顾:

#00你认真学了css?

一、伪类:

1、定义

伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化

2、类型

image

3、应用场景

用伪类元素进行效果展示
(1)link visited hover active 顺序

/* 未访问的链接 */
 a:link{  color: blue;  }  
a:visited{  color: green;  }  
/* 点击后鼠标脱离,获得焦点的链接 */ 
 a:focus{  color: grey;  }
  /*鼠标悬停时,内容颜色获得红色 */ 
 a:hover{  color: red;  } 
 /*选择活动链接*/  
a:active{  color: pink;  }
image

(2)first-child VS first-of-type

  • h1:first-child :选择是h1并且它是长子的元素
  • h1:first-of-type:选择是h1并且它是它父亲里h1类型中的长子的元素
    image

关于first-childVSfirst-of-type的使用在之前的css系列博客文章中有详细解释:
#00你认真学了css?​

二、伪元素

1、定义

伪元素用于创建一些不在文档树中的元素,并为其添加样式

2、类型

image

如:


image

3、:before:after(也可以写::before::after

<div class="box">
    <p>这是第一段</p>
  </div>
  <style>
  .box:before{
    content: 'start'
  }
  .box:after{
    content: 'end'
  }
  </style> 
image

使用伪元素beforeafter的好处:

  • 可以在后台发现,p的前后分别出现::before::after。html的dom树中原本没有::before::after,现通过css样式添加,使其在dom树中添加这两个元素。
  • 用添加::before::after 的目的是为了省标签。::before生成的效果,所在的位置位于父元素(如box)的第一个子元素,::after则位于父元素(如box)的最后一个子元素,即在html的dom树上多了两个子元素,这两个子元素无需在html中体现,只需在css中表示即可。
  • ::before::after所展示的效果相当于一个行内元素(注意行内元素的一些特性)
  • 其中content 是必不可少

4、伪类选择器的应用场景

(1)伪类选择器应用于清除浮动

.clearfix:after {
    content:'';
    display:block;
    clear:both;
}

详细解释请回看之前我写得关于浮动的副作用和解决办法:

#03你认真学了css?(基本样式3:浮动+定位)

(2)伪类选择器可作为替代标签

用代码替代图片,如使用css3实现一个带边框的三角符

思路:边框+三角符号的组合

先确认边框样式:

.bubble{
            position: relative;
            padding: 10px;
            border-radius: 3px;  /*可填可不填*/
            background: #fff;
            border: 1px solid #000;     
                        display: inline-block; 
        }
<body>
    <div class="bubble">
        hello world
    </div>
</body>

再确认三角样式:

.bubble:before{
            content:'';
            width: 10px;
            height: 10px;
            border-left: 1px solid #000;
            border-top: 1px solid #000;
            background: #fff;
            display: inline-block;
                        position: absolute;
                        transform: rotateZ(45deg);  
                        top: -6px;
        }
<body>
    <div class="bubble">
        hello world
    </div>
</body> 

这里基础的三角样式我们在之前已经有涉及过怎么使用:

请戳🔽
#01你认真学了css?(基本样式1)

使用伪元素怎么实现三角符号(css3 ):

基础代码:(关于三角形的位置参数可以使用页面后台进行调试)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
         .bubble{  position: relative;  padding: 10px;  border-radius: 3px;  /*可填可不填*/  background: #fff;  border: 1px solid #000;  display: inline-block;  }  .bubble:before{  content:'';  width: 10px;  height: 10px;  border-left: 1px solid #000;  border-top: 1px solid #000;  background: #fff;  display: inline-block;  transform:  rotateZ(45deg);  position: absolute;  top: -6px;  } </style>
</head>
<body>
    <div class="bubble">
        hello world
    </div>
</body>
</html>

结果:

image

运用以上知识举一反三,实现以下效果:


image

代码请戳:
我的代码

(3)伪类选择器应用于element:checked;(勾选住的一个状态)

input元素的自定义重要属性checkbox或者radio,实现一个自定义的样式

如:笑脸切换

/*今天的心情:*/
 <input type="checkbox">
<style>
input[type=checkbox]{ 
 -webkit-appearance: none;  /*去掉未勾选的方框默认样式*/  appearance: none;  background:  url(http://7xpvnv.com2.z0.glb.qiniucdn.com/b6dcd011-23cc-4d95-9e51-9f10100103bd.png) 0 0 no-repeat;  
display: inline-block; 
 width: 20px;  
height: 20px;  
background-size: contain;  /*背景图片的大小*/  
vertical-align: middle;  outline: none;  
}  /*勾选之后的状态*/ 
 input[type=checkbox]:checked{
  -webkit-appearance: none;  
appearance: none;  
background:  url(http://7xpvnv.com2.z0.glb.qiniucdn.com/538f26f0-6f3e-48d5-91e6-5b5bb730dd19.png) 0 0 no-repeat;  
display: inline-block;  
width: 20px;  
height: 20px;  
background-size: contain;  
vertical-align: middle; 
 }
 </style>

好处:

  • 没有加js
  • 使用该属性样式,对于input来说已经实现勾选状态,自定义加一些自己的图片,自动加载信息

(4)伪类选择器应用于字体图标

A、为什么针对字体库而来的字体,我们可以调整它的字体大小和颜色?


image

B、完整代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <link rel="stylesheet" type="text/css" href="//at.alicdn.com/t/font_nyta5x5h650cnmi.css">
</head>
<body>
  <span class="iconfont icon-jirengulogojichu2"></span>

  <style>
    .iconfont{  font-size: 100px;  color: red;  } </style>
</body>
</html>

在css中添加这个:

/*  \e605为字体库中的特有的一种编码形式:unicode码  */
.icon-jirengulogojichu2:before{content:'\e605';} 

即:


image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341

推荐阅读更多精彩内容

  • 本文转载自:众成翻译译者:为之漫笔链接:http://www.zcfy.cc/article/239原文:http...
    极乐君阅读 7,320评论 1 62
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,381评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,722评论 1 92
  • 学会使用CSS选择器熟记CSS样式和外观属性熟练掌握CSS各种选择器熟练掌握CSS各种选择器熟练掌握CSS三种显示...
    七彩小鹿阅读 6,300评论 2 66
  • 伪类是一种虚构的状态或者是一个具有特殊属性的元素可以使用css进行样式修饰。常见的几种伪类有: 伪类前面总是加一个...
    fenerchen阅读 4,647评论 0 2