前端(2)——快速入门CSS

参考:

罗大富

CSS 参考手册 | 菜鸟教程

CSS 参考手册


1. CSS

CSS全名是层叠样式表,中文名层叠样式表。用于定义网页样式和布局的样式表语言。 通过 CSS,你可以指定页面中各个元素的颜色、字体、大小、间距、边框、背景等样式,从而实现更精确的页面 设计。


CSS通常由选择器、属性和属性值组成,多个规则可以组合在一起,以便同时应用多个样式

选择器{属性1: 属性值1;属性2: 属性值2;
}
  1. 选择器的声明中可以写无数条属性
  2. 声明的每一行属性,都需要以英文分号结尾
  3. 声明中的所有属性和值都是以键值对这种形式出现的

选择器就是选择要应用样式的HTML元素或者标签,它可以选择所有元素或特定元素或特定类或特定id。

示例:

/* p 标签选择器 */
p{color: bulue;font-size: 16px;
}

1.1 CSS导入方式

下面是三种常见的 CSS 导入方式:

  1. 内联样式(Inline styles):直接将样式放在标签中,标签有style属性,可以直接定义style格式
  2. 内部样式表(Internal Stylesheet):放在html标签头部
  3. 外部样式表(External Stylesheet):单独放在CSS文件中,允许多个网页使用同一个样式

三种导入方式的优先级:内联样式>内部样式表>外部样式表

1.1.1 内部样式表

内部样式表就是将CSS样式放在HTML文档的头部,head标签中

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS导入方式</title>
​<style>p{color: blue;font-size: 16px;}</style>
</head>
<body><p>应用CSS样式的文本</p>
</body>
</html>

对于所有的p标签,它的字体颜色均为蓝色,大小均为16px

1.1.2 内联样式

<h1 style="color: red">这是一级标题,内联样式</h1>

1.1.3 外部样式

须在头部添加link标签,href属性中是外部样式文件的路径地址:

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

其中,style.css文件内容如下:

h3{color:brown;
}

综合测试:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS导入方式</title><link rel="stylesheet" href="./style.css">
​<style>p{color: blue;font-size: 16px;}
​h2{color: rgb(0, 238, 255);}</style>
</head>
<body><p>应用CSS样式的文本</p><h1 style="color: red">这是一级标题,内联样式</h1><h2>这是二级标题,内部样式</h2><h3>这是三级标题,外部样式</h3>
</body>
</html>

1.2 选择器

选择器是 CSS中 的关键部分,它允许你针对特定元素或一组元素定义样式

  • 元素选择器
  • 类选择器
  • ID 选择器
  • 通用选择器
  • 子元素选择器
  • (包含选择器)后代选择器
  • 并集选择器(兄弟选择器)
  • 伪类选择器

我们上面对标签格式修改使用的是元素选择器。

1.2.1 类选择器

我们可以在style标签对中使用元素选择器对标签对进行格式修改,使用.

    <style> h2{color:aqua;}
​h3{background-color: yellowgreen;}</style>

但如果我们只想将h3标签对中class属性值为highlight的标签才修改,而其他的不修改,应该怎么做:

我们只需将h3改为.highlight,就能将对应clss属性值相同的标签修改为相同的格式:

    <style> .highlight{background-color: yellowgreen;}
​</style>
​<h3 class="highlight">类选择器示例</h3><h3">另一个类选择器示例</h3>

1.2.2 id选择器

我们也可以根据使用id选择器,对特定id的标签格式进行修改,使用#

    <style> #header{color: blueviolet;font-size: 33px;}</style><h4 id="header">id选择器示例</h4>

1.2.3 通用选择器

通用选择器就是选择所有元素,使用*

        *{font-family: 'KaiTi';}

这里将所有元素的字体设为楷体。

1.2.4 子元素选择器

选择位于父元素内部的子元素,就是一个大标签嵌套一个小标签,子元素选择器用于选择小标签。

    <div class="father"><p class="son">这是一个子元素选择器示例</p></div>

比如,div就是一个大标签,嵌套一个子标签p,子元素选择器是通过大标签和子标签的类名来定义的:

        /*子元素选择器*/.father > .son{color:rgb(255, 145, 0)}

这里,更换类名为father的父标签下类名为son的子标签的颜色

1.2.5 后代选择器

如果子标签还嵌套一个更小的子标签呢?比如:

<div class="father"><p class="son">这是一个子元素选择器示例</p><div><p class="grandson">这是一个后代选择器示例</p></div></div>

那么子元素选择器对类名为grandson的嵌套子标签就没作用了,因为它不是father的直系子标签

这时,必须使用后代选择器:

        /*后代选择器*/.father p{color:rgb(81, 126, 229);font-size: larger;}

该选择器会将类名为father下的所有子标签p的颜色都变为设定颜色。

第二行字体的颜色确实变了,但是第一行为什么不变,第一行也是类名为father下的子标签呀。

其实这涉及到优先级的问题,id>类>标签名,因为子元素选择器相当于类选择器(通过.类名构造),所以肯定比p标签选择器优先大,所以第一行不改变。

1.2.6 兄弟选择器

    /*相邻兄弟选择器*/h3 + p{background-color: red;}<p>普通的p标签</p><h3>相邻兄弟选择器示例</h3><p>另一个普通的p标签</p>

该选择器会将紧跟在h3后面第一个的p标签格式进行修改:

1.2.7 伪类选择器

用于选择HTML文档的元素的特定状态或位置,不仅仅是元素的属性。它以冒号开头,用于构造用户交互结构,比如,鼠标悬停在一个元素上,元素的格式或者状态可以被改变,这种方式可以通过伪类选择器实现。

/*伪类选择器*/
#element:hover{background-color: aquamarine;
}
​
<h3 id="element">伪类选择器示例</h3>

一开始伪类选择器文本无背景颜色,当鼠标放在上面之后,会有背景颜色生成:

也可以通过伪类选择器,选择父元素中的第一个元素,


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS选择器</title>
​<style> /* 元素选择器*/h2{color:aqua;}/* 类选择器*/.highlight{background-color: yellowgreen;}/* id选择器*/#header{color: blueviolet;font-size: 33px;}/* 通用选择器*/*{font-family: 'KaiTi';}/*子元素选择器*/.father > .son{color:rgb(255, 145, 0)}/*后代选择器*/.father p{color:rgb(81, 126, 229);font-size: larger;}/*相邻兄弟选择器*/h3 + p{background-color: red;}/*伪类选择器*/#element:hover{background-color: aquamarine;}/*选中第一个子元素 :first-child选择第n个子元素  :nth-child()链接的状态       :active*/</style>
</head>
<body><h1>不同类型的 CSS 选择器</h1><h2>元素选择器示例</h2>
​<h3 class="highlight">类选择器示例</h3><h3">另一个类选择器示例</h3>
​<h4 id="header">id选择器示例</h4>
​<div class="father"><p class="son">这是一个子元素选择器示例</p><div><p class="grandson">这是一个后代选择器示例</p></div></div>
​<p>普通的p标签</p><h3>相邻兄弟选择器示例</h3><p>另一个普通的p标签</p>
​<h3 id="element">伪类选择器示例</h3>
​
</body>
</html>

1.3 CSS常用属性

现在我们可以通过选择器指定元素并对其进行修改,现在可以学习属性,对选择的元素添加样式。CSS的属性有很多,可以参考 W3school和CSS 参考手册 | 菜鸟教程我们这里只做简单了解:

行内元素无法添加高度和宽度,只有块级别可以自定义:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS常用属性</title><style>.block{background-color: aqua;width: 150px;height: 150px;}.inline{color: red;}.inline-block{width: 300px;height: 200px;}</style>
​
</head>
<body><h1 style="font: bolder 50px 'KaiTi';">这是一个font复合属性</h1><p style="line-height: 40px;">这是一个长文本这是一个长文本这是一个长文本这是一个长文本这是一个长文本这是一个长文本这是一个长文本这是一个长文本这是一个长文本</p>
​<div class="block">块级元素</div><span class="inline">行级元素</span> <img src="./border.png" alt="" class="inline-block">
</body>
</html>

1.4 盒子模型

盒子模型是CSS中常用于布局的基本概念,描述了文档中每个元素都可以被看作一个矩形的盒子,这个盒子包含了内容content,高度height,宽度width,内边距padding,文本边框border,外边距margin,如下图所示

属性名说明
内容(Content)盒子包含的实际内容,比如文本、图片等
内边距(Padding)围绕在内容的内部,是内容与边框之间的空间。可以使用padding属性来设置。
边框(Border)围绕在内边距的夕部,是盒子的边界。可以使用`border、属性来设置。
外边距(Margin)围绕在边框的外部,是盒子与其他元素之间的空间,可以使用margin属性来设置
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS盒子模型</title><style>.border-demo{background-color: rgb(166, 222, 53);width: 300px;height: 200px;border-style: solid;border-width: 10px 5px 20px;border-color: blueviolet;}.demo{background-color: aqua;display: inline-block;border:5px solid rgb(11, 11, 11);padding: 50px;margin: 40px;}</style>
</head>
<body><div class="demo">这是一个demo</div> <br><br><div class="border-demo">这是边框demo</div>
</body>
</html>

我们可以修改盒子模型,来改变元素在页面中的位置和大小

1.5 浮动

在学习浮动之前,先了解传统的网页布局方式。

网页布局方式有以下五种:

  • 标准流(普通流、文档流):网页按照元素的书写顺序依次排列
  • 浮动
  • 定位
  • FlexboxGrid(自适应布局)

标准流是由块级元素和行内元素按照默认规的方式来排列,块级就是占一行,行内元素一行放好多个元素。


浮动:元素脱离文档流,根据开发者的意愿漂浮到网的任意方向。

浮动属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘,这样即可使得元素进行浮动。

语法:

选择器{float: left/right/none
}

注意:浮动是相对于父元素浮动,只会在父元素的内部移动

浮动的三大特性

  • 脱标:脱离标准流。
  • 一行显示,顶部对齐
  • 具备行内块元素特性
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS浮动</title><style>.father{background-color: aquamarine;height: 150px;border: 3px solid black;/* overflow: hidden; */}.left-son{width:100px;height: 100px;background-color: red;float: left;}
​.right-son{width:100px;height: 100px;background-color: rgb(209, 14, 141);float:right;}</style>
</head>
<body><div class="father"><div class="left-son">左浮动</div><div class="right-son">右浮动</div></div></body>
</html>

如果父元素坍塌,我们可以在父元素构造器中加overflow: hidden;来清除坍塌。

1.6 定位

定位布局可以精准定位,但缺乏灵活性

定位方式:

  • 相对定位:相对于元素在文档流中的正常位置进行定位。
  • 绝对定位:相对于其最近的已定位祖先元素进行定位,不占据文档流。
  • 固定定位:相对于浏览器窗口进行定位。不占据文档流,固定在屏幕上的位置,不随滚动而移动。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS定位</title><style>.box1{height: 350px;background-color: aquamarine;}.box-normal{height: 100px;width: 100px;background-color: rgb(83, 28, 232);}.box-relative{height: 100px;width: 100px;background-color: rgb(234, 20, 20);position: relative;left: 130px;top: 40px;}.box2{height: 350px;background-color: rgb(153, 219, 12);}.box-absolute{height: 100px;width: 100px;background-color: rgb(234, 20, 20);position: absolute;left: 130px;top: 40px;}.box3{height: 350px;background-color: rgb(153, 219, 12);}.box-fixed{height: 100px;width: 100px;background-color: rgb(11, 184, 124);position: fixed;left: 430px;top: 40px;}</style>
</head>
<body><h1>相对定位</h1><div class="box1"><div class="box-normal"></div><div class="box-relative"></div><div class="box-normal"></div></div><h1>绝对定位</h1><div class="box2"><div class="box-normal"></div><div class="box-absolute"></div><div class="box-normal"></div></div><h1>固定定位</h1><div class="box3"><div class="box-normal"></div><div class="box-fixed"></div><div class="box-normal"></div></div>
</body>
</html>

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

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

相关文章

yolo标签自动标注(使用python和yolo方法)

yolo代码自动标注 1.引言1.初阶“自动标注”&#xff0c;给每个图像都生成一个固定的标注文件&#xff0c;进而在labglimg中对矩形框进行微调&#xff0c;减少标注的工作量2.高阶自动标注&#xff0c;利用我们训练好的&#xff08;但是没有特别精准的&#xff09;yolo文件先对每…

jmeter常用配置元件介绍总结之线程组

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之线程组 1.线程组(用户)1.1线程组1.1.setUp线程组和tearDown线程组1.2.Open Model Thread Group(开放模型线程组)1.3.bzm - Arrivals Thread Group(到达线程组)1.4.jpgc - Ultimate Thread Group(终极线程组)1.5.jpgc - St…

spring gateway 动态路由

##yml配置 spring:application:name: public-gateway # cloud: # gateway: # routes: # - id: mybatis-plus-test # 路由的唯一标识 # uri: http://192.168.3.188:9898 # 目标服务的地址 # predicates: # - Path/test/** # 匹配…

NVT新能德科技入职测评SHL题库更新:数字推理+演绎推理高分答案、真题解析

新能德的入职Verify测评主要考察应聘者的逻辑推理能力、数学能力、数据分析能力以及处理信息的能力。根据搜索结果&#xff0c;测评通常包含以下几个部分&#xff1a; 1. **语言理解**&#xff1a;这部分包括阅读理解、逻辑填空和语句排序。要求应聘者在17分钟内完成30题&#…

学法减分交管12123模拟练习小程序源码前端和后端和搭建教程

交管推出个学法减分&#xff0c;每个驾驶员可以把被扣的6分&#xff0c;以看视频答题的形式学习回来&#xff0c;然后答题这个一共二十道题每道题60秒&#xff0c;有好多人不会&#xff0c;用咱们的小程序就可以模拟练习强化练习&#xff0c;还有拍照识别题目找到正确答案&…

element-plus <el-date-picker>日期选择器踩坑!!!!

我怎么一上午踩两个坑&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;大声bb&#xff09; 原来的vue2老项目是这样写的 <el-form-item label"时间" prop"time"><el-date-pickerv-model"addForm.time"typ…

JS的学习与使用

JS的学习与使用 一 什么是Javascript&#xff1f; Javascript是一门跨平台&#xff0c;面向对象的脚本语言&#xff0c;是用来控制网页行为的&#xff0c;它能使网页可以交互 java与Javascript是完全不同的语言&#xff0c;不论是概念还是设计&#xff0c;但是基础语法类似 E…

ubuntu20.04 解决Pytorch默认安装CPU版本的问题

ubuntu20.04 解决Pytorch默认安装CPU版本的问题 在使用Anaconda安装支持CUDA的PyTorch版本时&#xff0c;遇到只能安装CPU版本的PyTorch是一个常见问题。这通常由于Anaconda环境配置、镜像源设置不当或版本匹配问题导致。以下是详尽的解决方案和步骤&#xff0c;以确保能够正确…

【操作系统】守护进程

一、守护进程的概念 守护进程是一个在后台运行并且不受任何终端控制的进程 二、自己实现守护进程 1.预备知识 &#xff08;1&#xff09;/dev/null /dev/null是一个特殊的设备文件&#xff0c;往这个文件里写不进去任何数据&#xff0c;也读不出来任何数据 因此&#xff0…

【数据结构与算法】第12课—数据结构之归并排序

文章目录 1. 归并排序2. 计数排序3. 排序算法复杂度及稳定性分析在这里插入图片描述 1. 归并排序 分治法&#xff08;Divide and Conquer&#xff09;是一种重要的算法设计策略&#xff0c;其核心思想是将一个复杂的大问题分解为若干个小规模的子问题&#xff0c;递归地解决这些…

【安全通信】告别信息泄露:搭建你的开源视频聊天系统briefing

文章目录 前言1.关于briefing2.本地部署briefing3.使用briefing4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定briefing公网地址 前言 在这个信息爆炸的时代&#xff0c;视频聊天几乎成了我们日常沟通的标配。但你是否曾在视频会议中感到不安&#xff0c;担心自己的私…

pip install tkinter报错

pip install tkinter&#xff1a;ERROR: Could not find a version that satisfies the requirement tkinter 这是因为&#xff0c;安装python的时候没有安装tkinter选项&#xff0c;解决这个问题有下面两种方法 一、重新安装python 但是这个步骤有点麻烦 二、在python-3.1…

Python的面向对象day7

1、什么是面向对象 面向对象称为OO&#xff0c;他通过将数据和功能封装在一个被称为‘对象’的实体中&#xff0c;来组织和管理代码。面向对象变成&#xff08;OOP&#xff09;具有四个特性&#xff0c;封装、继承、多态、抽象 优点&#xff1a;模块化、安全性高、代码重用性…

自动化工具 Gulp

自动化工具 gulp 摘要 概念&#xff1a;gulp用于自动化开发流程。 理解&#xff1a;我们只需要编写任务&#xff0c;然后gulp帮我们执行 核心概念&#xff1a; 任务&#xff1a;通过定义不同的任务来组织你的构建流程。 管道&#xff1a;通过管道方式将文件从一个插件传递…

探索 Seata 分布式事务

Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的一款分布式事务解决方案,旨在帮助开发者解决微服务架构下的分布式事务问题。它提供了高效且易于使用的分布式事务管理能力,支持多种事务模式,确保数据的一致性和完整性。 以下是 Seata 的一…

【QT常用技术讲解】优化网络链接不上导致qt、qml界面卡顿的问题

前言 qt、qml项目经常会涉及访问MySQL数据库、网络服务器&#xff0c;并且界面打开时的初始化过程就会涉及到链接Mysql、网络服务器获取数据&#xff0c;如果网络不通&#xff0c;卡个几十秒&#xff0c;会让用户觉得非常的不爽&#xff0c;本文从技术调研的角度讲解解决此类问…

编程之路,从0开始:知识补充篇

Hello大家好&#xff0c;很高兴我们又见面了&#xff01; 给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 这一篇我们来补充一下在之前篇目没讲到的知识&#xff0c;并结合一些码友的私信提问和我在编程中遇到的问题&#xff0c;做一些易错点或易混点的讲解。 …

C语言中,让人又爱又恨的字符串编码

引言 在C语言的世界里&#xff0c;字符串编码是一个让人既爱又恨的话题。 所有的打印信息&#xff0c;都是以字符串输出的。但是&#xff0c;大家在编码的时候&#xff0c;经常会遇到一些情况&#xff0c;稍不注意&#xff0c;就会导致显示出乱码&#xff0c;到了客户那里&…

nginx openresty lua-resty-http 使用的一些问题记录

需求背景 需求是使用 nginx 做一个 https 服务的代理 nginx 收到 http 请求后&#xff0c;需要修改 body 中的某些参数值&#xff0c;然后将修改后的数据发送到目标服务器&#xff08;https&#xff09; 本来以为很简单的需求&#xff0c;结果中间出现了不少岔子&#xff0c;这…

vue2+ element ui 集成pdfjs-dist

目录 1. 下载Pdf.js1.1 下载1.2 修改配置1.2.1 将pdfjs-3.8.162-dist复制到项目中1.2.2 解决跨域问题1.2.3 将pdf.worker.js文件复制到public目录下1.2.4 安装 pdfjs-dist1.2.5 前端vue代码(示例) 3. 参考资料 1. 下载Pdf.js 1.1 下载 下载链接&#xff08;官方&#xff09;需…