1小时学会CSS - 中

news2024/11/25 11:28:21

接第一课, 1小时学会CSS - 上,大家还记得前面说的一个概念,CSS 层叠样式吗?很多小伙伴都无法理解。

这里再详细说说,什么是CSS 层叠样式?CSS 层叠样式指的是上级标签的样式会自动继承给其所有的下级标签。

比如:在DIV标记中嵌套P标记,会自动应用到DIV下的所有P标签中,除非p标签重写了相关样式将其覆盖。

div { color: red; font-size:9pt;}
……
<div>

<p>这个段落的文字为红色9号字</p>

</div>

在这里插入图片描述


好了昨天的补充内容就到这里,咱们回到今天的学习主题,今天主要内容是CSS语法 和CSS选择器实践。




一、CSS语法


CSS 的定义是由三个部分构成:选择符(selector),属性(properties)和属性的取值(value)。


1、普通选择符

基本格式如下:

selector {property: value;}  

选择符 {属性:值}

选择符是可以是多种形式,一般是要定义样式的HTML标记,例如:body、p、table……,可以通过此方法定义它的属性和值,属性和值要用冒号隔开,例如:

body {color: red;}

上面代码的意思:选择符 body 是指页面主体部分,color 是控制文字颜色的属性,red是颜色的值。


在这里插入图片描述


此例的效果是使页面中的文字为红色:

在这里插入图片描述


如果属性的值是多个单词组成,必须在值上加引号,比如字体的名称经常是几个单词的组合:

body {font-family: "LiSu";}

注意:字体设置需要在css的body中设置。

在这里插入图片描述


如果需要对一个选择符指定多个属性时,我们使用分号将所有的属性和值分开,


段落居中排列;并且段落中的文字为红色,代码如下:
p

{ text-align: center;

color: black;

font-family: arial; }

2、组合选择符


我们还可以把相同属性和值的选择符组合起来,用逗号将选择符分开,这样可以减少样式重复定义:
h1, h2, h3, h4, h5, h6 { color: green; } 

p, table{ font-size: 9px; }

3、类选择符

类选择符能够把相同的元素分类定义不同的样式。

定义类选择符时,在自定类的名称前面加一个点号。

类选择符有两种用法,我们先看普通用法:


(1)、类选择符第一种用法

假如想要两个不同的段落,一个段落向左对齐,一个段落居中,可以这样:

p.left {text-align: left;}

p.center {text-align: center;}

然后用不在不同的段落里,只要在 HTML 标记里加入定义的 class 参数即可:

<p class="left">   <!--> 这个段落向左对齐 --> 

<p class="center">   <!--> 这个段落居中排列 --> 


在这里插入图片描述


注意:类的名称可以是任意英文单词或以英文开头与数字的组合,一般以其功能和效果简要命名。


(2)、类选择符另一种用法

在选择符中省略 HTML 标记名,这样可以把几个不同的元素定义成相同的样式:

.center {text-align: center;}    <!--> 定义.center的类选择符为文字居中排列--> 

这样的类可以被应用到任何元素上。例如:

<h1 class="center">    <!--> 这个标题是居中排列-->   

<p class="center"> <!--> 这个段落也是居中排列-->   

注意:这种省略 HTML 标记的类选择符是我们最常用的 CSS 方法,使用这种方法,可以很方便的在任意元素上套用预先定义好的类样式。


4、ID选择符

在HTML页面中ID参数指定了某个单一元素,ID选择符是用来对这个单一元素定义单独的样式。

和类选择符相同,定义ID选择符的属性也有两种方法。


(1)、ID选择符一种用法

定义ID选择符要在ID名称前加上一个#号。

ID选择符的应用和类选择符类似,只要把CLASS换成ID即可:

#intro

{font-size:110%;

font-weight:bold;

color:#0000ff;

background-color:transparent; } 

 <!-->字体尺寸为默认尺寸的110% 粗体 蓝色 背景颜色透明-->   


<p id="intro"> 这个字体尺寸为默认尺寸的110% 粗体 蓝色 背景颜色透明 </p>

在这里插入图片描述


(2)、ID选择符另一种用法

p#intro

{font-size:110%;

font-weight:bold;

color:#0000ff;

background-color:transparent; }

 

5、提升样式表的优先权

可以用!important提升样式表的优先权

例如:

p { color: #FF0000!important; }

.blue { color: #0000FF;}

#id1 { color: #FFFF00;}

我们同时对页面中的一个段落加上这三种样式,它最后会依照被 !important 申明的HTML标记选择符样式为红色文字。

如果去掉 !important,则依照优先权最高的ID选择符为黄色文字。


6、CSS 注释

CSS注释以/* 开头,以*/ 结尾,如下:

 /*  定义段落样式表 */
 
 p

{

text-align: center; /* 文本居中排列 */

color: black; /* 文字为黑色 */

font-family: arial; /* 字体为arial */

}

二、CSS选择器实践

CSS 选择器规定了 CSS 规则会被应用到哪些元素上。

严格来说,选择器的种类可以分为三种:标签名选择器(比如 div)、类选择器(比如.tweet) 和ID选择器(比如 #header)。而所谓的后代选择器和群组选择器只不过是对前三种选择器的扩展应用。而人们将上面这几种方式结合在一起,所以就有了5种或6种选择器了。


CSS 选择器效率从高到低的排序如下:

选择器用法
id选择器#myid
类选择器.myclassname
标签选择器div,h1,p
相邻选择器h1+p
子选择器ul > li
后代选择器li a
通配符选择器*
属性选择器a[rel=“external”]
伪类选择器a:hover, li:nth-child

1、选择器的优先级规定

一般而言,选择器越特殊,它的优先级越高。

也就是选择器指向的越准确,它的优先级就越高。

用1表示标签名选择器的优先级

用10表示类选择器的优先级

用 100 标示 ID选择器的优先级

例如选择器:

.polaris span {color:red;}

这个选择器优先级是 10 + 1 也就是11

.polaris 的优先级是10,浏览器自然会显示红色的字。


2、使用不同选择器的原则

  • 准确的选到要控制的标签

  • 使用最合理优先级的选择器

  • HTML 和 CSS 代码尽量简洁美观,通常:

    ①最常用的选择器是类选择器

    ②li、td、dd等经常大量连续出现,并且样式相同或者相类似的标签,我们采用类选择器跟标签名选择器结合的后代选择器 .xx li/td/dd {} 的方式选择。

    ③极少的情况下会用 ID 选择器,当然很多前端开发人员喜欢 header,footer,banner,conntent 设置成 ID 选择器的,因为相同的样式在一个页面里不可能有第二次。


3、怎么提升CSS选择器性能?

(1)、避免使用通用选择器

.content {color: red;}

因为浏览器匹配文档中所有的元素后分别向上逐级匹配 class 为 content 的元素,直到文档的根节点。因此其匹配开销非常大,所以应避免使用关键选择器是通配选择器的情况。


(2)、避免使用标签或 class 选择器限制 id 选择器

避免使用
button#backButton {…}

避免使用
.menu-left#newMenuIcon {…}

推荐使用
#backButton {…}

推荐使用
#newMenuIcon {…}


(3)、避免使用标签限制 class 选择器

避免使用
treecell.indented {…}

推荐使用
.treecell-indented {…}

最优使用
.hierarchy-deep {…}

(4)、避免使用多层标签选择器。使用 class 选择器替换,减少 css 查找

避免使用
treeitem[mailfolder="true"] > treerow > treecell {…}

推荐使用
.treecell-mailfolder {…}

(5)、避免使用子选择器

避免使用

treehead treerow treecell {…}
BETTER, BUT STILL BAD 
treehead > treerow > treecell {…}


推荐使用
.treecell-header {…}

(6)、使用继承

避免使用

#bookmarkMenuItem > .menu-left { list-style-image: url(blah) }

推荐使用

#bookmarkMenuItem { list-style-image: url(blah) }

4 、使用简洁、高效的CSS

所谓高效 CSS 就是让浏览器在查找 style 匹配的元素的时候尽量进行少的查找.


这里总结了 常见的写 CSS 低效错误:

(1)、不要在ID选择器前使用标签名

一般写法:

DIV#divBox

更好写法:

#divBox

原因: 因为ID选择器是唯一的,加上 div 反而增加不必要的匹配


(2)、不要在class选择器前使用标签名

一般写法:

span.red

更好写法:

.red

原因:同上面第一条一样,但如果定义了多个 .red,而且在不同的元素下是样式不一样,则不能去掉,比如你 CSS 文件中定义如下:

p.red{color:red;} 

span.red{color:#ff00ff}

如果这样定义的就不要去掉,去掉后就会混淆,不过建议最好不要这样写。


(3)、尽量少使用层级关系

一般写法:

#divBox p .red{color:red;}

更好写法:

.red{..}

(4)、使用class代替层级关系

一般写法:

#divBox ul li a{display:block;}

更好写法:

.block{display:block;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫日常练习-艾图网多页面图片爬取

文章目录前言页面分析设计代码前言 欢迎回来兄弟们&#xff0c;想必各位都已经过了一遍上篇文章了吧&#xff0c;没过的兄弟们可以移步上篇文章指点一二&#xff0c;链接: 爬虫日常练习-艾图网单页面图片爬取 感谢xdm 昨天的内容想必已经挑起了大家的胃口&#xff0c;我们趁…

自动化测试(一):自动化测试理论

什么是自动化测试&#xff1a; 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常&#xff0c;在设计了测试用例并通过评审之后&#xff0c;由测试人员根据测试用例中描述的规程一步步执行测试&#xff0c;得到实际结果与期望结果的比较。在此过程中&#xf…

【前端之旅】快速上手ElementUI

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…

指针在C++中的应用及顺序表结构体中的应用

目录 一.指针的概要 指针 一级指针 二级指针 二、一个生动形象的例子 三、总结 四、顺序表结构体中的应用 一.指针的概要 指针 是一种数据类型&#xff0c;它保存着一个变量的内存地址。指针可以通过间接引用操作符 * 来访问所指向的变量。在 C 中&#xff0c;指针通常…

【AI绘画】探索艺术与技术的融合:AI绘画的新前景

AI绘画的新前景1.AI绘画是把双刃剑2.AI绘画的应用场景3.AI绘画的技术4.结语随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;AI绘画成为了艺术创作领域中备受关注的话题。传统的艺术创作方式受到了AI技术的冲击&#xff0c;为艺术家和观众带来了全新的体验和…

socket 通信(一)

一 基本示例 #include <stdio.h> #include <sys/socket.h> // socket() #include <arpa/inet.h> // inet_addr() #include <netinet/in.h> // sockaddr_in{} INADDR_ANY #include <unistd.h> // close() #include <errno.h> …

php7类型约束,严格模式

在PHP7之前&#xff0c;函数和类方法不需要声明变量类型 &#xff0c;任何数据都可以被传递和返回&#xff0c;导致几乎大部分的调用操作都要判断返回的数据类型是否合格。 为了解决这个问题&#xff0c;PHP7引入了类型声明。 目前有两类变量可以声明类型&#xff1a; 形参&a…

2023年贵州建筑八大员考试时间报名时间是什么时间呢?甘建二

2023年贵州建筑八大员考试时间报名时间是什么时候开始呢&#xff1f;贵州建筑八大员考试时间是什么时候呢&#xff1f;什么时候考试呢&#xff1f; 建筑八大员主要是用于企业资质、招投标、检查使用&#xff0c;目前很多企业急需这个证书&#xff0c;关于建筑八大员报名时间和考…

网络拥塞控制,对越远的流量越宽容

考虑下面的网络传输场景&#xff1a; ​ S1&#xff0c;S2&#xff0c;S3&#xff0c;S4 向 D 方向发送&#xff0c;R4 发生拥塞。R4 必须丢弃一些数据进行疏导反馈拥塞信号&#xff0c;否则谁也过不去。 优先丢掉离得最近的 S4 的数据&#xff0c;其次依次丢 S3&#xff0c;S2…

051:cesium加载mapbox的多种Style形式地图

第051个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载mapbox的多种Style形式地图,包括dark-v11,streets-v12,navigation-night-v1,outdoors-v12,satellite-v9,satellite-streets-v12,light-v10。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实…

如何让心情保持平静?100多条禅修心法

静的层次和阶段 静首先是不要去争&#xff0c;没有任何争的心&#xff0c;没有任何杂念心。静有几个层次阶段&#xff1a; ⒈. 自己的心情相对于自己平静&#xff0c;是平静的第一个阶段。 ⒉. 第二个平静的阶段是&#xff1a;别人觉得你很静&#xff0c;自己也很静&#xf…

ArduPilot开源飞控系统之简单介绍

ArduPilot开源飞控系统之简单介绍1. 源由2. 了解&阅读2.1 ArduPilot历史2.2 关于GPLv32.3 ArduPilot系统组成2.4 ArduPilot代码结构3. 后续4. 参考资料ArduPilot是一个可信赖的自动驾驶系统&#xff0c;为人们带来便利。为此&#xff0c;提供了一套全面的工具&#xff0c;几…

人人看得懂的AI教程

人人看得懂的AI教程&#xff0c;从0开始入门AI教程&#xff0c;一步一步AI&#xff0c;人工智能学习笔记 现在写书真的方便&#xff0c;闲来无事写了本从0开始学AI的书籍&#xff0c;哈哈 一、基础知识 1.1 人工智能概览 1.2 机器学习 1.3 深度学习 1.4 数据科学 二、编程知…

Stable Diffusion - API和微服务开发

Stable Diffusion 是一种尖端的开源工具&#xff0c;用于从文本生成图像。 Stable Diffusion Web UI 通过 API 和交互式 UI 打开了许多这些功能。 我们将首先介绍如何使用此 API&#xff0c;然后设置一个示例&#xff0c;将其用作隐私保护微服务以从图像中删除人物。 推荐&…

CoreDNS 性能优化

CoreDNS 作为 Kubernetes 集群的域名解析组件&#xff0c;如果性能不够可能会影响业务&#xff0c;本文介绍几种 CoreDNS 的性能优化手段。合理控制 CoreDNS 副本数考虑以下几种方式:根据集群规模预估 coredns 需要的副本数&#xff0c;直接调整 coredns deployment 的副本数:k…

总结下Spring boot异步执行逻辑的几种方式

文章目录概念实现方式Thread说明Async注解说明线程池CompletableFuture&#xff08;Future及FutureTask&#xff09;创建CompletableFuture异步执行消息队列概念 异步执行模式&#xff1a;是指语句在异步执行模式下&#xff0c;各语句执行结束的顺序与语句执行开始的顺序并不一…

【高项】项目人力资源管理,沟通管理与干系人管理(十大管理)

【高项】项目人力资源管理&#xff0c;沟通管理与干系人管理&#xff08;十大管理&#xff09; 文章目录1、人力资源管理1.1 什么是人力资源管理&#xff1f;1.2 如何进行人力资源管理&#xff1f;&#xff08;过程&#xff09;1.3 人力资源管理工具1.4 人力资源管理文件2、沟通…

自动驾驶BEV感知系列算法整理总结

序论 之前一直做的lidar感知&#xff0c;现在感觉大趋势是多传感器融合&#xff0c;所以博主也在向BEV下的融合框架学习&#xff0c;希望大家后面可以多多交流&#xff0c;下面会分为两类进行介绍&#xff0c;后期的文章会在下面两类中以小标题的形式出现&#xff0c;BEV下的两…

《推荐PlumGPT:一款优秀的聊天机器人》

PlumGPT是一款仿照ChatGPT的聊天机器人&#xff0c;它使用了最先进的自然语言处理技术来实现人机交互。PlumGPT不仅能够进行普通的对话&#xff0c;还可以回答各种问题&#xff0c;提供各种建议和信息。它能够对不同的话题做出详细的回答&#xff0c;例如科技、健康、娱乐、新闻…

[element]element-ui框架下载

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一键三连&#x1f609;有写的不好的地方也欢迎指正&#xff0c;一同进步&#x1f601;…