day02_CSS基础(2)

一、CSS复合选择器

复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,目的是为了可以选择更准确更精细的目标元素标签。

1.1 后代选择器

普通选择器通过空格层级递进,最后一个选择器下的匹配标签都会被选中。

例子:

<style>
/* 标签p1和p2内的字体都被设置为红色 */
div div p{
         color: red;
        }
</style>
...
<div>
    <div>
        <p>我是标签p1。</p>
        <p>我是标签p2。</p>
    </div>
</div>

注意:

  • 对于要修改的样式,采用后代选择器时写法应为:div div p,而不应该写成:div div,虽然效果相同,但是是错误写法。一旦页面复杂,其他相似结构很可能也会被设置。所以必须采用第一种写法。
  • 后代选择器与子代选择器不同,不需要严格的层级嵌套关系,也就是说可以跨标签层级指定。无论跨多少个标签,只要满足样式中指定的选择器顺序就生效。

1.2 子代选择器

普通选择器通过">"符号层级递进,最后一个选择器下的匹配标签都会被选中。
例子:

注意:

  • 子代选择器必须按照嵌套层级依次定位,不允许跳跃
<style>
/* 标签p1和p2内的字体都被设置为红色 */
div>div>p{
         color: red;
        }
</style>
...
<div>
    <div>
        <p>我是标签p1。</p>
        <p>我是标签p2。</p>
    </div>
</div>

1.3 并集选择器

普通选择器通过","并列的标签都会被选中。

例子:

<style>
/* 标签p1和p2和p3和p4内的字体都被设置为红色 */
div,span{
         color: red;
        }
</style>
...
<div>
    <p>我是标签p1。</p>
    <p>我是标签p2。</p>
</div>

<span>
    <p>我是标签p3。</p>
    <p>我是标签p4。</p>
</span>

1.4 交集选择器

"标签名.类名"。用的相对来说比较少,不太建议使用。
例子:

<style>
    /* 设置p标签为红色 */
    p.demo {
        color: red;
    }
</style>

<p class="demo">我是demo</p>

1.5综合练习

不修改一下代码的情况下,完成以下任务。

<body>
     <!-- 主导航栏 -->
    <div class="nav">   
        <ul>
            <li><a href="#">公司首页</a></li>
            <li><a href="#">公司简介</a></li>
            <li><a href="#">公司产品</a></li>
            <li>
                <a href="#">联系我们</a>
                <ul>
                    <li><a href="#">公司邮箱</a></li>
                    <li><a href="#">公司电话</a></li>
                 </ul>
            </li>
        </ul>
    </div>

    <!-- 侧导航栏 -->
    <div class="sitenav">
        <div class="site-l">左侧侧导航栏</div>
        <div class="site-r">
            <a href="#">登录</a>
        </div>
    </div>
</body>

1)链接 登录 的颜色为红色。

分析:

  • 对于a标签有其特殊性,样式的无论哪种选择都必须指定a标签才会起作用。
  • 对于单个标签的设置,采用子代选择器可能会更好,具有特殊。
/* 参考答案1 */
    .sitenav .site-r a{
      color: red;
    }

/* 参考答案2 */
     .site-r a{
      color: red;
     }

/* 参考答案3 */
    .sitenav>.site-r a{
      color: red;
    }

/* 参考答案4 (自己推荐)*/
    .sitenav>.site-r>a{
      color: red;
    }

/* 老师答案 */
   .site-r a {
      color: red;
    }

2)主导航栏里面的所有的链接改为橙色。

分析:

  • 对于一类(很多)标签的样式设置,使用后代选择器可能会更好。
/* 参考答案1(自己推荐) */
.nav a{
      color: red;
}

/* 参考答案2 */
.nav ul a{
      color: red;
}

/* 参考答案3 */
.nav ul li a{
      color: red;
}

/* 老师答案 */
.nav a {
      color: orange;
   }

3)主导航栏和侧导航栏里面文字都是14像素并且是微软雅黑。

分析:

并列关系,使用并集选择器会更好。

/* 老师和自己的答案 */        
.nva, 
.sitenav {
            font-size: 14px;
            font-family: "微软雅黑";
        }

4)主导航栏里面的一级菜单链接文字颜色为绿色。

/* 写法1(唯一) */
.nav>ul>li>a {
            color: green;
        }

1.6 伪类选择器

伪类常用的有如下四种:

  • link /* 未访问的链接 */
  • visited /* 已访问的链接 */
  • hover /* 鼠标移动到链接上 */
  • active /* 选定的链接 */

选择器+":"+伪类构成复合选择器。

注意:

  • lvha定义的顺序不允许改变。
  • 也可以只定义hover

示例:

       a:link {
            color: #333;
        }

        a:visited {
            color: orange;
        }

        a:hover {
            color: red;
        }

        a:active {
            color: green;
        }
        ...
        <a href="www.baidu.com">百度一下</a>

更一般情况只定义hover伪类的状态:

a {   /* a是标签选择器  所有的链接 */
            font-weight: 700;
            font-size: 16px;
            color: gray;
}
a:hover {   /* :hover 是链接伪类选择器 鼠标经过 */
            color: red; /*  鼠标经过的时候,由原来的 灰色 变成了红色 */
}

1.7复合选择器总结

选择器 作用 特征 使用情况 用法
后代选择器 用来选择元素或元素组的后代 子孙后代都能选 最多 div p { color:red;}
子代选择器 选择作为某元素子元素的元素 只选亲儿子 较少 .nav>p { color: red; }
交集选择器 选择两个标签交集的部分 既 有 较少 a:link {color: red;}
并集选择器 选择某些相同样式的选择器 可以用于集体声明 较多 .nav, .header {color: red;}

二、标签的显示模式

HTML标签根据布局方式可以分为2种,块标签和行标签,它们也称块元素和行内元素。具体如下。

2.1 块级标签(block)

常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>标签是最典型的块元素。

块标签特点:
(1)总是从新行开始
(2)高度,行高、外边距以及内边距都可以控制。
(3)宽度默认是容器的100%
(4)可以容纳内联元素和其他块元素。
(5) 是一个容器及盒子,里面可以放行内或者块级元素

注意:

  • 文字类块级标签,里面不能放其他块级元素。如p/h1~h6/dt/里不能放div。

2.2 行内标签(inline)

常见的行内元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>标签最典型的行内元素。

行标签特点:
(1)和相邻行内元素在一行上。
(2)高、宽无效,但水平方向的padding和margin可以设置,垂直方向的无效。
(3)默认宽度就是它本身内容的宽度。
(4)行内元素只能容纳文本或则其他行内元素。(a 特殊 a里面可以放块级元素 )

注意:

  • 链接标签(a)里不能放再放链接。
  • 特殊情况a里面可以放块级元素。

2.3 行内块标签

在行内元素中有几个特殊的标签<img />、<input />、<td>。

特点

(1)和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。
(2)默认宽度就是它本身内容的宽度。
(3)高度,行高、外边距以及内边距都可以控制。

三种标签显示模式的区别

元素模式 元素排列 设置样式 默认宽度 包含
块级元素 一行只能放一个块级元素 可以设置宽度高度 容器的100% 容器级可以包含任何标签
行内元素 一行可以放多个行内元素 不可以直接设置宽度高度 它本身内容的宽度 容纳文本或则其他行内元素
行内块元素 一行放多个行内块元素 可以设置宽度和高度 它本身内容的宽度

2.4 标签显示模式的转换

在CSS属性(properties)中的布局(layout)属性中,display属性可以对HTML标签的显示模式进行转换。最后以转换后结果的特性为准。

display属性值:

属性值 宽/高可设置 同行继续增加元素
inline
block
inline-block

​ inline:没有高度和宽度,同行可继续增加元素。

​ inline-block:可以设置高度和宽度,同行可以增加元素。

注意:

1)块标签转行内标签可以使用:inline和inline-block;

示例1:将两个DIV内容在一行显示,不需要设置宽度

    div {
            display: inline;
            background-color: red;
        }
    <div>123</div>
    <div>456</div>

示例2:三个 span,要求 150 * 150 绿色盒子,在同一行显示。

span {
            display: inline-block;
            background-color: green;
            width: 150px;
            height: 150px;
        }
        ...
    <span>1</span>
    <span>2</span>
    <span>3</span>

示例3:三个 a 链接 80 * 20 蓝色 盒子 要求 必须一行显示 这三个盒子。

a {
            display: inline-block;
            background-color: blue;
            width: 80px;
            height: 20px;
            color: #fff;
        }
    <a href="#">1</a>
    <a href="#">1</a>
    <a href="#">1</a>

三、行高

3.1 行高定义

中文行高:两行顶线的距离称为行高。可以通过PS工具查看。
英文行高:两个基线的距离。
<img src="media/line2.png" />

3.2 行高组成

行高垂直从上到下依次为:上距离,内容高度,下距离。

3.3 行高的应用

当行高等于盒子高时,文字在盒子中就是垂直居中的。

  • 如果 行高 等于 盒子高度 文字会 垂直居中
  • 如果行高 大于 高度 文字会 偏下
  • 如果行高小于高度 文字会 偏上

四、CSS的特性

4.1 层叠性

定义:如果同一个元素上的样式出现叠加,那么这个时候一个属性就会将另一个属性层叠掉。

​ 比如,先给某个标签指定了内部文字颜色为红色,接着又指定了颜色为蓝色,此时出现一个标签指定了相同样式不同值的情况,这就是样式层叠。

​ 出现样式层叠依照两个原则,第一个为就近原则,第二个为按照优先级别高的生效。

4.1.1 就近原则

距离作用域近的,起作用。

示例:

 /* 123最后为蓝色 */
 p {color: red;}
 p {color: blue;}
 
 <p>123</p>

4.1.2 CSS优先级

不同的选择器对应不同的权重,权重值由(a,b,c,d)组成,权重可以做加法计算,但必须是按对应位置做加法。权重值a>b>c>d。

选择器名称(个) 权重值
类继承/通配符* (0,0,0,0)
HTML标签 (0,0,0,1)
类/伪类 (0,0,1,0)
ID (0,1,0,0)
行内样式 (1,0,0,0)
important 无穷大

选择器对应的权重值:

选择器名称(个) 权重值
类继承/通配符* (0,0,0,0)
HTML标签 (0,0,0,1)
类/伪类 (0,0,1,0)
ID (0,1,0,0)
行内样式 (1,0,0,0)
important 无穷大

举例:

div ul  li   ------>      0,0,0,3
.nav ul li   ------>      0,0,1,2
a:hover      -----—>      0,0,1,1
.nav a       ------>      0,0,1,1   
#nav p       ----->       0,1,0,1

五、CSS背景属性

background-color 背景颜色
background-image 背景图片地址
background-repeat 是否平铺
background-position 背景位置
background-attachment 背景固定还是滚动

<end>

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,726评论 1 92
  • CSS 是什么 css(Cascading Style Sheets),层叠样式表,选择器{属性:值;属性:值}h...
    崔敏嫣阅读 1,469评论 0 5
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    程序员poetry阅读 16,511评论 32 459
  • 本文主要是起笔记的作用,内容来自慕课网. 认识CSS样式 CSS全称为“层叠样式表 (Cascading Styl...
    0o冻僵的企鹅o0阅读 2,616评论 0 30
  • 介绍一款好用的软件,可以选择自己感兴趣的话题,——即刻 软件介绍: 「即刻」是一个有活力的精选信息社区,每时每刻都...
    月夜紫荆阅读 287评论 0 0