前端简单入门第四讲 CSS基础
发布日期:2021-06-30 18:03:43 浏览次数:2 分类:技术文章

本文共 4082 字,大约阅读时间需要 13 分钟。

在这一讲进行之前,我还要再介绍两个HTML的块标签,span和div。他俩都是通用标签,没什么具体的语义。

  • <span>标签通常用于标记段落中的某块文本内容,然后通过该标签,可以单独为这块文本内容增加CSS样式;
  • <div>标签一般用于,将屏幕某块区域划分出来后,用该标签标记后可通过选择器作用自定义的CSS样式。

例如,

在这里插入图片描述
在这里插入图片描述

CSS的概述

CSS(Cascading Style Sheets,层叠样式表),它是用来美化我们的HTML页面的,而HTML决定了网页的骨架,这样CSS就将页面的HTML和美化进行了分离。因此我们首先需要清楚,CSS的职责是控制HTML文档里的文本内容在网页上样式呈现的效果,写的每一个样式最终是通过选择器作用到具体的元素上面。

CSS的工作原理

CSS实际上是如何工作的呢?可见下图。

在这里插入图片描述
CSS整个的工作流程,可以解释为如下4步:

  1. 互联网其实都是通过网页相互连接组成的,每个网页都是一份HTML文档,因此浏览器与后端的首次通信是以HTML文档为基准,那么整个流程的第一步也就是解析HTML文档;
  2. 如果在解析HTML文档过程中发现有通过<link>标签引用了外部的CSS文件时,那么浏览器会去下载相对应的CSS文件;
  3. 当HTML文档解析完毕后会生成一个DOM文档结构,DOM文档结构中记录着每个节点的元素,各元素之间的关系;
  4. 最后,通过CSS的选择器将相对应的样式作用到DOM中选择器找到的元素节点,然后浏览器渲染呈现在网页上。

CSS的简单语法

CSS的典型结构如下图:

在这里插入图片描述
一个CSS的典型结构总共由两部分组成:选择器 + 样式。{}大括号内部的都是具体的某种样式,可用来控制元素的背景、大小、排版位置等样式效果,而{}左边的则是选择器,用来指定后面跟随的样式列表要作用到HTML文档中的哪个元素上。
CSS的选择器类型很多,规则也很多,因此会有一种现象,就是某个元素被不止一个选择器匹配到,如果某个样式属性起冲突了,那么就会按照一定的优先级顺序处理。样式属性也很多,具体也在后面介绍,但有一点需要先明确一下,如果使用了未知的样式属性,或者给某个样式属性赋予了无效值,那么该样式属性会被视为无效,浏览器的CSS引擎会完全忽略它。

CSS的引入方式

CSS基本结构是由选择器和样式属性列表组成,那么如何跟HTML文档关联起来使用呢?一共有三种方式。

内嵌样式

使用HTML元素的全局属性style声明,仅影响一个元素,除非工作环境受限,比如只允许编辑HTML的body,否则强烈不推荐这种方式。

点击跳转

内部样式表

在HTML中的<head>内使用<style>标签,在某些情况下很有用,比如当你不能直接修改CSS文件时。

外部样式表

将CSS保存在一个独立的扩展名为.css的文件中,并在HTML的<head>里使用<link>元素引用它,这种方法可以说是最好的,因为你可以使用一个样式表来设置多个文档的样式,并且需要更新CSS的时候只要在一个地方更新。

CSS的选择器

选择器,顾名思义,就是选择到HTML文档中具体的元素对象,并将CSS代码作用在它身上。

基本选择器

基本选择器其实是一些比较常用、简单的选择器,包括元素选择器、id选择器、class选择器、属性选择器、组合选择器。下面我就来一一它们。

元素选择器

			
讲完这个内容,大家就可以下课了。 讲完这个内容,大家就可以下课了。 讲完这个内容,大家就可以下课了。 讲完这个内容,大家就可以下课了。

效果:作用于HTML文档中的所有span标签的元素上。

id选择器

			
JAVAEE
IOS
ANDROID

id在HTML文档中须唯一存在,所有id选择器只作用于单个元素。

class选择器

			
香蕉
黄瓜
苹果
茄子
橘子

HTML文档中可对多个元素应用相同class,所以class可同时作用于多个元素。

属性选择器

			
张三 李四

作用于所有既包含href属性又包含title属性的a标签上。这里其实是属性选择器最基本用法的一种,而它还支持其他很多规则的用法,如下:

选择器 描述
[attr] 选择定义attr属性的元素,不管属性的取值具体是什么
[attr=“val”] 选择定义attr属性,且属性值为val的元素
[attr^=“val”] 选择定义attr属性,且属性值以字符串val打头的元素
[attr$=“val”] 选择定义attr属性,且属性值以字符串val结尾的元素
[attr*=“val”] 选择定义attr属性,且属性值包含字符串val的元素
[attr~=“val”] 选择定义attr属性,且属性值具有多个值,其中一个为字符串val的元素

也就是说,属性选择器不仅可以用来匹配那些具有指定属性的元素,还可以进一步根据不同属性值来匹配。

组合选择器

			
点击跳转 另一文本

元素选择器和class选择器组合使用,作用于a元素中有声明myClass类型的元素。

通用选择器

作用到所有元素上。

并集选择器

并集选择器的语法为:

选择器1, 选择器2, ... {	属性的名称: 属性的值;	属性的名称: 属性的值;	......}

并集选择器是通过,逗号将不同选择器组合使用的一种选择器,这种情况下,各个选择器之间是没有任何关系,都是相互独立的,就是他们具有相同的样式属性表而已。这只是一种简便写法的用法而已,具有相同样式属性表的不用再复制粘贴,可以直接通过,逗号将不同选择器分开即可。只要HTML文档中的元素满足其中一个选择器即可。例如,

a, h1, span, div {	background-color: black;}

上述示例中有四个选择器含有同样的样式属性,HTML文档中只要满足其中一个选择器即可被匹配到。

后代选择器

后代选择器的语法为:

选择器1 选择器2 {	属性的名称: 属性的值;	属性的名称: 属性的值;	......}

多个选择器之间通过空格分隔开的话表示这是一个后代选择器,也就是说,需要先满足第一个选择器的前提下,在第一个选择器匹配到的元素的后代元素中去匹配第二个选择器。这里的后代包括了子孙后代。

			

This is a 儿子 孙子 heading

以上示例中,选择器要匹配的元素是位于h1元素的后代元素中的em元素,因此h1元素下面的所有em标签(元素)都会被匹配到。

儿子选择器

儿子选择器的语法为:

选择器1 > 选择器2 {	属性的名称: 属性的值;	属性的名称: 属性的值;	......}

儿子选择器是多个选择器之间通过>右箭头符号连接,表示的是在满足第一个选择器的前提下,从它匹配到的元素的直接子元素中寻找第二个选择器。跟后代选择器的区别就在于它只能在直接子元素中匹配第二个选择器。

			

This is a 儿子 孙子 heading

以上示例中,选择器要匹配的元素是位于h1元素的后代元素中的第一个em元素。

兄弟选择器

兄弟选择器的语法为:

选择器1 + 选择器2 {	属性的名称: 属性的值;	属性的名称: 属性的值;	......}

兄弟选择器是多个选择器之间通过+加号连接。表示的是,在满足第一个选择器的前提下,从它匹配到的元素的紧跟着的位于同一层级的下一个元素,看该元素是否符合第二个选择器。也就是说,兄弟选择器,两个选择器所匹配的元素要求位于同一层级,且相邻。

			
第一个a

第二个a

第三个a 第四个a

上述示例中,同时满足位于同一层级,且相邻,且需要先满足第一个选择器的前提下,还满足第二个选择器这四个条件的a元素就是第三个a元素了。

普通兄弟选择器

普通兄弟选择器的语法为:

选择器1 ~ 选择器2 {	属性的名称: 属性的值;	属性的名称: 属性的值;	......}

普通兄弟选择器,是多个选择器之间通过~波浪符号连接。表示的是满足第一个选择器的前提下,从它匹配到的元素后,去寻找位于同一层级,且在该元素后面的所有满足第二个选择器的元素。兄弟选择器只匹配相邻的一个元素,而普通兄弟选择器则是可以匹配位于元素后面的所有符合第二个选择器的元素。

			
第一个a

第二个a

第三个a 第四个a

同时满足同一层级,且在p元素后面的兄弟元素有两个,第三个a元素和第四个a元素,因此这里可以匹配到这两个元素。

伪类选择器

伪类选择器是通过满足一些指定状态、行为来匹配元素的一种选择器,比如满足是否获取焦点等等。

伪类选择器相对来说,比较多,但这里只介绍作用在a标签上的。

属性 描述
:link 选取未访问的链接元素
:visited 选取用户已访问的链接元素
:hover 选取鼠标指针悬停的元素
:active 选取当前被用户激活的元素,这通常意味着用户即将点击该元素

例如,

			
草榴社区

选择器的优先级

按照选择器搜索精确度来编写,优先级由高到低分别是:行内样式 > ID选择器 > 类选择器 > 元素选择器。示例如下,

			
扩展完,就可以去吃饭啦!

其实,选择器的优先级还有一个就近原则,即哪个样式离标签最近,标签就显示哪个样式。

在这里插入图片描述

转载地址:https://liayun.blog.csdn.net/article/details/85650551 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:前端简单入门第五讲 CSS基础(二)——盒子模型、浮动与位置
下一篇:前端简单入门第三讲 HTML标签(二)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月07日 17时47分47秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

freeswitch添加坐席/usr/local/freeswitch/conf/directory/default 2019-04-30
JavaScript原生开关灯效果 2019-04-30
企业邮箱如何申请注册,邮箱申请如何免费注册? 2019-04-30
微信企业邮箱,手机邮箱格式地址怎么写? 2019-04-30
公司如何申请企业邮箱,公司邮箱怎么申请,公司企业邮箱哪个好? 2019-04-30
电子邮箱账号怎么申请,怎样申请邮箱账号呢 2019-04-30
邮箱怎么发邮件,邮件发信量多少,职场新人怎么发汇报邮件呢? 2019-04-30
maven 多层次pom 新引入包,编译成功,还是没有将包引入到本地 2019-04-30
leetCode2 两数相加 2019-04-30
【工具使用】使用pip与conda安装、更新与卸载Pytorch和torchvision 2019-04-30
【深度学习笔记】batchsize, time step(iteration), epoch 区别与联系 2019-04-30
【解决错误】ModuleNotFoundError No module named matplotlib 2019-04-30
【工具使用】Google免费云环境Colaboratory使用 2019-04-30
【深度学习笔记】卷积层,全连接层,池化层的相关输出参数计算 2019-04-30
【NLP学习笔记】文本分类概述 2019-04-30
【深度学习笔记】文本分类 2019-04-30
【转载】炼丹实验室:深度学习网络调参技巧 2019-04-30
【论文阅读笔记】Graph Convolutional Networks for Text Classification 2019-04-30
【论文阅读笔记】文本分类论文汇总 2019-04-30
【论文阅读笔记】Convolutional Neural Networks for Sentence Classification 2019-04-30