CSS学习笔记【1】

1 CSS的定义

  • CSS 是一种描述 HTML 文档样式的语言。
  • CSS 描述应该如何显示 HTML 元素。
  1. CSS 指的是层叠样式表* (Cascading Style Sheets)
  2. CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素
  3. CSS 节省了大量工作。它可以同时控制多张网页的布局
  4. 外部样式表存储在 CSS 文件中
  • *也称级联样式表。

2 CSS的引入方法

  1. 行内样式
  • 提示:行内样式失去了样式表的许多优点(通过将内容与呈现混合在一起)。请谨慎使用此方法。
	<p style="background-color: #F0FFFF;">123</p>
  • 注意语法:style=" ;"
  1. 头部样式/内部样式
	<style>
		body {
		  background-color: lightblue;
		}

		h1 {
		  color: white;
		  text-align: center;
		}

		p {
		  font-family: verdana;
		  font-size: 20px;
		}
	</ style>
  1. 外部样式
  • 外部 .css 文件不应包含任何 HTML 标签
  • 注意:请勿在属性值和单位之间添加空格(例如 margin-left: 20 px;)。正确的写法是:margin-left: 20px;
	<link rel="stylesheet" type="text/css" href="css1.css"/

2.1 各种引入方式的优先级

  • 【外部引入】与【内部样式】某个元素产生冲突时,按照代码顺序自上到下优先级升高,“谁距离html最近就听谁的”,但当元素未出现冲突时,样式可以叠加
  • 【行内样式】优先级最高
  • !important赋予最高优先级

2.2 四种基本CSS选择器

  • CSS 选择器用于“查找”(或选取)要设置样式的 HTML 元素。

2.2.1 标签选择器

  • 元素选择器根据元素名称来选择 HTML 元素。
	p {
	  text-align: center;
	  color: red;
	}

2.2.2 id选择器

  • id 选择器使用 HTML 元素的 id 属性来选择特定元素。
  • 元素的 id 在页面中是唯一的,因此 id 选择器用于选择一个唯一的元素!
  • 要选择具有特定 id 的元素,请写一个井号(#),后跟该元素的 id。
  • id不能以数字开始
  • 一个元素只允许选择一个id
	#para1 {
	  text-align: center;
	  color: red;
	}
	
	<p id="para1"></p>

2.2.3 类选择器

  • 类选择器选择有特定 class 属性的 HTML 元素。
  • 如需选择拥有特定 class 的元素,写一个句点(.)字符,后面跟类名
  • HTML 元素可以引用多个类
	<!DOCTYPE html>
	<html>
	<head>
	<style>
	.center {
	  text-align: center;
	  color: red;
	}
	</style>
	</head>
	<body>
	
	<h1 class="center">居中的红色标题</h1>
	<p class="center">居中的红色段落。</p> 
	
	</body>
	</html>
  • 还可以指定只有特定的 HTML 元素会受类的影响。
  • 在这个例子中,只有具有 class="center" 的

    元素会居中对齐:

	p.center {
	  text-align: center;
	  color: red;
	}
  • 类选择器也不能以数字开头

2.2.4 通配符选择器

  • 通用选择器(*)选择页面上的所有的 HTML 元素。
  • 下面的 CSS 规则会影响页面上的每个 HTML 元素:
* {
  text-align: center;
  color: blue;
}
  • 通配符选择器的用途:
  • 统一去除某些默认样式:比如无序列表的标引、超链接的下划线

四大选择器的优先级:id>类>标签>通配符

2.3 基本选择器的组合

2.3.1 分组选择器

  • 分组选择器选取所有具有相同样式定义的 HTML 元素。

下面的 CSS 代码(h1、h2 和 p 元素具有相同的样式定义):

	h1 {
	  text-align: center;
	  color: red;
	}

	h2 {
	  text-align: center;
	  color: red;
	}

	p {
	  text-align: center;
	  color: red;
	}
  • 最好对选择器进行分组,以最大程度地缩减代码。
  • 用逗号来分隔每个选择器。
	h1, h2, p {
	  text-align: center;
	  color: red;
	}
	

2.3.2 后代选择器

  • 后代选择器(descendant selector)又称为包含选择器

  • 后代选择器可以选择作为某元素后代的元素。

  • 根据上下文选择元素

  • 我们可以定义后代选择器来创建一些规则,使这些规则在某些文档结构中起作用,而在另外一些结构中不起作用。

  • 举例来说,如果您希望只对 h1 元素中的 em 元素应用样式,可以这样写:

	h1 em {color:red;}
  • 上面这个规则会把作为 h1 元素后代的 em 元素的文本变为 红色。其他 em 文本(如段落或块引用中的 em)则不会被这个规则选中:
	<h1>This is a <em>important</em> heading</h1>
	<p>This is a <em>important</em> paragraph.</p>
  • 当然,您也可以在 h1 中找到的每个 em 元素上放一个 class 属性
  • 但是显然,后代选择器的效率更高。

语法解释

  • 在后代选择器中,规则左边的选择器一端包括两个或多个用空格分隔的选择器。选择器之间的空格是一种结合符(combinator)。

  • 每个空格结合符可以解释为“... 在 ... 找到”、“... 作为 ... 的一部分”、“... 作为 ... 的后代”,但是要求必须从右向左读选择器。

  • 因此,h1 em 选择器可以解释为 “作为 h1 元素后代的任何 em 元素”。

  • 如果要从左向右读选择器,可以换成以下说法:“包含 em 的所有 h1 会把以下样式应用到该 em”。

具体应用

  • 后代选择器的功能极其强大。有了它,可以使 HTML 中不可能实现的任务成为可能。

-假设有一个文档,其中有一个边栏,还有一个主区。边栏的背景为蓝色,主区的背景为白色,这两个区都包含链接列表。
-不能把所有链接都设置为蓝色,因为这样一来边栏中的蓝色链接都无法看到。

  • 解决方法是使用后代选择器。在这种情况下,可以为包含边栏的 div 指定值为 sidebar 的 class 属性,
  • 并把主区的 class 属性值设置为 maincontent。然后编写以下样式:
div.sidebar {background:blue;}
div.maincontent {background:white;}
div.sidebar a:link {color:white;}
div.maincontent a:link {color:blue;}
  • 有关后代选择器有一个易被忽视的方面,即两个元素之间的层次间隔可以是无限的。

  • 例如,如果写作 ul em,这个语法就会选择从 ul 元素继承的所有 em 元素,而不论 em 的嵌套层次多深。

  • 因此,ul em 将会选择以下标记中的所有 em 元素:

	<ul>
	  <li>List item 1
		<ol>
		  <li>List item 1-1</li>
		  <li>List item 1-2</li>
		  <li>List item 1-3
			<ol>
			  <li>List item 1-3-1</li>
			  <li>List item <em>1-3-2</em></li>
			  <li>List item 1-3-3</li>
			</ol>
		  </li>
		  <li>List item 1-4</li>
		</ol>
	  </li>
	  <li>List item 2</li>
	  <li>List item 3</li>
	</ul>
	

2.3.3 子元素选择器

  • 如果不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,使用子元素选择器(Child selector)。

  • 例如,如果希望选择只作为 h1 元素子元素的 strong 元素,可以这样写:

h1 > strong {color:red;}

  • 这个规则会把第一个 h1 下面的两个 strong 元素变为红色,但是第二个 h1 中的 strong 不受影响:
	<h1>This is <strong>very</strong> <strong>very</strong> important.</h1>
	<h1>This is <em>really <strong>very</strong></em> important.</h1>

结合后代选择器和子选择器

table.company td > p

  • 上面的选择器会选择作为 td 元素子元素的所有 p 元素,这个 td 元素本身从 table 元素继承,该 table 元素有一个包含 company 的 class 属性。

3 选择器的权重值

选择器 权重值
!important >1000
内联选择器 =1000
id 100
类(伪类) 10
标签 1
通配符 0
  • 权重值可叠加,但不进位 (10个标签叠加,优先级也无法超过类)
posted @ 2021-06-18 14:08  Teddyonthebench  阅读(55)  评论(0编辑  收藏  举报