【前端】CSS

【前端】CSS

目录

一、CSS基本语法

css:层叠样式表 (Cascading Style Sheets)。CSS 能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果。能够做到页面的样式和结构分离。

1.1 语法

选择器 + {一条/N条声明}

选择器决定针对谁修改。 (找谁)声明决定修改啥。(干啥)声明的属性是键值对。

格式:

标签名{ CSS语句 } 

注意事项:

CSS 要写到 style 标签中(也有其他写法)
style 标签可以放到页面任意位置. 一般放到 head 标签内.
CSS 使用 /* */ 作为注释. (使用 ctrl + / 快速切换)。

1.2 CSS引入方式

1.2.1 内部样式表:

写在 style 标签中。 嵌入到 html 内部。一般是放到 head 标签中。

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>p{color: red;}</style></head><body><p>hello</p></body></html>

优缺点:

优点: 这样做能够让样式和页面结构分离。
缺点: 分离的还不够彻底。尤其是 css 内容多的时候。

1.2.2 行内样式表

通过 style 属性, 来指定某个标签的样式。
只适合于写简单样式。只针对某个标签生效。

<pstyle="color:green">hello</p>

优缺点:

缺点: 不能写太复杂的样式.
优点:这种写法优先级较高, 会覆盖其他的样式.

1.2.3 外部样式

这种最常用。
创建一个 css 文件。
使用 link 标签引入 css。

<linkrel="stylesheet"href="[CSS文件路径]">

例子:

HTML文件: <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><linkrel="stylesheet"href="./stytle.css"></head><body><div>hello</div></body></html> CSS文件: div { color: red; } 

优缺点:

优点: 样式和结构彻底分离了。
缺点: 受到浏览器缓存影响, 修改之后 不一定 立刻生效。

1.3 代码书写格式

样式格式:

p { color: red; font-size: 30px; } 
  1. 样式大小写:采用小写字母。
  2. 空格规范 :
    冒号后面带空格;
    选择器和 { 之间也有一个空格。

二、选择器

选择器的种类:

  • 基础选择器: 单个选择器构成的
    • 标签选择器
    • 类选择器
    • id 选择器
    • 通配符选择器
  • 复合选择器: 把多种基础选择器综合运用起来.
    • 后代选择器
    • 子选择器
    • 并集选择器
    • 伪类选择器

2.1 基础选择器

2.1.1 标签选择器

标签选择器:

  • 能快速为同一类型的标签都选择出来.
  • 但是不能差异化选择
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>p{color: brown;}div{color: green;}</style></head><body><p>p1</p><p>p2</p><p>p3</p><p>p4</p><p>p5</p><div>hello1</div><div>hello2</div><div>hello3</div><div>hello4</div></body></html>

2.1.2 类选择器

类选择器

  • 差异化表示不同的标签
  • 可以让多个标签的都使用同一个标签.

语法细节:

  • 类名用 . 开头的
  • 下方的标签使用 class 属性来调用.
  • 一个类可以被多个标签使用, 一个标签也能使用多个类(多个类名要使用空格分割, 这种做法可以让代码更好复用)
  • 如果是长的类名, 可以使用 - 分割.
  • 不要使用纯数字, 或者中文, 以及标签名来命名类名。
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>.brown{color: brown;}div{color: green;}</style></head><body><pclass='brown'>p1</p><pclass='brown'>p2</p><p>p3</p><pclass='brown'>p4</p><p>p5</p><div>hello1</div><divclass='brown'>hello2</div><divclass='brown'>hello3</div><div>hello4</div></body></html>

2.1.3 id 选择器

id 选择器:
和类选择器类似.

  • CSS 中使用 # 开头表示 id 选择器
  • id 选择器的值和 html 中某个元素的 id 值相同
  • html 的元素 id 不必带 #
  • id 是唯一的, 不能被多个标签使用 (是和 类选择器 最大的区别)
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>.brown{color: brown;}div{color: green;}#red{color: red;}</style></head><body><pid='red'>p1</p><pclass='brown'>p2</p><p>p3</p><pclass='brown'>p4</p><p>p5</p><div>hello1</div><divid='red'>hello2</div><divclass='brown'>hello3</div><div>hello4</div></body></html>

2.1.4 通配符选择器

通配符选择器:
使用 * 的定义, 选取所有的标签.

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{color: red;}</style></head><body><pid='red'>p1</p><pclass='brown'>p2</p><p>p3</p><pclass='brown'>p4</p><p>p5</p><div>hello1</div><divid='red'>hello2</div><divclass='brown'>hello3</div><div>hello4</div></body></html>

2.2 复合选择器

2.2.1 后代选择器

后代选择器 :
又叫包含选择器. 选择某个父元素中的某个子元素.

格式:

元素1 元素2 {样式声明}
  • 元素 1 和 元素 2 要使用空格分割
  • 元素 1 是父级, 元素 2 是子级, 只选元素 2 , 不影响元素 1
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>ol li{color: red;}</style></head><body><ul><li>aaa</li><li>bbb</li><li>ccc</li></ul><ol><li>ddd</li><li>eee</li><li>fff</li></ol></body></html>

2.2.2 子选择器

子选择器:
与后代选择器类似,但是只能选择子标签。

格式:

元素1>元素2 {样式声明}
  • 使用大于号分割
  • 只选亲儿子,不选孙子元素
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>.cat>a{color: red;}</style></head><body><divclass="cat"><ahref="#">小猫</a><ul><li><ahref="#">小狗</a></li><li><ahref="#">小狗</a></li></ul></div></body></html>

2.2.3 并集选择器

用于选择多组标签. (集体声明)

格式:

元素1, 元素2 { 样式声明 }
  • 通过 逗号 分割等多个元素.
  • 表示同时选中元素 1 和 元素 2
  • 任何基础选择器都可以使用并集选择器.
  • 并集选择器建议竖着写. 每个选择器占一行. (最后一个选择器不能加逗号)

2.3.4 伪类选择器

  1. 链接伪类选择器
a:link 选择未被访问过的链接
a:visited 选择已经被访问过的链接
a:hover 选择鼠标指针悬停上的链接
a:active 选择活动链接(鼠标按下了但是未弹起)
  1. :force 伪类选择器
选取获取焦点的 input 表单元素.

三、常用元素属性

参考文档:文档

3.1 字体属性

3.1.1 设置字体 font-family

字体名称可以用中文, 但是不建议.多个字体之间使用逗号分隔. (从左到右查找字体, 如果都找不到, 会使用默认字体. )如果字体名有空格, 使用引号包裹.建议使用常见字体, 否则兼容性不好.
body { font-family: '微软雅黑'; font-family: 'Microsoft YaHei'; } 

3.1.2 字体大小 font-size

不同的浏览器默认字号不一样, 最好给一个明确值. (chrome 默认是 16px)可以给 body 标签使用 font-size要注意单位 px 不要忘记.标题标签需要单独指定大小
p { font-size: 20px; } 

3.1.3 字体粗细 font-weight

可以使用数字表示粗细.700 == bold, 400 是不变粗, == normal取值范围是 100 -> 900
p { font-weight: bold; font-weight: 700; } 

3.1.4 文字样式 font-style

/* 设置倾斜 */ font-style: italic; /* 取消倾斜 */ font-style: normal; 

3.2 文本属性

3.2.1 文本颜色 color

RGB:我们使用 R (red), G (green), B (blue) 的方式表示颜色(色光三原色). 三种颜色按照不同的比例搭配, 就能混合出各种五彩斑斓的效果.

计算机中针对 R, G, B 三个分量, 分别使用一个字节表示(8个比特位, 表示的范围是 0-255, 十六进制表示为 00-FF).数值越大, 表示该分量的颜色就越浓. 255, 255, 255 就表示白色; 0, 0, 0 就表示黑色.

color 属性值的写法:

预定义的颜色值(直接是单词)[最常用]十六进制形式RGB 方式

3.2.2 文本对齐 text-align

center: 居中对齐left: 左对齐right: 右对齐

3.2.3 文本装饰 text-decoration

underline 下划线. [常用]none 啥都没有. 可以给 a 标签去掉下划线.overline 上划线. [不常用]line-through 删除线 [不常用]

3.2.4 文本缩进 text-indent

单位可以使用 px 或者 em.使用 em 作为单位更好. 1 个 em 就是当前元素的文字大小.缩进可以是负的, 表示往左缩进. (会导致文字就冒出去了)

3.2.5 行高 line-height

行高: 指的是上下文本行之间的基线距离. 行高 = 上边距 + 下边距 + 字体大小

四、元素的显示模式

4.1 块级元素

h1 - h6 p d iv ul ol li 

特点:

独占一行高度, 宽度, 内外边距, 行高都可以控制.宽度默认是父级元素宽度的 100% (和父元素一样宽)是一个容器(盒子), 里面可以放行内和块级元素.

4.2 行内元素/内联元素

a strong b em i del s ins u span 

特点:

不独占一行, 一行可以显示多个设置高度, 宽度, 行高无效左右外边距有效(上下无效). 内边距有效.默认宽度就是本身的内容行内元素只能容纳文本和其他行内元素, 不能放块级元素

Read more

Flutter 组件 injectfy 适配鸿蒙 HarmonyOS 实战:逻辑注入矩阵,构建跨模块解耦与动态依赖管理架构

Flutter 组件 injectfy 适配鸿蒙 HarmonyOS 实战:逻辑注入矩阵,构建跨模块解耦与动态依赖管理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 injectfy 适配鸿蒙 HarmonyOS 实战:逻辑注入矩阵,构建跨模块解耦与动态依赖管理架构 前言 在鸿蒙(OpenHarmony)生态迈向超大规模应用拆分、涉及数百个独立 Feature 模块与底层硬件服务深度解耦的背景下,如何实现灵活的“控制反转(IoC)”与“依赖注入(DI)”,已成为决定应用架构可维护性的“生命线”。在鸿蒙设备这类强调模块化挂载与 HAP/HSP 动态分发的环境下,如果应用内部的组件实例依然采用强耦合的硬编码初始化,由于由于各模块间复杂的循环依赖,极易由于由于初始化顺序错乱导致应用在流转拉起时的崩溃。 我们需要一种能够实现零成本解耦、支持单例(Singleton)与工厂(Factory)模式且具备极简注册语义的依赖注入框架。 injectfy 为 Flutter 开发者引入了轻量级的对象容器管理方案。它不仅支持对底层 Service 的全局托管,更提供了灵活的注入探测机制。在适配到鸿蒙

By Ne0inhk
【Linux:文件 + 进程】进程间通信进阶(2)

【Linux:文件 + 进程】进程间通信进阶(2)

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 文章目录 * 7 ~> 消息队列 * 7.1 消息队列的概念 * 7.2 消息队列的原理 * 7.3 消息队列的接口 * 7.4 消息队列的一些命令 * 8 ~> 信号量 * 8.1 概念补充 * 8.1.1 共享资源和临界资源 * 8.1.2 互斥和同步

By Ne0inhk
《 Linux 修炼全景指南: 十五 》从 open 到重定向:一文吃透 Linux 文件 I/O(新手必读)

《 Linux 修炼全景指南: 十五 》从 open 到重定向:一文吃透 Linux 文件 I/O(新手必读)

摘要 本文系统梳理了 Linux 中文件 I/O 的核心知识体系,围绕“文件即抽象”的设计思想,从系统级 I/O 接口入手,深入讲解 open / read / write / close 的工作机制,重点剖析 O_RDONLY、O_CREAT 等 flags 的真实语义,以及文件描述符在内核中的关键角色。在此基础上,对比分析了 C 语言 FILE* 接口与 C++ iostream 的实现原理与使用场景,并深入解析文件偏移量与重定向机制的本质。通过完整实战示例,帮助读者建立对 Linux I/O 清晰、统一、可工程化的理解,为后续进程、网络与系统编程打下坚实基础。 前言:

By Ne0inhk
Flutter 组件 heart 适配鸿蒙 HarmonyOS 实战:分布式心跳监控,构建全场景保活检测与链路哨兵架构

Flutter 组件 heart 适配鸿蒙 HarmonyOS 实战:分布式心跳监控,构建全场景保活检测与链路哨兵架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 heart 适配鸿蒙 HarmonyOS 实战:分布式心跳监控,构建全场景保活检测与链路哨兵架构 前言 在鸿蒙(OpenHarmony)生态迈向万物智联、涉及海量传感器节点通信、分布式长连接保活及实时状态同步的背景下,如何确保终端设备在弱网、休眠或异常断电场景下仍能被母座感知,已成为决定系统可用性的“生命信标”。在鸿蒙设备这类强调分布式软总线协同与严苛电源管理的环境下,如果应用依然依赖基础的 HTTP 定时轮询执行状态探测,由于由于 CPU 频繁唤醒带来的功耗负担及无状态协议的连接开销,极易由于由于心跳风暴导致设备续航崩穿或大规模误判掉线。 我们需要一种能够实现毫秒级超时检测、支持异步回调闭环且具备高性能状态机控制的心跳监控方案。 heart 为 Flutter 开发者引入了轻量级且工业标准的“心搏”治理范式。它通过对 Ping-Pong 交互的时序解构,将复杂的超时重试与状态翻转逻辑封装为声明式的配置。在适配到鸿蒙 HarmonyO

By Ne0inhk