CSS选择器和基础属性

css复杂选择器

  • 父子选择器(派生选择器)
    我们来看下面的结构

    <div class="demo">
        <p>111</p>
        <span>222</span>
    </div>
    <p>333</p>
    

    此时我们想选出第一个<p>111</p>,用之前的知识就解决不了。
    我们选择div下的所有p标签

    div p{ } 
    给div下面的p加样式 这时候的p的权重值是加和的结果。
    
    .demo p{ }
    与上面完全相同
    

    我们来看下面结构

    <div class="demo">
        <p>
            <strong>
                <em>1</em>
            </strong>
            <em>2</em>
        </p>
        <span>3</span>
        <em>4</em>
    </div>
    

    我们要选择第一个<em>1</em>

    div p strong em{ }
    

    <span style="color:#ff0000">注意:在实际开发中,我们因为要注意浏览器寻找时候的耗能,一般这样的嵌套关系不超过4层。<span>

  • 直接子元素选择器

    <div class="demo">
        <p>
           <em>1</em>
        </p>
        <em>4</em>
    </div>
    

    如果我们只想选择第二个<em>4</em>标签

    div > em{ }
    这样就只能选出div的直接子元素
    
  • 并列选择器

    <div>1</div>
    <div class="demo">2</div>
    <span class="demo">3</span>
    

    我们想选出类名是demodiv

    div.demo{ } 
    

    <span style="color: #ff000">注意:div和.demo之间没有空格,标签选择器要写在最前面</span>

  • 分组选择器

    <p></p>
    <strong></strong>
    <em></em>
    <div></div>
    

    我们要想同时给四种标签都加上color: red的样式,不可能把四个标签都写一遍样式,因此要用分组选择器。

    div, p, em, strong {}
    

    这样的写法,我们可以把前面写的所有的标签都选择出来加上样式,中间是用逗号连接的。这个样子四种标签就全都被选择出来并且都加上了统一的样式。

一个很重要的问题,那就是父子选择器的时候浏览器是怎么检索的?

div p strong em span 这样的选择器,浏览器是从右往左检索的

  • 因为如果是从左往右寻找的话,每找到一个父级标签,都要把它下面的所有标签都遍历一遍,看看有没有我们下一个标签,上面那个选择器中,浏览器会先找到div这个标签,然后把div下面所有的子元素都遍历一遍后,找到strong这个标签,然后再把strong这个标签下面的所有元素遍历一遍,找到em这个标签,以此类推,这样是十分消耗性能并且速度非常慢的。
  • 而如果是从右往左的话,那么浏览器只需要先找到span标签,然后从span这个节点向上寻找,只要找到em就可以停止寻找,以此类推,不必遍历所有的节点,而且需要遍历的点非常的少,这样的好处显而易见,速度非常快,而且不耗性能。

权重的计算问题

凡是写在同一横行的选择器,把他们的权重相加

看下面一个例子

<div class="wrapper" id="wrapper">
    <p class="content" id="content">
        111
    </p>
</div>
/*1      100 = 101权重*/
div #content{
  background-color: red;
}
/*1       10     1    10 = 21权重*/
div.wrapper p.content{
  background-color: green;          
}

此时p标签呈现<span style="color: #ff000">红色</span>。


CSS基础属性

css有很多很多的样式,我们不可能一一记住每一个样式的值,其实我们只需要记住一些常用的样式的意思,然后去http://www.css88.com这个网站去查询样式的具体的值就可以了

首先我们介绍一下样式的构成,样式都是由属性名和属性值构成的,名和值之间用: (冒号)分隔,属性和属性之间用; (分号)分隔。

我们首先来写几个样式

p {
     font-size:20px;
     font-weight: bold;
     font-family: arial;
     font-style: italic;
     color: red;
}
  • font-size属性

    这条属性是设置文字的大小的,文字大小默认是16px,我们在例子中就是将p标签里面的文字设置成20px大小
    <span style="color: #ff000">这条属性其实是设置的文字的高度而不是宽度。</span>

    这里我们要介绍一下px
    px是像素的意思,这是一种相对大小,并不是絶対大小,因为每一个像素点的大小都是不同的,我们的屏幕都是由很多个像素点组成的。

  • font-weight属性

    这条属性是设置的文字的粗细程度的,默认值是normal,当我们设置成bold的时候,这个p标签就和strong标签没什么区别了,这就是为什么很多标签我们都不用,因为通过修改样式就可以达到和其他标签一样的效果。

    这条属性常用的值有lighter、normal、bold、bolder,其次我们还可以写100-900的数字,其中lighter大概是100左右,normal大概是400左右,bold应该是700左右。

  • font-family属性
    这个属性的作用是设置文字的样式,默认是arial字体,其他还有很多很多的字体,我们可以到css88上面去查找。
    不过我们写英文字体的时候,属性值是不需要加引号的,写中文的时候则需要加引号。

    font-family: '黑体';
    
  • font-style属性
    这个属性的作用是设置文字是否斜体italic就是斜体的意思,通过设置这个属性我们就可以让p标签达到和em标签一样的效果了。

  • color属性
    这个属性的作用是设置文字的颜色,并不是font-color
    文字颜色的色值有三种表达方式

    • 英文单词,比如red、black、blue等等。
    • 三位十六进制组成光学三原色红绿蓝
      每一个的值都是00-ff,00代表空,ff代表满,例如#000000就是黑色的意思。其中,如果每连续的两位都是一样的并且3组数字都是这种情况的时候,我们就可以两两合并只写一个数值就可以了,比如#ffffff —> #fff、 #55ffcc —> #5fc;
    • 通过rgb(xx,xx,xx)属性值来设置颜色,其实和第二种是一个意思,只是把十六进制换成了十进制,rgb就是red、green、blue的缩写,其中的三个数值每一项的范围都是0-255,例如红色就是rgb(255, 0, 0)。

对文字的处理大概就这么多,我们再来介绍一下其他的一些简单的样式

  • text-indent属性
    这个属性的作用是设置首行文字的缩进,值有两种单位,一种是px,一种是em。
    这里就要提一下empx的区别了

    • px虽然是一个相对长度单位,但是我们可以变相地理解为它是一个差不多固定长度的单位,我们设置100px的时候,基本上每一个宽度被设置成100px的元素都是一样的宽度。
    • em则是一个真正的相对长度单位,它相对的是当前元素内的文字的大小,也就是说 1em = 1 * font-size;如果我们设置font-size20px的话那么1em也就是20px的大小,我们只要将text-indent设置成2em就可以首行缩进2个文字大小了。
  • border属性

    border: 1px solid red;
    

    border是边框的意思,这个属性也是设置元素边框的属性。
    这其实是一个复合属性border-width、border-style、border-color 三个属性复合而成的。分别设置的边框的宽度,边框的样式,边框的颜色,其中边框的样式有很多种,基本常用的只有solid实线、dotted短虚线、dashed长条虚线三种样式。
    border-width也是一个复合属性
    它可以按照上右下左的顺序来分别设置四个边框的宽度值。

  • text-align属性
    这个属性是设置文字的位置的属性,它的值也是有三种,分别是center文字左右居中、left文字左对齐、right文字右对齐。

  • line-height属性
    这个属性是设置一行文字所占的高度的属性,默认状态是和字体大小一样的值。

    • 当我们想要让单行文字在容器内部上下居中的时候,我们只需要让height = line-height即可。
    • 多行文字居中我们现在还没有专门的属性可以做到这一点,不过我本人一般是在文字部分外面包裹一层div标签,然后让div标签在父级元素水平上下居中来实现的。(并不知道这么做对不对…)
  • text-decoration属性
    这个属性的意思是文字装饰的意思,可以来设置文字是否有下划线、上划线、中划线,分别对应的属性值是underline、overline、line-through。

  • cursor属性
    这个属性则是设置我们的鼠标移入到这个元素中的时候,鼠标会变成什么样子。它的值有很多很多,我们同样可以到css88上去查看。不过一般常用的是cursor: pointer;这一条属性,它会让我们鼠标移入这个元素的时候,鼠标变成可以点击的小手的状态。
    现在我们就可以来模拟一下a标签的样式了。

    <p>www.baidu.com</p>
    
    p {
          color: rgb(0, 0, 238); 
          text-decoration: underline;
          cursor: pointer; 
    }
    

这个时候www.baidu.com的样式和我们直接用a标签写一个www.baidu.com的样式基本是一模一样的。

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,725评论 1 92
  • CSS基础 本文包括CSS基础知识选择器(重要!!!)继承、特殊性、层叠、重要性CSS格式化排版单位和值盒模型浮动...
    廖少少阅读 3,053评论 0 40
  • 引子 成文原因有二:其一,复习巩固知识、站在巨人的肩膀上,老罗讲话:“人生苦短,能一步走完的路,尽量别走三步”;其...
    只敲代码不偷桃阅读 845评论 0 0
  • 本文主要是起笔记的作用,内容来自慕课网. 认识CSS样式 CSS全称为“层叠样式表 (Cascading Styl...
    0o冻僵的企鹅o0阅读 2,613评论 0 30
  • 1 下拉表单绑定
    娜妹子辣辣妹子娜阅读 162评论 0 0