CSS那些事读书笔记-1

背景

作为一个后端开发,曾经尝试过学习前端,但是总觉不得要领,照猫画虎,而公司里又有专业的前端开发,工作中几乎接触不到实际的前端任务,所以前端的技能田野一直是一片荒芜。但是笔者深知前端的技能对找工作和面试又有着重要的帮助,在二线和三线城市,高级开发几乎都需要精通前端的知识,所以这次下定决定要好好学习一番。这几天搜索到了一本主讲CSS实例的书,开始学习,希望能坚持下去,同时,也希望所记笔记能对大家有所帮助。

笔记参考书籍:CSS那些事儿

CSS基础部分笔记

选择器

选择器有下面几类,按照是否常用依次下排,其中 包含选择器 属性选择器 子选择器和相邻选择器是我比较陌生的

  • 通配符选择器:*,用于对页面所有元素,或者某个标签下的所有元素应用格式
  • 类选择器:.名
  • id选择器:#名
  • 包含选择器:p span {} 也是用于某个元素的子元素的,可以对元素的子元素应用某种格式
  • 属性选择器:通过属性或者属性值来确定元素
    • E[attr]:有某属性的元素
    • E[attr="value"]:有某属性并且属性值等于value的元素
    • E[attr~="value"]:有某属性,并且属性值中包含空格,按照空格切割属性值,得到的字符数组中有=value的子串
    • E[attr|="value"]:有某属性,并且属性值以value开头,并且存在 - 连字符
  • 子选择器和相邻选择器
    • 子选择器:父元素 > 子元素,必须是下面的第一代直系子代才可以。
    • 相邻选择器:元素1 + 元素2,表达的是同一个父级下相邻的兄弟的关系,被选择的是元素1的第一个兄弟元素2

选择器的优先级

首先存在两个基本原则:

  • 同一个选择器的效果会覆盖,以文档中更靠后的选择器定义样式为准
  • 子类标签会继承父类元素的CSS属性,除了h1~h6

针对同一个标签,使用不同的选择器选择它,优先级如下:

  • 标签选择器 伪类和伪对象:1分
  • 类选择器和属性选择器:10分
  • id选择器:100分
  • style属性:1000分
  • !important:100000分

书中举了一个例子,我这也实现出来,验证效果

<!DOCTYPE html>
<html>	
<head>
<meta charset="utf-8"> 
<title>css优先级</title> 
<style> 
p{
    color:blue;
}

p.myColor{
    color:black;
}

.myColor{
    color:yellow;
}

#myColor{
    color:greenyellow;
}

</style>
</head>
<body>
<p>行1</p>
<p class="myColor">行2</p>
<p class="myColor" id="myColor">行3</p>
<p style="color:red" class="myColor" id="myColor">行4</p>

</body>
</html>

效果如下:

各行的计算分数:

  • 行1没有疑问,就只应用了p标签选择器设置的颜色
  • 行2可以应用p.myColor 和 .myColor ,按照得分,会应用p.myColor设置的颜色
    • p.myColor 得分= 1+10 = 11分
    • .myColor 得分 = 10分
  • 行3,显而易见,会应用id选择器设置的颜色
  • 行4,显而易见,会应用style属性本身设置的颜色

如果在p的标签选择器中应用

p{
    color:blue !important;
}

行1到行4都会变成蓝色

盒模型的简要介绍

盒模型在网上已经有很多讲解博客了,基本的知识点就用下图来代替

下面依旧实操书中给的例子来理解盒模型,代码如下

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>css盒模型</title>
    <style>
        div {
             200px;
            height: 30px;
            padding: 20px;
            border: 5px solid #FF0000;
            margin-bottom: 10px;
            color: #FFFFFF;
            background-color: #000000;
        }
    </style>
</head>

<body>
    <div>第一个div</div>
    <div>第二个div</div>
    <div>第三个div</div>
</body>

</html>

效果如下:

内边距为20px,背景颜色包含了内容和内边距的部分。

原文地址:https://www.cnblogs.com/ging/p/13719547.html