如果想让CSS控制页面的样式,就需要加载CSS文件,这里有四种方式,行内方式、内嵌方式、链接方式、导入方式。
【行内方式】
行内样式是所有加载CSS方式种最为直接的一种,他直接对HTML的标记使用style属性,然后将CSS代码直接写在其中。
<p style=”background:#900 border:1px #333 dashed margin:5px”>CSS学习网</p>【内嵌方式】
内嵌方式是将CSS写在<head></head>之间,并且用<style></style>标记进行声明,如:
<html><head>
<title>小叶子</title>
<style type=”text/css”>
.red { color: #900 font-size:14px font-weight:bold}
</style>
</head>
<body>
<p class=”red”>小叶子</p>
</body>
</html>
【链接方式】
链接方式是使用频率最高的,也是最实用的方法。他将HTML页面本身与CSS样式分离为两个或者多个文件,视线了页面框架HTML代码与CSS代码的完全分离,是的前期制作和后期维护都十分方便,网站后台的技术人员与美工设计者也可以很好的分工合作。
而其对于同一个CSS文件可以连接到多个HTML文件中,甚至可以连接到整个网站的所有页面中,似的网站整体风格统一、协调,并且后期维护的工作量也大大减少。样式为:
<html><head>
<title>小叶子</title>
<link href=”style.css” type=”text/css” rel=”stylesheet”>
</head>
<body>
… …
</body>
</html>
===============================================
楼主的图片几乎都是使用绝对路径,这样不便迁移的,使用相对路径更好。
如果我们的页面上存在非常多的样式,譬如有我们开发页面的时候的自定义样式,也有引入的组件库样式。这时候样式将会非常混乱难以管理。
当我们想覆盖一些本身非我们书写的样式时候,往往不得不通过使用优先级权重更高的样式名,去覆盖那些样式。
同时,当样式优先级感到难以控制时,开发者习惯滥用 !important 去解决,这又循环导致了后续更混乱的样式结构。
基于让 CSS 得到更好的控制和管理的背景,CSS @layer 应运而生。
CSS Cascade Layers,也叫做CSS级联层,是Cascading and Inheritance Level5 规范中新增了一个新的 CSS 特性。
这样,我们就创建一个名为 utilities 的 @layer 级联层。
@layer规则可以通过三种方式其一来创建级联层。第一种方法如上方代码所示,它创建了一个块级的@规则,其中包含作用于该层内部的CSS规则。
一个级联层同样可以通过 @import 来创建,规则存在于被引入的样式表内:
你也可以创建带命名的级联层,但不指定任何样式。例如,单一的命名层:
或者,多个命名层也可以被同时定义。例如:
因此,在上面的例子中,如果 theme 层和 utilities 层中存在冲突的规则,那么 utilities 层中的将优先被应用。
即使 utilities 层中规则的 优先级低于 theme 层中的,该规则仍会被应用。一旦级联层顺序建立之后,优先级和出现顺序都会被忽略。
这将使创建CSS选择器变得更加简单,因为你不需要确保每一个选择器都有足够高的优先级来覆盖其他冲突的规则,你只需要确保它们出现在一个顺序更靠后的级联层中。
级联层允许嵌套,例如:
向 layout 层内部的 framework 层附加规则,只需用 . 连接这两层。
如果创建了一个级联层但并未指定名字,例如:
那么则称为创建了一个匿名层。除创建后无法向其添加规则外,该层和其他命名层功能一致。
1、使用@layer 块规则,并立即为其分配样式:
2、使用规则@layer 语句,没有指定任何样式:
3、将@import 与layer关键字或layer()函数一起使用
以上每一个都创建了一个名为 的级联层reset。
在下面的例子中,我们建立四个级联层:reset,base,theme,和utilities。
重复使用级联层名称时,样式将附加到现有级联层。级联层的顺序保持不变,因为只有第一次的出现已经确定顺序:
重新使用级联层名称时层顺序保持不变的使@layer 语法变得更加方便和严谨。使用它,可以预先建立图层顺序,然后将所有 CSS 附加到它:
按以往CSS级联来进行分析的话,form input(多层级)的优先级会大于input,但是由于级联层所起的作用,@layer theme的input会取胜。
级联层支持嵌套使用,如下:
在这个例子中有两个级联外层:
base
framework
该framework层本身也包含两层:
base
theme
如果要将样式附加到嵌套级联层,需要使用以下全名来引用它,
如果第一个@media (min-width: 30em)匹配(基于视口尺寸),则layout级联层层将在图层顺序中排在第一位。如果只有@media (prefers-color-scheme: dark)匹配,theme则将是第一层。
如果两者匹配,则图层顺序将为layout, theme。如果没有匹配,则不定义层。