【H2O2|全栈】关于CSS(1)CSS基础(一)

目录

CSS基础知识

前言

准备工作

啥是CSS?

如何引用CSS?

选择器

通配符选择器

类名(class)选择器

id选择器

CSS解析顺序(优先级)

常见CSS标签(一)

字体属性

font-style

font-variant

font-weight

font-size

font-family

font

文本属性

color

text-align

text-indent

text-decoration

text-decoration-line

text-decoration-style

text-decoration-color

text-transform

direction

unicode-bidi

letter-spacing

word-spacing

line-height

vertical-align

white-space

text-shadow

预告和回顾

后话


CSS基础知识

前言

本系列博客将分享层叠样式表(CSS)有关的知识点。

作为本系列的第一篇,本文主要讲解CSS的基础概念和常见的使用方式。

不是专业的科普博主,主打一个分享知识,写的不好,多多包涵(哈哈)。

准备工作

软件:参考版本Visual Studio Code

插件(扩展包):Office Viewer(Markdown Editor)

浏览器版本:Chrome

系统版本: Win10/11/其他非Windows版本

*我的电脑是Win10的版本,仅供参考*

啥是CSS?

HTML中可以使用的样式比较少,很多效果并不能满足我们的要求。而且HTML元素的属性广泛分布于各种元素中,如果想修改某一(类)属性,就会非常麻烦。

在这种需求之下,从HTML4开始引入了层叠样式表(Cascading Style Sheets,CSS)的概念。

CSS在网页三层结构中隶属表现层。HTML的功能是提供基本的元素,而CSS则负责将这些元素的视觉效果展现给我们,即定义如何显示HTML元素

对于样式来说,多个样式可以层叠为一个。

CSS在HTML中通常以style标签属性的形式出现。

CSS代码为类似下面的格式:

xxx {}

实质上是选择器和对应的样式属性。 

如何引用CSS?

现在,我们有一个基本的HTML页面:

比如,我想让我的标题变成红色,有哪些方式?

第一种,可以直接在h1标签里添加style属性,代码如下:

<h1 style="color: red;">这里有一个标题</h1>

第二种,可以在head标签里添加style标签,代码如下:

<style>h1 {color: red;}</style>

第三种,还可以在同级文件夹(不同文件夹记得改相对路径)里新建一个层叠样式表文件,文件中的内容如下:

h1 {color: red;
}

然后利用link标签,使用下面的代码在头部(head)引入这个文件:

<link rel="stylesheet" href="style.css">

以上三种方式,都可以让页面在浏览器里显示出如下效果:

上述三种方式就是常见的CSS的引用方式了。一般我们把这三种引用方式分别称为:

  1. 行内/内联样式表
  2. 内部样式表
  3. 外部样式表

在未来的开发当中,由于需要定义的样式很多,所以一般会使用外部样式表的方式来定义样式。 

使用外部样式表可以真正意义上实现内容和表现分离,以分文件的形式实现web页面,方便进行代码维护

之后的CSS代码,除非特殊说明,我将使用引入外部样式表的形式来演示。

选择器

还是刚才的例子,只不过这次,我想将其中的第一段文字变为黄色。

*这里不推荐使用行内/内联样式哈,不符合分离的思想*

如果类比标题的颜色设置方式,效果应该是这样的:

显然,这不符合单独设置的需求。 

要想选择特定的某一个(些)元素设置样式,就需要使用到选择器

常见的选择器类型如下:

形式对应类型作用权重
* { }通配符选择器为所有元素设置默认样式0
xxx { }标签选择器通过标签名选择元素1
.xxx { }类名选择器通过类名(class属性)选择元素10
#xxx { }

id选择器

通过id名(id属性)选择元素100

通配符选择器

如果全局中的元素没有设置样式,则使用通配符选择器中的样式。

可以用于预设一些默认样式,比如字体、颜色等。

类名(class)选择器

以示例网页为例,使用类名选择器选择第一段内容——

HTML代码如下:

<p class="p1">这里是内容</p>

CSS代码如下:

.p1 {color: yellow;
}

网页中效果展示:

在使用类选择器时,我们也可以为同一个class属性分配多个类选择器,中间使用空格隔开。

就像一个人,可以分类为“成年人”,也可以分类为“学生”。

为第一段的内容添加第二个类选择器,将它的字体放大——

HTML代码如下:

<p class="p1 big">这里是内容</p>

CSS代码如下:

.big {font-size: large;
}

网页中效果展示:

id选择器

使用id选择器选择第二段内容,将它设置为蓝色——

HTML代码如下:

<p id="p2">这里是内容</p>

CSS代码如下:

#p2 {color: blue;
}

网页中效果展示:

*注意,id的值应当是唯一的,不允许有两个元素的id值相同*

CSS解析顺序(优先级)

CSS文件默认按照从上往下的顺序解析。

就拿标签选择器来说,我们现在对第三行内容在CSS中同时设置两种样式天蓝深蓝

.p3 {color: aqua;
}.p3-2 {color:blue;
}

那么,在网页中看到的效果如下:

这说明,对于相同级别的选择器来说,解析顺序依然是从上到下,下层的样式会覆盖上层的。 

但是,在有了几种选择器的概念之后,就可以引入下一个概念——优先级,来改变默认的解析顺序。

如何证明这种优先级的关系呢?比如,我们现在将上面HTML文件和CSS文件中的类名“p3”改成id名“p3”,其余不变——

HTML代码如下:

<p class="p3-2" id="p3">这里是内容</p>

CSS代码如下:

#p3 {color: aqua;
}.p3-2 {color:blue;
}

网页中看到的效果如下:

可以看到,即使id选择器的样式设置在class选择器的上方,后者也依旧无法覆盖前者。

一般的,我们使用权重来体现选择器的优先级,权重越大,优先级越高。

优先级由低到高排序为:

选择器权重
* { }0
xxx { }1
.xxx { }10
#xxx { }100
行内/内联样式1000
!important10000

其中!important放在具体要提到最高级的属性值之后,比如:

.p3-2 {color:blue !important;
}

行内/内联样式和!important通常只在代码量相当大,以至于几乎没有办法设置某个单独的属性值时使用,尽量还是使用前四种。

常见CSS标签(一)

字体属性

CSS的字体属性用于定义字体的样式,如大小、粗细、风格等。

font-style

该属性用于设置字体的样式,即显示的效果,常见的属性值及其对应的含义如下:

属性值含义
normal默认  标准样式
italic设置斜体
oblique强制设置斜体

对于有些字体库,其中不含某些生僻字的斜体效果,这时就需要使用oblique将这些无法设置斜体效果的字做倾斜处理。 

font-variant

该属性用于设置小型大写字母,常见的属性值和对应的含义如下:

属性值含义
normal正常字体
small-caps大写字母,但是比正常的大写字母要小

什么是小型大写字母呢? 我们利用行内样式来简易比较一下,输入下面HTML代码:

<p style="font-variant: small-caps">abcdefg</p><p>ABCDEFG</p>

运行的效果如下:

该属性常常用于一些英文网站。 

*对中文不生效*

font-weight

该属性用于设置字体粗细,常见的属性值及其对应的含义如下:

属性值含义
normal正常粗细
light
lighter更细
bold
bolder更粗

特别的,属性值也可以是数字,范围是100~900。

其中normal对应的数字是400,bold是700。  

font-size

该属性用于设置字体大小,常见的单位及其对应含义如下:

单位含义默认值绝对/相对
px像素16绝对单位
%相对于父元素的字体大小的百分比大小100相对单位
rem相对根元素的字体大小的倍数1相对单位
em相对父元素的字体大小的倍数1相对单位

对于%,如果值超过100,则会比父元素字体大。

rem,全称root element,这里是一个倍数,即根元素HTML的“字体大小”ד这个倍数”。em同理。

em在以后的移动端开发中会比较常用,可以了解一下。

font-family

该属性用于设置字体的系列,属性值是字体的名称,比如宋体、楷体等,常见的属性值和对应的含义如下:

属性值含义
'宋体'宋体字
kaiti楷体字
'黑体'黑体字

使用中文属性值时需要加上单引号。 

family-name可以设置一系列字体名称,并使用回退系统。该系统的作用是,当第一种字体不支持时,自动顺延到下一种字体,以此类推。

比如像下面这样,以逗号分隔属性值即可:

font-family: kaiti, '黑体', '宋体';
font

按上面的顺序(font-style -> font-variant -> font-weight -> font-size -> font-family),输入对应属性值直接设置上述所有的属性。这是一种简写的属性写法。 

比如,我们为之前的标题设置下面的CSS代码:

font: italic normal lighter 50px kaiti;

那么,原来的标题就会变成如下样式:

当然,该属性的值有一种简写的方式,即只写font-sizefont-family的值。至少要有这两个值,要么是五个值,要么是两个值。

文本属性

文本的属性比较多,这部分将介绍各个属性以及对应的值,或者复合属性一次性设置的值。

color

该属性用于设置文本颜色。常见的设置方式有:

属性值类型表现方式
颜色名颜色英文名red,green,blue等
十六进制#XXXXXX,每两位分别代表RGB通道中的一种颜色00~FF,FF代表255
rgb(x,x,x)每个数字代表RGB通道中的一种颜色0~255
rgb(x,x,x,n)前三位略,最后一位代表不透明度最后一位0~1(越大越透明)
text-align

该属性用于定义文本相对父元素的水平对齐方式。常见的属性和含义如下:

属性值含义
left靠左对齐
right靠右对齐
center居中对齐
justify长文本(段落)两端对齐

关于最后一点,如果对于比较短的文本来说,是看不出效果的。

因为两端对齐的条件是文本内容可以触及父元素的两侧边界,效果和Word文档中的分散对齐一致。

text-indent

该属性用于设置文本首行缩进,值为数字。常见的单位有:

单位含义绝对/相对
px像素绝对单位
%相对父元素的字体大小缩进百分比相对单位
rem相对根元素的字体大小缩进倍数相对单位
em相对父元素的字体大小缩进倍数相对单位
text-decoration

该属性用于设置文本修饰,它可以一次性设置三个属性,以空格分开。

下面按照顺序来简写下面三个属性:

text-decoration-line

第一个属性用于设置修饰的位置,它的值和对应的效果如下: 

属性值效果
none无效果
underline下划线效果
overline上划线效果
line-through表现为删除线
blink文字闪烁效果

其中文字闪烁效果我暂时没有看出来,有兴趣的朋友可以自行搜索。 

text-decoration-style

第二个属性用于设置修饰的样式,它的值和对应的效果如下:

属性值效果
solid默认   单实线
double双实线
dashed虚线
dotted点状线
wavy波浪线
text-decoration-color

第三个属性用于设置文字修饰效果的颜色,可以使用颜色名、十六进制、RGB和RGBa等方式。

前文已经叙述过,此处不再叙述。

text-transform

该属性用于进行文本转换,即大小写转换,一般用于处理英文(对中文无效)。

常见的属性值和对应功能如下:

属性值作用
none默认  不转换
uppercase全部转大写字母
lowercase全部转小写字母
capitalize首字母转大写
direction

该属性用于设置文本方向,常常和unicode-bidi配合使用。它的属性值和对应含义为:

属性值含义
ltr从左到右输出文字
rtl从右向左输出文字
unicode-bidi

指定返回的文本是否重写,它的属性值和对应的含义为:

属性值含义
bidi-override

创建了一个附加的嵌入层面;

是否重新排序取决于direction属性

letter-spacing

该属性用于设置字符间的间距。它的属性值和对应的含义为(部分前文中已经释义过的内容将省略解释):

属性值含义
normal默认值  无额外间距
px  rem  em

需要注意的是,对于中文而言,一个汉字就是一个字符;对英语而言,一个字母为一个字符。

word-spacing

该属性用于设置单词之间的间距,以空格作为分词标准。它的属性值和对应部分的含义与letter-spacing相同。

值得注意的是,由于中文的语法中不使用空格作为分词标准,所以这种方式设置空格对于整段的中文来说是无效的。

line-height

该属性用于设置文本行高,即上一行文本的底部到下一行文本底部的距离。

vertical-align

该属性用于设置元素的垂直对齐方式,注意不是给文字设置,这是给其他元素设置,用来与文字对齐。

它的属性值和对应的作用如下:

属性值作用
baseline默认值  放在父元素的基线上
top与行内最高元素的顶端对齐
middle与父元素的中部对齐
bottom与整行的底部对齐
sub/super对齐文本的下标/上标
text-top对齐父元素字体的顶端
text-bottom对齐父元素字体的底端
px将当前的元素升高的距离,为负数则为降低
%将当前的元素升高相对父元素的百分比距离,为负数则为降低
white-space

设置元素中空白(多空格、回车等)的处理方式。

它的属性值和对应的效果如下:

属性值效果
normal默认效果,忽略文字空白,手动输入换行被替换为一个空白
pre保留空白和手动输入的换行
nowrap不会换行,除非有<br />
pre-wrap保留空白和手动输入的换行,且边界自动换行
pre-line忽略文字空白,但是保留手动输入换行
text-shadow

这个属性是CSS3中更新的内容,用于设置文本阴影。

按顺序简写下面四个属性:

属性名值范围属性值位置(从左开始)含义
h-shadow右移为正,左移为负1水平阴影位置
v-shadow下移为正,上移为负2垂直阴影位置
blur0或正值3模糊范围(模糊距离,模糊度)
color4阴影颜色

预告和回顾

在下一期博客中,我将会开始写CSS的背景属性、表格和表单的样式。

对CSS文件感兴趣的朋友,我将在CSS入门第二期博客时创建CSS入门系列专栏,到时候可以在专栏中查看。

当然,也欢迎对全站项目感兴趣的朋友查看我的其他专栏。

后话

在全栈领域,博主也只不过是一个普通的萌新而已。本系列的博客主要是记录一下自己学习的一些经历,然后把自己领悟到的一些东西总结一下,分享给大家。

文章全篇的操作过程都是笔者亲自操作完成的,一些定义性的文字加入了笔者自己的很多理解在里面,所以仅供参考。如果有说的不对的地方,还请谅解。

==期待与你在下一期博客中再次相遇==

——勉强还有点氧气的【H2O2】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/425071.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server开启网络访问

目前工作中很少用到SQL Server了&#xff0c;最近需要测试几个表&#xff0c;需要搭建一个SQL Server数据库服务&#xff0c;这里做个总结吧。 安装这里就不做详细介绍了&#xff0c;本文只介绍如何开启SQL Server网络访问。 1、云服务器安全组设置 如果是搭建在云服务器上&a…

[数据集][目标检测]智慧交通铁路异物入侵检测数据集VOC+YOLO格式802张7类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;802 标注数量(xml文件个数)&#xff1a;802 标注数量(txt文件个数)&#xff1a;802 标注类别…

虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天(下)

上下文Conversation Array 要让GPT记住上下文&#xff0c;实现GPT4里的连续对话功能&#xff0c;需要把以下内容存入conversation array中去。 NPC background storyuser input promptNPC anwser open AI API的JsonObject JSONObject是一种数据结构&#xff0c;可以理解为JSO…

模仿抖音用户ID加密ID的算法MB4E,提高自己平台ID安全性

先看抖音的格式 对ID加密的格式 MB4EENgLILJPeQKhJht-rjcc6y0ECMk_RGTceg6JBAA 需求是 同一个ID 比如 413884936367560 每次获取得到的加密ID都是不同的&#xff0c;最终解密的ID都是413884936367560 注意这是一个加密后可解密原文的方式&#xff0c;不是单向加密 那么如下进行…

7-15 QQ帐户的申请与登陆(map)

输入样例: 5 L 1234567890 myQQqq.com N 1234567890 myQQqq.com N 1234567890 myQQqq.com L 1234567890 myQQqq L 1234567890 myQQqq.com输出样例: ERROR: Not Exist New: OK ERROR: Exist ERROR: Wrong PW Login: OK 代码&#xff1a; #include<iostream> #include&l…

[全网首发]怎么让国行版iPhone使用苹果Apple Intelligence

全文共分为两个部分&#xff1a;第一让苹果手机接入AI&#xff0c;第二是让苹果手机接入ChatGPT 4o功能。 一、国行版iPhone开通 Apple Intelligence教程 打破限制&#xff1a;让国行版苹果手机也能接入AI 此次发布会上&#xff0c;虽然国行 iPhone16 系列不支持 GPT-4o&…

连接数据库(以MySQL为例)

文章目录 前言一、数据库是什么&#xff1f;二、连接步骤 1.手动导入驱动包2.连接数据库总结 前言 面对应用程序的开发&#xff0c;普遍需要保存用户的海量数据。保存粮的库叫粮库&#xff0c;保存水的库叫水库&#xff0c;那么保存数据的库自然叫数据库。有了数据库&#xff0…

Qt自定义按键实现长,短按

本文介绍Qt自定义按键实现长&#xff0c;短按。 Qt触摸屏应用有时会涉及到触摸屏按钮长&#xff0c;短按操作&#xff0c;如长按实现关机操作&#xff0c;本文基于普通QPushButton为基类&#xff0c;自定义按键实现长&#xff0c;短按操作。 1.定义新类 这里以QPushButton为…

(c++)函数的分文件编写

1、在头文件文件夹中创建.h的头文件(如&#xff1a;_func.h)&#xff0c;用于存放函数的声明。注意头文件里面也要声明#include<iostream> using namespace std;因为等会你编写的函数要用这两个东西 2、在源文件里面创建一个.cpp文件来写函数的定义&#xff0c;也就是函…

炫酷HTML蜘蛛侠登录页面

全篇使用HTML、CSS、JavaScript&#xff0c;建议有过基础的进行阅读。 一、预览图 二、HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-w…

Linux下的简单TCP客户端和服务器

客户端 #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h>int main() {struct sockaddr_in* caddr(struct sockaddr_in*)malloc(sizeof(struct sockaddr…

HTML5超酷炫的水果蔬菜在线商城网站源码系列模板1

文章目录 1.设计来源1.1 主界面1.2 商品列表界面1.3 商品详情界面1.4 其他界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/142059238 HTML5超酷炫的水果蔬菜在线商城网…

鸿蒙开发之ArkTS 基础六 对象

什么是对象的呢&#xff1f;就是描述物体的特征和行为&#xff0c;是可以存储多种数据的容器 对象的定义和使用 let 对象名称: 对象结构类型 值 通过interface 关键字来约定对象结构类型,语法结构如下&#xff1a; interface 对象名{ 属性1&#xff1a;类型 属性2&#…

yjs06——numpy的介绍与优势(1)

1.numpy是什么&#xff1f; numpy是python的一个科学计算库&#xff0c;用于快速处理 任意维度的数据&#xff1b; numpy的存储单元/基本数据类型是 ndarray&#xff08;多维数组&#xff09; 2.多维数组的建立&#xff1a; import numpy as np np.array([ [1,2,3], [4,5,6…

STL值list

list容器 头文件&#xff1a;#include<list> - list是一个双向链表容器&#xff0c;可高效地进行插入删除元素 - list不可以随机存取元素&#xff0c;所以不支持at.(pos)函数与[]操作符 注&#xff1a;list使用迭代器访问数据时可以一步一步走自增自减&#xff08;即…

【webpack4系列】webpack进阶用法(三)

文章目录 自动清理构建目录产物PostCSS插件autoprefixer自动补齐CSS3前缀移动端CSS px自动转换成rem静态资源内联多页面应用打包通用方案使用sourcemap提取页面公共资源基础库分离利⽤ SplitChunksPlugin 进⾏公共脚本分离利⽤ SplitChunksPlugin 分离基础包利⽤ SplitChunksPl…

食品包装识别系统源码分享

食品包装识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

(1)LT9211学习笔记

文章目录 前言一、MIPI接口是什么&#xff1f;二、LT9211框图及应用1&#xff0c;作为MIPI发射机&#xff1a;2&#xff0c;作为双端口Lvds发射机3&#xff0c;作为TTL输出4&#xff0c;作为MIPI接收机&#xff1a;5&#xff0c;作为双端口Lvds接收机6&#xff0c;作为TTL输入 …

林草湿地址、导出echart为word

2.导出 // 导出exportDoc () {this.loading truelet arrRefs [this.$refs.endChart, this.$refs.processChart, this.$refs.officeEndChart]setTimeout(() > {Promise.all(arrRefs.map((canvasDom) > {return this.html2canvasHandle(canvasDom)})).then(res > {let…

组合数(模板)

1.杨辉三角求组合数&#xff0c;最高只能求几千内的组合数。 #include<bits/stdc.h> using namespace std; #define int long long int C[1005][1005]; signed main() {//求 1000 以内的组合数 for(int i0;i<1000;i){C[i][0]C[i][i]1;for(int j1;j<i;j){C[i][j]C[…