选择器和层叠

选择器和层叠

 

常见CSS属性:

 

属性color,示例 color:red,描述 设置元素内容的颜色

属性 text-align,示例 text-align:center,描述 设置元素内容的对齐 text-align,方式 text-align:center, 描述设置元素内容的对齐方式

属性 font-size, 示例 font-size:28px, 描述 设置元素内容的文字大小

属性 font-weight, 示例font-weight:bold, 描述 设置元素内容的文字粗细

属性 background, 示例 background:red, 描述 设置元素的背景颜色

 

CSS选择器

 

CSS选择器,决定了将规则应用到哪些元素上;

三种基本选择器:元素选择器、类选择器、ID选择器;

除此之外,CSS还提供了大量的选择器。

选择器:

选择器组合;简单选择器;选择器分组。

简单选择器:元素选择器、类选择器、ID选择器、通配选择器、属性选择器、伪类选择器、伪元素选择器;前三种是常用的。

 

声明冲突

 

作者样式表(有网页开发者书写的样式表):行内样式表、内部样式表、外部样式表;浏览器默认样式表;用户样式表。发生冲突时最终以作者样式表为主。

 

层叠概述:

 

什么是层叠:

层叠是一种机制,用于解决CSS声明冲突;多个相同的CSS声明(属性),应用到同一个元素上。

<h1 class="red">Lorem</h1>

影响它的CSS规则

.red{color:red;}作者样式表

body h1{color:yellow; font-size:26px;}作者样式表

h1{color:green; text-align:center;}作者样式表

h1{display: block; font-size: 2em; font-weight: bold;}浏览器默认样式表

 

text-align:center

display: block

font-weight: bold

层叠

color:red

font-size:26px;

h1最终样式:

红色 “Lorem”

层叠是一种机制,用于解决CSS声明冲突;

层叠的整个过程,是浏览器根据规则自动完成的;

学习层叠,就是学习层叠过程中的规则;

学习层叠的目的,是为了在开发时更好的掌控元素的样式。

 

层叠的过程:

1.比较优先级:优先级低的声明会被淘汰,优先级高的声明胜出

2.比较特殊性:特殊性低的声明会被淘汰,特殊性高的声明胜出

3.比较源次序:源次序靠前的声明会被淘汰,靠后的声明胜出

经过这三个步骤,仅会有一个声明最终胜出,其他的全部被淘汰。

每一个声明都有一个优先级

当发生冲突时,优先级高的会保留,优先级低的会被淘汰

一个声明的优先级,与它的来源和重要性有关

来源:作者样式表,浏览器默认样式表,用户样式表。

重要性:若属性值后跟上!important,则表示一条重要声明,否则,表示普通声明

示例:

color:red;普通声明。

color:red !important;重要声明。

一个声明的优先级,与它的来源和重要性有关:

1.浏览器默认样式表中的声明

2.用户样式表中的普通声明

3.作者样式表中的普通声明

4.作者样式表中的重要声明

5.用户样式表中的重要声明

比较优先级-示例:

<h1 class="red">Lorem</h1>

作者样式表:

.red{color:red;font-size:40px !important;}

h1{text-align:center;font-size:26px;}

浏览器默认样式表:

h1{display: block; font-size: 2em; font-weight: bold;}

最终结果实现:font-size:40px

 

比较特殊性-总体规则:

 

每一个声明都有一个特殊性(Specificity)

当发生冲突时,特殊性高的会保留,特殊性低的会被淘汰;

一个声明的特殊性,取决于规则适用范围的大小;

规则适用范围越大,特殊性越低,适用范围越小,特殊性越高。

行内样式>ID选择器 >类选择器>元素选择器>通配符选择器

特殊性从高到低。

比较特殊性-示例:

<style>

#tp{color:black; text-align: center;}

.red{color:red; font-size:18px;}

p{color:yellow; font-weight:bold;}

*{color:white;}

</style>

<p id="tp" class="red" style="color:green">

Lorem ipsum dolor sit amet...

</p>

比较结果:color:green

在比较特殊性时,每一个冲突的声明,会生成4个数字(a,b,c,d),以比较特殊性。

a越大,特殊性越高,若a相同,比较bb越大,特殊性越高,依次类推...

a: 若声明是行内样式,则为1,否则为0

b: 规则中ID选择器的个数

c: 规则中类选择器、伪类选择器和属性选择器的个数

d: 规则中元素选择器、伪元素选择器的个数

页面中的一个<a>元素,受到下面规则的影响

 

 

 

 

在比较特殊性时,每一个冲突的声明,会生成4个数字(a,b,c,d),以比较特殊性;

a越大,特殊性越高,若a相同,比较bb越大,特殊性越高,依次类推...

a: 若声明是行内样式,则为1,否则为0

b: 规则中ID选择器的个数

c: 规则中类选择器、伪类选择器和属性选择器的个数

d: 规则中元素选择器、伪元素选择器的个数

当计算选择器分组的时候,要分开计算。

 

比较源次序:

 

body p{color:red}

div p{color:green}

特殊性相同,比较源次序,最后出现的声明胜出,其他的全部淘汰。

 

该规则的实际应用:

CSS Reset代码前置;

a元素的伪类书写顺序。

其中a元素的伪类书写顺序:

:hover 鼠标悬停到元素上的样式,适用于其他元素

:link 链接已被访问过的样式

:visited 链接已被访问过的样式(为了保护用户隐私,一些声明在该伪类中是无效的)

:active 链接被激活时的样式。

 

继承:

 

什么是继承:

继承(inherit),是指子元素会自动拥有父元素的某些CSS属性;

CSS代码:

body{color:red}

HTML代码:

<body>

body中的内容

<p>p元素中的内容</p>

</body>

p元素自动拥有了父元素bodycolor属性。

继承是自动发生的,开发者不需要书写任何额外的代码;

某些CSS属性并不不是所有CSS属性都可以被子元素继承;

可被继承的属性:colorfont-sizefont-weighttext-align

不可被继承的属性:background-color

继承须有传递性:

 

 

 

有些属性在页面的某个区域中具有通用性;

若没有继承,则必须为该区域的每个元素指定样式,导致代码重复臃肿。

什么是继承-示例

 

 

 

继承发生的场景:

 

 

一个元素的某个CSS属性,只有满足下面两个条件,才会继承父元素:

该属性是可继承的属性

该属性在样式表中没有声明

 

强制继承:

 

强制继承,也叫做显式继承,是指将CSS属性值设置为 inherit

这样做,通常有两个原因:

为了继承有些不可继承的属性;

为了继承已被声明过的属性。

 

属性值计算过程简介:

 

color:?

h1 class="test">Lorem</h1>

CSS属性值:

color:

background-color:

text-align:

font-size:

font-weight:

display:

其他CSS属性:...

 

作者样式表:

.red{color:red;font-size:40px;}

h1{font-size:26px;}

div h1.red{font-size:3em; font-size:30px;}

 

浏览器默认样式表:

h1{display: block; font-size: 2em; font-weight: bold;}

 

2.层叠冲突:对样式表有冲突的声明使用层叠规则,确定CSS属性值

 

 

 

 

 

3.使用继承:对仍然没有值的属性,若可以继承,则继承父元素的值

 

 

 

4.使用默认值:对仍然没有值的属性,使用默认值

<h1 class="test">Lorem</h1>

CSS属性值:

color:red

background-color:

text-align:center

font-size:30px

font-weight:bold

display:block

其他CSS属性:...

这一条background-color:transparent

 

转载于:https://www.cnblogs.com/zai1/p/10987233.html

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人运动设备中的六轴姿态传感器,它集成了三轴陀螺仪三轴加速度计。这款传感器能够实时监测并提供设备的角速度线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp``MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式I2C地址,`getAcceleration()``getGyroscope()`则分别用于获取加速度角速度数据。 在Arduino项目中,首需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()``getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准滤波,以消除噪声漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客其他开源资源是学习解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值