HTML5+CSS3 学习笔记 05

视频资源:https://www.bilibili.com/video/BV14J4114768?from=search&seid=3842566320098741425

视频记录 127-135

<style>
.nav a {
    display: inline-block;
    width: 120px;
    height: 58px;
    background-color: pink;
    /* 水平居中 */
    text-align: center;
    /* 垂直居中 */
    line-height: 58px;
    /* 去除链接下划线 */
    text-decoration: none;
    /* 文字颜色 */
    color: #fff;
}
.nav .bg1 {
    background: url(img/img1) no-repeat;
}
.nav .bg1:hover {
    background-color: pink;
}
.nav .bg2 {
    background: url(img/img2) no-repeat;
}
.nav .bg2:hover {
    background-color: plum;
}
</style>

<div class="nav">
    <a href="#" class="bg1">五彩导航</a>
    <a href="#" class="bg2">五彩导航</a>
    <a href="#" class="bg3">五彩导航</a>
    <a href="#">五彩导航</a>
    <a href="#">五彩导航</a>
</div>

CSS三大特性

1.1 层叠性

相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题。

层叠性原则

  • 遵循就近原则,哪个样式距离结构近,就执行哪个样式。

  • 样式不冲突,不会层叠。

<style>
div {
    color: plum;
}
div {
    color: pink;
}
</style>

<div>我要飞翔</div>

# pink距离div近,则颜色为pink。

<style>
div {
    color: plum;
    font: 12px;
}
div {
    color: pink;
}
</style>

<div>我要飞翔</div>

# 我要飞翔颜色为pink,字体大小为12px。

1.2 继承性

子标签会继承父标签的某些样式,比如字体和颜色。简化代码,降低CSS复杂性。

某些样式:text-,font-,line-开头的元素,以及color属性。

<style>
div {
    color: plum;
    font: 12px;
}
</style>

<div>
    <p>我要飞翔</p> // Inherited from div
</div>

# 我要飞翔颜色为plum,字体大小为12px。

行高的继承

<style>
body {
    color: pink;
    font: 12px/24px 'Microsoft YaHei';
}
</style>

<body>
<div>我是一只小小鸟</div>
<p>我要飞翔</p>
</body>

#12px/24px 24px是指行高,div/p行高都是24px。

<style>
body {
    color: pink;
    font: 12px/1.5 'Microsoft YaHei';
}
div {
    /* 1.5是指当前元素文字大小的 font-size的1.5倍,所以当前行高是21px */
    font-size: 14px;
}
</style>

<body>
<div>我是一只小小鸟</div>
<p>我要飞翔</p>

#行高的另一种写法

<style>
body {
    color: pink;
    font: 12px/1.5 'Microsoft YaHei';
}
div {
    /* 1.5是指当前元素文字大小的 font-size的1.5倍,所以当前行高是21px */
    font-size: 14px;
}
/* li 没有指定字体大小,会继承父亲ul字体大小,ul继承父亲body字体大小为12px
    li行高为 12px * 1.5 = 18px
*/
</style>

<body>
<div>我是一只小小鸟</div>
<p>我要飞翔</p>
<ul>
    <li>没有指定文字大小</li>
</ul>
</body>

1.3优先级

当同一个元素指定多个选择器,就会有优先级产生。
  • 选择器相同,则执行层叠性。
  • 选择器不同,则根据选择器权重执行。

不管父元素权重有多高,子元素选择器权重为0。

div {
    color: red;
}
.test {
    color: pink;
}

<div class="test">你笑起来像真好看</div>

# 颜色为purple,ID选择器权重更高

<style>
div {
    color: red;
}
.test {
    color: pink;
}
#demo {
    color: purple;
}
</style>

<div class="test" id="demo" style="color: black;">你笑起来像真好看</div>

# 颜色为black,style选择器权重更高

<style>
div {
    color: red !important;
}
.test {
    color: pink;
}
#demo {
    color: purple;
}
</style>


<div class="test" id="demo" style="color: black;">你笑起来像真好看</div>

# 颜色为red,!important权重最高

1.3 优先级
 
选中叠加(权重虽叠加,但不会进位。10次叠加为10,不会进位。)
 
/* 复合选择器有权限叠加的问题 */
/* url li权重0,0,0,1 + 0,0,0,1 = 0,0,0,2 */
url li {
    color: black;
}
/* li的权重是0,0,0,1, */
li {
    color: red;
}
</style>

<url>
    <li>Jim</li>
    <li>Jack</li>
    <li>Jhon</li>
</url>

#尽管 li距离标签更接近,但是权重不高,最终颜色为black。

/* 复合选择器有权限叠加的问题 */
/* url li权重0,0,0,1 + 0,0,0,1 = 0,0,0,2 */
url li {
    color: black;
}
/* li的权重是0,0,0,1, */
li {
    color: red;
}
/* .nav li权重 0,0,1,0 + 0,0,0,1 = 0,0,1,1 */
.nav li {
    color: blue;
}

<url class="nav">
    <li>Jim</li>
    <li>Jack</li>
    <li>Jhon</li>
</url>

#类选择器的权重更高,最终颜色为blue。

权重练习题

.nav {
    color: blue;
}
li {
    color: red;
}

<url class="nav">
    <li>Jim</li>
    <li>Jack</li>
    <li>Jhon</li>
</url>

#最终文字为red,.nav权重虽高,但是li继承之后父元素权重为0,子元素定义的颜色将其覆盖。

 

/* .nav li权重 0,0,1,0 + 0,0,0,1 = 0,0,1,1 */
.nav li {
    color: blue;
}
/* pink权重 0,0,1,0 */
.pink {
    color: pink;
}

<url class="nav">
    <li class="pink">Jim</li>
    <li>Jack</li>
    <li>Jhon</li>
</url>

#Jim颜色为blue。

/* .nav li权重 0,0,1,0 + 0,0,0,1 = 0,0,1,1 */
.nav li {
    color: blue;
}
/* .nav pink权重 0,0,1,0 + 0,0,1,0  = 0,0,2,0 */
.nav .pink {
    color: pink;
}

<url class="nav">
    <li class="pink">Jim</li>
    <li>Jack</li>
    <li>Jhon</li>
</url>

#Jim颜色为pink。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值