CSS selector

  • CSS选择器常见的有几种?
    • 元素选择器,p {}
    • 后代选择器,p a {}
    • id选择器,#header {}
    • 类选择器,.clearfix {}
    • 子选择器,p>a {}
    • 同胞选择器
      • 相邻同胞选择器,p+p {}
      • 一般同胞选择器,p~p {}
        .p1+p {
        color: red;
        }
        .p2~p {
        color: blue;
        }
        同胞选择器
    • 通配符选择器,* {}
    • 属性选择器
      • [attr],属性名attr的元素
      • [attr=value],属性名为attr,属性值为"value"的元素
      • [attr~=value],以空格做分隔符,其中一个值为"value"的元素
      • [attr|=value],以"value"-开头的元素("-"为连字符),常用于zh-CN,zh-TW
      • [attr^=value],以"value"开头的元素
      • [attr$=value],以"value"结尾的元素
      • [attr*=value],含有"value"的元素
      • [attr operator value i],忽略属性值大小写
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        [lang~="en-us"] {
            color: red;
        }
        [lang|="zh"] {
            color: blue;
        }
    </style>
</head>
<body>
        <a href="#">English:</a>
        <span lang="en-us en-gb en-au en-nz">Hello World!</span><br>
        <a href="#">Portuguese:</a>
        <span lang="pt">Olá Mundo!</span><br>
        <a href="#">Chinese (Simplified):</a>
        <span lang="zh-CN">世界您好!</span><br>
        <a href="#">Chinese (Traditional):</a>
        <span lang="zh-TW">世界您好!</span><br>
</body>
</html>
属性选择器
- 伪类选择器,`a:hover {}`
  伪类选择器表示的是原本存在的元素,相当于给这些元素加上一个类,在CSS3中用":"和 "::"区分伪类和伪元素,但是一般浏览器两种方式都兼容
- 伪元素选择器,`p::first-letter {}`
  伪元素选择器表示的是原本不存在的元素,相当于加上一个元素,注意:`::after`和`::before`中的content的属性,该属性的值有:
    - <string>,文本内容
    - <uri> url(),外部资源(比如图片),如果该资源不能显示,它就会被忽略或显示一些占位
    - attr(x),将元素的X属性以字符串形式返回
    - open-quote|close-quote,引号
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .bd::before {
           content: "(我是前面的字符串)";
        }

        .bd::after {
            content: "(" attr(href) ")";
        }

        .jrg::before {
            content: url(http://upload-images.jianshu.io/upload_images/2348761-f10b477e82e5ac19.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240);
        }
        
        q::before {
            content: open-quote;
        }

        q::after {
            content: close-quote;
        }
    </style>
</head>
<body>
    <a href="http://baidu.com" class="bd">百度</a><br>
    <a href="http//jirengu.com" class="jrg">饥人谷</a><br>
    <q>我是引用</q>
</body>
</html>
content属性
  • 选择器的优先级是怎样的?
    • 整体遵循下列三条规则
      • 选择器越精确,优先级越高
      • 优先级相同的情况下,后面的样式会覆盖前面的样式
      • !important的优先级最高
    • 选择器权重
      选择器权重

      理解起来就是一个内联元素的权重是1000,一个id选择器的权重是100,类选择器、伪类选择器和属性选择器是10,元素选择器和伪元素选择器是1,最后通配符选择器是0,所以最后一样选择器权重的值就是按照这个公式计算value=a*1000+b*100+c*10+d*1
      参考:Specificity Calculator
  • class 和 id 的使用场景?
    id表示的是页面上独一无二的,是不可重复的,而class表示的是一类。
    • 当我们需要为一类元素指定样式时就使用class
    • 当我们需要为元素做出单独的标记的时候就是用id
  • 使用CSS选择器时为什么要划定适当的命名空间?
    • 为了代码的可读性
    • 为了代码的易维护性
  • 以下选择器分别是什么意思?
    /id为header的元素/
    #header{
    }
    /class为header的元素/
    .header{
    }
    /class为header后代中的class为logo的元素/
    .header .logo{
    }
    /class为header和mobile的元素/
    .header.mobile{
    }
    /class为header后代中的p元素和class为header后代的h3元素
    .header p, .header h3{
    }
    /
    id为header后代中class为nav子代中的li元素
    #header .nav>li{
    }
    /*id为header后代中的a元素的伪类hover
    #header a:hover{
    }
  • 列出你知道的伪类选择器
    • :link,默认状态下的链接
    • :visited,点击过的链接
    • :hover,鼠标悬浮上去的链接
    • :focus,tab焦距上去的链接
    • :active,鼠标按下去的链接
    • :first-child,first-child代表了某个元素,这个元素是它父元素的的第一个子元素.
    • :first-of-type,匹配元素的所有子元素类型中第一个出现的元素
  • :first-child:first-of-type的作用和区别
    • 两种用法
      • 第一种和后代选择器组合起来,div :first-childdiv :first-of-stype,注意父元素和伪类之间加了空格,表示的是父元素的后代中的第一个子元素或者子元素中某个类型的第一个第一个
      • 第二种和元素选择器一起使用,p:first-childp:first-of-stype,分别表示的是p元素而且他父元素下的第一个的那个元素和所有p类型的第一个
    • 区别是,如果只和元素选择器配合起来用,p:first-child必须是父元素下的第一个,而p:first-ot-type则不需要,只要是p标签中的第一个就可以
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div :first-of-type {
            background-color: lime;
        }
    </style>
</head>
<body>
    <div>
        <span>This span is first!</span>
        <span>This span is not. :(</span>
        <span>what about this <em>nested element</em>?</span>
        <strike>This is another type</strike>
        <span>Sadly, this one is not...</span>
    </body>
</html>
:first-of-type
  • 运行如下代码,解析下输出样式的原因。
<style>
.item1:first-child{ color: red;}
.item1:first-of-type{ background: blue;}
</style> 
<div class="ct"> 
<p class="item1">aa</p>
<h3 class="item1">bb</h3> 
<h3 class="item1">ccc</h3> 
</div>
1. `<p class="item1">aa</p>`是其父元素下的第一个子元素,所以`.item1:first-child{ color: red;}`生效了。
2. `.item1:first-child{ color: red;}`和`<h3 class="item1">bb</h3> `分别是父元素下其类型元素的第一个,所以`.item1:first-of-type{ background: blue;}`生效了。
  • text-align: center的作用是什么,作用在什么元素上?能让什么元素水平居中

The text-align CSS property describes how inline content like text is aligned in its parent block element. text-align does not control the alignment of block elements, only their inline content.---MDN

text-align: center的作用在块级元素上,他的作用是让行内元素相对与他的父元素居中显示

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,590评论 18 139
  • 1.CSS选择器常见的有几种? 详情请见teren的技术博客:CSS选择器与优先级浅析 2.选择器的优先级是怎样的...
    犯迷糊的小羊阅读 449评论 1 1
  • 1.CSS选择器常见的有几种?选择器的优先级怎样? 详情请点击Peter的web前端技术博客 2.class和Id...
    Sheldon_Yee阅读 604评论 0 0
  • 一、CSS选择器常见的有几种? 基本选择器 通配选择器~选择文档中所有的html元素,用一个*表示 元素选择器~选...
    dengpan阅读 959评论 0 3
  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,810评论 0 5