css伪类和伪元素

    精简和高效一直是网站开发者的追求。作为前端开发,需要知道,有些东西是没有必要出现在dom树上的。这样做的目的不只是为了好看,更重要的是,我们的页面随时可能重新渲染,简单的dom树对浏览器来说是更加友好的。为了让我们的网站看上去更舒服也好,当然,更重要的是高效。用一些伪类来让页面变得精简有百利而无一害。

    除此之外,我们还会经常遇到前后标签有联系的情况。譬如,我的鼠标移入a标签,我的b标签需要出现,离开a标签,b标签需要消失。当然这只是一个比较简单的例子。这个场景完全可以交给伪类去做,这样不但可以减轻我们js的负担,而且还会让我们的js逻辑更清楚,让js更专注的去做必要的事情。

    在作用上,伪类表现为减轻js的负担;伪元素则表现为降低dom的复杂度。在作用对象上,伪类直接作用在真实dom节点,伪元素会创建一个dom结构之外的“假元素”。


    在写法上,多数支持双冒号和单冒号的写法。那,具体一些,伪类和伪元素有哪些,又在哪些方面其作用了呢?(基于个人的审美观,下边我就不写冒号了)

    先来看一下伪元素:

所有伪元素

before  &&  after:

    可以用content标示固定不变,适用于所有没有逻辑交互的内容。以后再也不用为了一个固定的标题活着图片单独整一个元素标签了。这哥儿俩可以满足你的需要。

first-letter && first-line:

    具有特定含义,设置段落文本专用。可以自定义某一段文字的第一行和第一个字符,自动判断折行,不用担心折行的问题。

selection 

    这个属性必须用双冒号,匹配选中的文本。比如这里我给选中的文本设置了屎黄色的字体颜色和黑色的背景。

操作选中文本属性

placeholder

    多用于设置了placeholder的input框。这个可以改变placeholder的样式,这个就不多解释了。可以支持ie10+


再来看下伪类

所有伪类

link && visited && hover && active && focus:

    状态类的这些伪类,分别表示:未访问,访问了,鼠标移入,活动,聚焦。当元素处在响应的状态时机的时候,某个伪类就要搞事情了。比如前边举的那个显示隐藏的例子,用hover配合类名去搞,就完了,多省劲。

not && first-child && last-child && first-of-type && last-of-type && nth-child && nth-last-child && nth-of-type && nth-last-type && only-child && only-of-type && target

    这些都是用来选元素的,not表示不匹配,target匹配链接里的锚点。其它的含义看字面就能了解了。对于固定结构的dom,或者在一堆元素中需要突出个性的一些元素,可以用这些伪类去做,而且游刃有余,实现方法不止一个。具体怎么用可以参考后边的链接。这里总结下区分的技巧:[1]last代表从后边开始匹配;[2]一个type就是一类tag筛选器;[3]nth代表第几个的意思;[4]有child的用在父元素身上作用于子元素。

checked && default && disabled && enabled && empty

    匹配选中的元素 && 默认选中 && 被禁用的 && 可用的 &&  没有子元素的 表单元素。

in-range && out-of-range

    匹配值在某个区域 && 不在某个区域的元素。用于表示一个number值是否在被允许的范围内,和 min max 配合使用。

indeterminate

    匹配不确定的元素,通常是一组radio或者checkbox没有默认选中的时候。比如,一组单选框,没有一个被选中,那这三个的状态都有机会是被选中的,这时候三个单选框都会被匹配。当一个确定之后,其它也就确定了,这时,三个单选框都不会匹配。

valid && invalid

    匹配条件验证正确 && 不正确的表单元素。H5中有些标签自带验证功能(如<input type='email'/>),如何区分验证的对错?这里可以用这两个伪类。

optional && required:

    匹配没有 && 有required属性的元素,一般是可以输入的元素。

read-only && read-write 

    匹配有 && 没有readonly属性的元素。

lang:(不常用)

    匹配设置了特定语言的元素,给这些定义了不同语言的元素设置特殊的样式。

root:(不常用)

    匹配文档的根元素。一般的html文件的根元素是html元素,而SVG或XML文件的根元素则可能是其他元素。

fullscreen:(不常用)

匹配处于全屏模式下的元素。全屏模式不是通过按F11来打开的全屏模式,而是通过Javascript的Fullscreen API来打开的,不同的浏览器有不同的Fullscreen API。目前,:fullscreen需要添加前缀才能使用。


    每一个细节都在意一点点,都精简一点点,养成一种精简的习惯,离高效的代码就不远了。想更多了解伪类可以点这里:伪类伪元素用法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容

  • 1. 伪类 & 伪元素 伪类和伪元素用来修饰不在文档树中的部分 伪类:用于当已有元素处于的某个状态时,为其添加对应...
    杨慧莉阅读 569评论 0 5
  • 伪类是一种虚构的状态或者是一个具有特殊属性的元素可以使用css进行样式修饰。常见的几种伪类有: 伪类前面总是加一个...
    fenerchen阅读 4,647评论 0 2
  • CSS伪类: link:未被访问的链接 visited:被访问过后的样式 hover:鼠标放上去的样式 activ...
    尤樊容阅读 301评论 0 0
  • 伪类与伪元素 css引入伪类和伪元素概念是为了格式化文档树以外的信息。也就是说,伪类和伪元素是用来修饰不在文档树中...
    落花的季节阅读 334评论 0 1
  • 伪,假的意思。把伪字拿掉,可以看出它们的本质区别,一个是类(class),一个是元素(tag),本质区别是有没有创...
    筱雪儿00阅读 290评论 0 0