CSS - 1

CSS - 1

  • 层叠样式表

层叠:一层一层

样式:名值对 (: 连接)

行内样式

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>行内样式</title>
    </head>
    <body>
        <h1 style="color: red; font-size: 60px;">welcome</h1>
    </body>
</html>

内部样式

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>行内样式</title>
        <style>
            h1{
                color: red; 
                font-size: 60px;
            }
            h2{
                color:green;
                font-size: 70px;
            }
            img{
                width: 200px;
            }
        </style>
    </head>
    <body>
        <h1>welcome</h1>
        <p>to</p>
    </body>
</html>
  • 样式可以复用,结构清晰
  • 没有实现结构和样式的完全分离
  • 多个 html 页面无法复用样式

外部样式

  • 样式可以复用,结构清晰
  • 实现了样式和结构的完全分离
  • 浏览器会缓存外部样式表,首次加载后访问其他页面时会更快
h1 {
    color: red; 
    font-size: 60px;
}
h2 {
    color: green;
    font-size: 70px;
}
img {
    width: 200px;
}

使用 link 链接 css 文件

rel 引入的文档和当前文档之间的关系

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>行内样式</title>
		<link rel="stylesheet" href="./xx.css">
    </head>
    <body>
        <h1>welcome</h1>
        <p>to</p>
    </body>
</html>

样式表优先级

不同样式表的优先级

行内样式 > 内部样式 = 外部样式 (后写的覆盖先写的)

同一个样式表的优先级

后写的覆盖先写的

CSS语法规范

选择器 {
    /* 注释 */
    声明;
    声明;
}

选择器 - 基本选择器

通配选择器

* {
    color: red;
}

元素选择器

h2 {
    color: chocolate;
}

类选择器

.speak {
    color: green;
}
.big {
    font-size: 60px;
}
<p class="speak big">hello</p>

class 命名规范:不使用纯数字和中文

id选择器

#turn-earthy {
    color: green;
}
<h2 id="turn-earthy"></h2>

id命名规范:不使用数字开头,区分大小写,不包含空格

选择器 - 复合选择器

交集选择器

.rich {
    color: gold;
}
.beauty {
    color: red;
}

p.beauty#wa {
    color: pink;
}
.rich.beauty{
    color: orange;
}
<p class="beauty" id="wa"></p>

并集选择器

.rich {
    color: gold;
}
.beauty {
    color: red;
}

.rich,
.beauty,
#wxr,
p {
    font-size: 40px;
}

后代选择器

ul li {
    
}
ol li a {
    /* 选择所有在有序列表 (<ol>) 中的列表项 (<li>) 内的超链接 (<a>) 元素 */
}

.subject #front-end {
    /* 选择所有类名为 subject 的元素内的, ID 为 front-end 的元素 */
}
.subject .front-end {
    
}

子代选择器

div>a {
    /* 选择 div 的直接子元素中的 a 元素 */
}
div>p>a {
    /* 选择所有位于 div 元素内部的 直接子元素 p 中的直接子元素 a */
}

.foot>a {
    
}

兄弟选择器

相邻兄弟选择器

/* 选择 紧跟在 div 元素后的第一个 p 元素 */
div+p {
    color: red;
}
<div></div>
<p></p> <!-- 只变这个 -->
<p></p>

注意:只往下找紧紧相邻的

通用兄弟选择器

/* 选择所有位于同一父元素下、位于某个 div 元素之后的所有 p 元素 */
div~p{
    color: red;
}

li+li {
    color: blue;
}
<div></div>
<p></p> <!-- 变 -->
<p></p> <!-- 变 -->

<ul>
    <li></li>
    <li></li> <!-- 变 -->
    <li></li> <!-- 变 -->
</ul>

注意:是往下找

选择器 - 属性选择器

[title] {
    
}
[title="wxr"] {
    
}
[title^="w"] { /* w开头的属性值 */
    
}
[title$="r"] { /* r结尾的属性值 */
    
}
[title*="r"] { /* 有r的属性值 */
    
}
<div title="wxr">
    wajiezhe
</div>

选择器 - 伪类选择器

很像类,但不是类,是类的特殊状态

动态伪类

a:link { /* 没有访问过的a */
    
}
a:visited {
    
}
/* 所有标签都有 */
a:hover {
    
}
a:active { /* 点了没松手的a */
    
}

link -> link hover -> link hover active

/* 获取焦点(只有表单类元素才有用) */
input:focus {
    
}

结构伪类

div>p:first-child {
    /* div的第一个儿子元素且是p */
}
div p:first-child {
    /* div的后代p,p的父亲无所谓,但一定要是第一儿子 */
}
p: first-child {
    /* p元素,p的父亲无所谓,但一定要是第一儿子 */
}

其它

p:last-child {}
p:nth-child(3) {
    /* 第三个儿子 */
}
p:nth-child(2n){
    /* 偶数 */
}
p:nth-child(2n+1){
    /* 奇数 */
}
p:nth-child(-n+5){
    /* 前五个 an+b的形式 */
}

/* ======= */
div>p:first-of-type {
    /* 第一个p (同类型第一个) */ 
}
div>p:last-of-type {}
div>p:nth-of-type(5) {}

/* ======= */
div>p:nth-last-of-type(3) {} /* 倒数第三个同类型的子元素 */

/* ======= */
span:only-child{}
span:only-of-type{
    /* 选中的是没有同类型兄弟的span元素 */
}

/* 选中html根元素 */
:root {
    background-color: gray;
}

/* 选中没有内容的div */
div:empty {
    width: 10px;
    height: 10px;
    background-color: red;
}

否定伪类

/* 选中div的儿子p元素,但要排除类名为fail的 */
dic>p:not(.fail) {
    color: red;
}

UI伪类

/* 选中勾选的 */
input:checked {
    
}
/* 选中被禁用的 */
input:disabled {
    
}

目标伪类

/* 选中锚点所指向的元素 */
div:target {
    
}

语言伪类

div:lang(en) {
    
}
:lang(zh-CN) {
    
}

选择器 - 伪元素选择器

很像元素,但不是元素,是元素中的一些特殊位置

div::first-letter{
    
}

div::first-line {
    
}
/* 选中div中被鼠标选择的文字 */
div::selection {
    background-color: green;
    color: orange;
}
/* 选中input中的提示文字 */
input::placeholder {
    color: skyblue;
}

/* 选中p元素最开始的位置,随后创建一个子元素 */
p::before {
    content:"$"
}
p::after {
    content:"after"
}

选择器优先级

通过不同的选择器,选中相同的元素,并且为相同的样式名设置不同的值时,就发生了样式的冲突

简单描述优先级:

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

内部样式和外部样式都是看权重

详细优先级:

权重计算

格式:(a,b,c)

a: ID选择器的个数

b: 类、伪类、属性 选择器的个数

c: 元素、伪元素 选择器的个数

.container span.solgan { /* (0,2,1) */
    
}
div>p>span:nth-child(1){ /* (0,1,3) */
    
}
/* 0=0; 2>1 */

有权重看权重,权重一样看顺序(后来居上)

.slogan {
    color: purple !important; /* 最大权重 */
}
posted @ 2024-11-26 17:03  wajiez  阅读(31)  评论(0)    收藏  举报