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

news2024/11/15 19:32:37

目录

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.coloradmin.cn/o/2138141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring模块(六)spring event事件(3)广播与异步问题

发布事件和监听器之间默认是同步的&#xff1b;监听器则是广播形式。demo&#xff1a; event&#xff1a; package com.listener.demo.event;import com.listener.demo.dto.UserLogDTO; import org.springframework.context.ApplicationEvent;public class MyLogEvent extends…

C#命令行参数解析库System.CommandLine介绍

命令行参数 平常在日常的开发过程中&#xff0c;会经常用到命令行工具。如cmd下的各种命令。 以下为sc命令执行后的截图&#xff0c;可以看到&#xff0c;由于没有输入任何附带参数&#xff0c;所以程序并未执行任何操作&#xff0c;只是输出了描述和用法。 系统在创建一个新…

电脑怎么恢复原来的ip地址:全面指南与注意事项

在使用电脑连接网络时&#xff0c;有时可能会因为某些原因需要更改IP地址。然而&#xff0c;在某些情况下&#xff0c;我们可能希望将电脑的IP地址恢复到原来的设置。本文将详细介绍如何恢复电脑原来的IP地址&#xff0c;并提供一些注意事项。 一、了解IP地址的分配方式 在恢复…

Linux-LVM逻辑卷管理

一、背景 Linux运维过程中大家有没有想过生产环境服务器磁盘分区如果数据量越来越膨胀(这些都是重要数据&#xff0c;不能删除)&#xff0c;那么此时如何来应对这个问题呢? 既要不影响正在运行的程序&#xff0c;同时也不能中断关机等操作。 这么一想就很蛋疼了。假设你运行…

力扣-96.不同的二叉搜索树 题目详解

题目: 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 二叉搜索树介绍: 二叉搜索树是一个有序树&#xff1a; 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于它…

凸优化学习(3)——对偶方法、KKT条件、ADMM

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

【pyenv】pyenv安装版本超时的解决方案

目录 1、现象 2、分析现象 3、手动下载所需版本 4、存放到指定路径 5、重新安装 6、pip失败&#xff08;做个记录&#xff0c;未找到原因&#xff09; 7、方法二修改环境变量方法 7.1 设置环境变量 7.2 更新 7.3 安装即可 8、方法三修改XML文件 前言&#xff1a;研…

【Android】Room—数据库的基本操作

引言 在Android开发中&#xff0c;数据持久化是一个不可或缺的部分。随着应用的复杂度增加&#xff0c;选择合适的数据存储方式变得尤为重要。Room数据库作为Android Jetpack架构组件之一&#xff0c;提供了一种抽象层&#xff0c;使得开发者能够以更简洁、更安全的方式操作SQ…

PCIe进阶之TL:First/Last DW Byte Enables Rules Traffic Class Field

1 First/Last DW Byte Enables Rules & Attributes Field 1.1 First/Last DW Byte Enables Rules Byte Enable 包含在 Memory、I/O 和 Configuration Request 中。本文定义了相应的规则。Byte Enable 位于 header 的 byte 7 。对于 TH 字段值为 1 的 Memory Read Request…

【算法篇】哈希类(笔记)

目录 一、常见的三种哈希结构 二、LeetCode 练习 1. 有效的字母异位词 2. 两个数组的交集 3. 快乐数 4. 两数之和 5. 四数相加II 6. 赎金信 7. 三数之和 8. 四数之和 一、常见的三种哈希结构 当想使用哈希法来解决问题的时候&#xff0c;一般会选择如下三种数据…

java中的注解原理是什么?

Java中的注解&#xff08;Annotations&#xff09;是一种用于提供元数据的机制。它可以通过在代码中添加注解的形式&#xff0c;将一些额外的信息嵌入到代码里。注解本质上不会改变程序的实际逻辑行为&#xff0c;但是可以帮助开发工具、编译器、框架等获取这些元数据&#xff…

短信验证码倒计时 (直接复制即可使用) vue3

需求&#xff1a; 要实现一个获取验证码的需求&#xff0c;点击获取验证码60秒内不可以重复点击&#xff0c;方式有两种可以直接复制使用&#xff1b; 效果图 实现方案 方案1 (单个文件内使用比较推荐) <el-button :disabled"codeDisabled" click.stop"h…

SQL进阶的技巧:如何实现某列的累计乘积?

0 场景描述 在做数据处理的时候,尤其是复利累积的时候,有时候会有这样一场景,通过某种条件找到一列数据[X1,X2,X3...Xn],然后想要求y=X1X2X3...Xn。下面给出一个具体案例来详细解释这一问题,如下图所示,每个组的name值只有2个(2个A/B/C),当name=A or C时,price为value…

鸡蛋检测系统源码分享

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

python webapi上传文件

一、安装 pip install Flask 二、 编写上传文件接口webapi.py http://127.0.0.1:5000/upload from flask import Flask,request from werkzeug.utils import secure_filename import uuidapp Flask(__name__)app.route(/) def hello_world():return Hello, World!app.post(…

MySQl篇(基本介绍)(持续更新迭代)

目录 一、为什么要使用数据库 1. 以前存储数据的方式 2. 什么是数据库 3. 采用的数据库的好处 4. 如何理解数据库、数据库管理系统、SQL 5. 如何理解数据是有组织的存储 6. 现在的数据库 二、关系型数据系统 1. 什么是关系型数据库 2. 关系型数据库特点 3. 关系型数据…

p11 日志,元数据,进程的查看

直接运行docker run -d centos这个时候回启动容器&#xff0c;但是因为容器里面没有前台进程所以这个时候docker会把没用的进程给停止掉&#xff0c;可以看到docker ps命令没有查看到任何的正在运行的容器 但是如果说你使用 -it命令进入到了容器里面&#xff0c;这个他就不会…

并发编程 - 锁(属性修饰符 atomic)

引言 在多线程编程中&#xff0c;数据一致性是一个必须解决的问题。多个线程同时访问同一片共享数据时&#xff0c;极易发生竞争条件&#xff08;race conditions&#xff09;&#xff0c;导致数据的不一致性&#xff0c;甚至程序崩溃。为了解决这些问题&#xff0c;我们需要引…

Vulnhub:BlueSky

靶机下载地址 信息收集 主机发现 nmap扫描攻击机同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 靶机ip&#xff1a;192.168.31.171。 端口扫描 nmap 192.168.31.171 -A -p- -T4 开放端口22,8080。 目录扫描 访问8080端口&#xff0c;如图&#xff0c;是tomcat管理页面…

Vue3.0组合式API:使用reactive()、ref()创建响应式代理对象

1、reactive() 方法 reactive() 方法用于将定义的 JavaScript 对象转换为响应式对象。 使用方法&#xff1a; <script setup> //第一步&#xff1a;导入函数 import { reactive } from vue;//第二步&#xff1a;创建响应式对象 const data reactive(对象类型的数据);…