欢迎光临散文网 会员登陆 & 注册

CSS2超全知识点总结,CSS权重!important塌陷inherit 层模型px,em和rem【诗书画唱】

2021-01-22 00:44 作者:诗书画唱  | 我要投稿



CTRL+F搜索关键词条:

代码

例子和运行效果

PPT

适合休息时听的学习视频

active激活

属性选择器

内联(行内)元素

子选择器

通用选择器

伪类选择器

分组选择器

伪类与伪元素:

after和:before

CSS权重总结

内联(行内)元素

块级元素特点

块级元素、内联(行内)元素和内联块状元素。

CSS继承

important属性的运用

!important

 inherit 的属性

内联块状元素

边框

CSS布局模型

流动模型(Flow)

浮动模型 (Float)

层模型(Layer)

流动模型


浮动模型



层模型有三种形式:

绝对定位(position: absolute)

相对定位(position: relative)

固定定位(position: fixed)


浮动造成的塌陷



CSS中的单位px,em和rem



视频笔记

鼠标在上面就显示角色翅膀,移走就消失翅膀的例子

特别注意:CSS权重的顺序为:important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 通配符 > 继承。根据 CSS 规范,具体性越明确的样式规则,权重值越高。


解决“塌陷”问题有以下三个方法(个人认为自己写项目时还是常会用以下内容的):

在使用float元素的父元素结束前加一个高为0宽为0且有clear:both样式的div

在使用float元素的父元素添加overflow:hidden

使用after伪元素清除浮动





PPT START



学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言。

1. HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。

2. CSS样式是表现。就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为表现。

3. JavaScript是用来实现网页上的特效效果。如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜色改变。还有焦点新闻(新闻图片)的轮换。可以这么理解,有动画的,有交互的一般都是用JavaScript来实现的。

样式选择器指明了{}中的样式的作用对象,也就是样式作用于网页中的哪些元素。

标签选择器

类选择器

ID选择器

子选择器

通用选择器

伪类选择器

分组选择器


伪类与伪元素:

伪元素中用的最多的就是:after和:before,我们可以用这两个伪元素做很多效果!

尝试一下的代码:

a::after { content:"("attr(href) ")"; } 

a::before { content: url(logo.png); }

CSS权重的顺序为:important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 通配符 > 继承。根据 CSS 规范,具体性越明确的样式规则,权重值越高。

CSS权重计算


选择器权重值的计算:

A:如果规则是写在标签的style属性中(内联样式),则A=1,否则,A=0. 对于内联样式,由于没有选择器,所以 B、C、D 的值都为 0,即 A=1, B=0, C=0, D=0(简写为 1,0,0,0,下同)。

B:计算该选择器中ID的数量。(例如,#header这样的选择器,计算为 0, 1, 0, 0)。

C:计算该选择器中伪类及其它属性的数量(包括类选择器、属性选择器等,不包括伪元素)。 (例如, .logo[id='site-logo'] 这样的选择器,计算为 0, 0, 2, 0)。

D:计算该选择器中伪元素及标签的数量。(例如,p:first-letter这样的选择器,计算为0, 0, 0, 2)。

CSS权重比较


权重值的比较:

根据规范,计算权重值时,A, B, C, D 四组值,从左到右,分组比较,如果 A 相同,比较 B, 如果 B 相同,比较 C, 如果 C 相同,比较 D, 如果 D 相同,后定义的优先。


特殊的 !important:

在按照 ABCD 四组计算比较之外,在定义样式的时候,还可以对某一个属性应用 !important。 需要特别注意的是这里的 "!" 与其在编程语言中的意义刚好相反,不是代表“不重要”而是代表“很重要”。

CSS2 规范中规定:!important 用于单独指定某条样式中的单个属性。对于被指定的属性,有!important 指定的权重值大于所有未用 !important 指定的规则。

简单样式权重的运用:

important属性的运用:

第一个样式的权重值为 0, 1, 1, 2,第二个样式的权重值仅为 0, 0, 0, 2。所以应用于相同元素时,应该是第一个样式生效。但是对于 color 这个属性,由于在第二个样式中用 !important 做了指定,因此color 将应用第二个样式的规则。而 font-weight 则按照规定用样式一的规则。

CSS权重总结


一条样式规则的整体权重值包含四个独立的部分:[A, B, C, D];

A 表示内联样式,只有 1 或者 0 两个值;

B 表示规则中ID的数量;

C 表示规则中除了 ID、标签和伪元素以外的其它选择器数量;

D 表示规则中标签和伪元素的数量;

比较时从高位到低位(从 A 到 D)分别比较,高位相同才需要比较低位;

有 !important 标记的属性权重值无视没用 !important 指定的一切情况;

多次指定 !important 时,相互抵销。

inherit 而来的属性定义,优先级低于任何直接指定的属性值。


CSS继承

CSS的某些样式是具有继承性的。继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代。每个属性值还有一个可能为 inherit的值。表示元素的该样式属性继承自父级元素,与父级元素的定义一致。

对于 inherit 的属性: 继承而来的属性值,权重永远低于明确指定到元素的定义。只有当一个元素的某个属性没有被直接指定时,才会继承父级元素的值。


下面的例子中,样式规则并未针对 span 标签指定 color 属性, 但是 span中的文字会显示为红色, 这就是因为span的color属性默认值为inherit.


在CSS中,html中的标签元素大体被分为三种不同的类型:块级元素、内联(行内)元素和内联块状元素。

常用的块状元素有:

<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>

常用的内联元素有:

<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>

常用的内联块状元素有:

<img>、<input>

设置display:block就是将元素显示为块级元素。

块级元素特点:

每个块级元素都从新的一行开始,并且其后的元素也另起一行。(即一个块级元素独占一行)

元素的高度、宽度、行高以及顶和底边距都可设置。

元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。


内联(行内)元素


块状元素也可以通过代码display:inline将元素设置为内联(行内)元素。

内联(行内)元素特点:

和其他元素都在一行上;

元素的高度、宽度、行高及顶部和底部边距不可设置;

元素的宽度就是它包含的文字或图片的宽度,不可改变。



内联块状元素


内联块状元素(inline-block)就是同时具备内联元素、块状元素的特点,代码display:inline-block就是将元素设置为内联块状元素。(css2.1新增),<img>、<input>标签就是这种内联块状标签。

内联块状元素特点:

和其他元素都在一行上;

元素的高度、宽度、行高以及顶和底边距都可设置。


边框


盒子模型的边框就是围绕着内容及补白的线,这条线可以设置它的粗细、样式和颜色(边框三个属性)。

注意:

border-style(边框样式)常见样式有:

dashed(虚线)| dotted(点线)| solid(实线)。

border-color(边框颜色)中的颜色可设置为十六进制颜色,如:

border-color:#888;//前面的#号不要忘掉。

CSS布局模型


布局模型与盒模型都是 CSS 最基本、 最核心的概念。 但布局模型是建立在盒模型基础之上,又不同于我们常说的 CSS 布局样式或 CSS 布局模板。如果说布局模型是本,那么 CSS 布局模板就是末了,是外在的表现形式。 

CSS包含3种基本的布局模型,用英文概括为:Flow、Layer 和 Float。

在网页中,元素有三种布局模型:

流动模型(Flow)

浮动模型 (Float)

层模型(Layer)

流动模型


流动(Flow)是默认的网页布局模式。也就是说网页在默认状态下的 HTML 网页元素都是根据流动模型来分布网页内容的。

流动布局模型具有2个比较典型的特征:

块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%。实际上,块状元素都会以行的形式占据位置。

在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。





浮动模型


如果想让两个块状元素并排显示,可以通过设置元素浮动来实现。任何元素在默认情况下是不能浮动的,但可以用CSS定义为浮动,如div、p、table、img等元素都可以被定义为浮动。

注意:设置浮动的同时一定要先设置块状元素的宽度,且需要浮动的几个元素宽度加起来一定要小于容器元素的宽度。



层模型


如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作。CSS定义了一组定位(positioning)属性来支持层布局模型。

层模型有三种形式:

绝对定位(position: absolute)

相对定位(position: relative)

固定定位(position: fixed)

层模型--绝对定位(相对于父类)

如果想为元素设置层模型中的绝对定位,需要设置属性position为absolute,这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口。

如果想为元素设置层模型中的相对定位,需要设置position属性为relative(表示相对定位),它通过left、right、top、bottom属性确定元素在正常文档流中的偏移位置。相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像层一样浮动了起来),然后相对于以前的位置移动,移动的方向和幅度由left、right、top、bottom属性确定,偏移前的位置保留不动。

fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身。由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小,因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响。

我们既可以使用position:absolute实现被设置元素相对于浏览器(body)的定位,也可以通过relative与absolute组合相对于其它元素进行定位。

参照定位的元素必须是相对定位元素的前辈元素

参照定位的元素必须加入position:relative

定位元素加入position:absolute,便可以使用top、bottom、left、right来进行偏移定位了。

浮动造成的塌陷


使用浮动(float)时,如果父元素只包含浮动元素,那么它的高度就会塌缩为零。如果父元素不包含任何的可见背景,这个问题会被忽视,但是这是一个很重要的问题。

解决“塌陷”问题有以下三个方法:

在使用float元素的父元素结束前加一个高为0宽为0且有clear:both样式的div

在使用float元素的父元素添加overflow:hidden

使用after伪元素清除浮动

盒子模型

W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性




CSS中的单位px,em和rem

px(Pixel)是固定的像素点。像素px是相对于显示器屏幕分辨率而言的

em和rem都是相对长度单位。长度不是固定的,而是会根据当前对象内文本的字体大小发生变化,所以更适用于响应式布局。

em和rem的区别一句话概括:em相对于父元素,rem相对于根元素。


rem表示全部的长度都相对于根元素,而根元素是<html>元素。所以通常做法是给html元素设置一个字体大小,然后其他元素的长度单位就为rem,这样页面上使用了rem单位的元素会随着根元素的字体大小发生变化。


实现三角形



PPT END



视频笔记 START

鼠标在上面就显示角色翅膀,移走就消失翅膀的例子


视频笔记 END

适合休息时听的学习视频

https://www.bilibili.com/video/BV1cT4y1P7C3



active激活,伪类选择器

属性选择器

代码 START


例子和运用效果

/*写在外部文件中的样式就叫外部式样式*/

span {

color: green;

}

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<!-- 写在style标签中的样式就叫嵌入式样式 -->

<style type="text/css">

p {

font-size: 30px;

color: blue;

}

</style>

<link rel="stylesheet" href="css/my.css" />

</head>

<body>

<!-- 写在元素的style属性中的样式就叫内联式样式 -->

<div style="width: 100px;height: 100px;background-color: red;"></div>


<p>Hello world</p>


<span>测试文字</span>

</body>

</html>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

#ctx {

color: red;

}


.bg {


}


span {

color: orange;

}

/*通用选择器*/

*{}


/*子选择器:>表示选择ul标签的儿子中间的a标签

    空格表示选择ul标签所有的后代中的a标签*/

ul>a {

color: red;

}

/*群组选择器:,*/

div,input {

background-color: yellow;

}

#ctx,span {

font-size: 50px;

}

</style>

</head>

<body>

<ul>

<a href="#">扩展</a>

<li>语文</li>

<li>数学<a href="#">浏览</a></li>

<li>英语<div><h1><a href="#">PPP</a></h1></div></li>

</ul>

<div id="ctx">aaa</div>

<span class="bg">hehe</span>

<span class="bg">bbb</span>

<span class="bg">cccc</span>

<input type="text" class="bg" />

<span>lop</span>

</body>

</html>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

#inp:active {

border: 5px red solid;

}

#inp:focus {

font-size: 50px;

}

div:hover {

color: orange;

}

a:link {

color: deeppink;

text-decoration: line-through;

}

a:visited {

color: green;

}

li:first-child {

color: red;

}

</style>

</head>

<body>

<ul>

<li>HTML</li>

<li>CSS</li>

<li>JS</li>

</ul>

<ul>

<li>语文</li>

<li>数学</li>

<li>英语</li>

</ul>

<input id="inp" type="text" />

<div>Hello world</div>

<a href="#">浏览</a>

</body>

</html>


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

*{

    color: red;/*0,0,0,0*/

}

div {

color: yellow;/*0,0,0,1*/

}


div span {

color: green;/*0,0,0,2*/

}

span[id] {

color:orange;/*0,0,1,1*/

}

#sp1 {

color: pink;/*0,1,0,0*/

}

</style>

</head>

<body>

<!-- 1,0,0,0 -->

<div style="color: orange;">Hello world</div>


<div>Hello

<span>A</span>

<span id="sp1">G</span>

<span>K</span>

</div>

</body>

</html>



代码 END


CSS2超全知识点总结,CSS权重!important塌陷inherit 层模型px,em和rem【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律