CSS的基础知识讲解

news2024/11/24 9:00:05

文章目录

  • 一.什么是CSS
  • 二. 选择器
    • 2.1 标签选择器
    • 2.2 类名选择器
    • 2.3 ID选择器
    • 2.4 属性选择器
    • 2.5 子选择器
    • 2.6 后代选择器
    • 2.7 伪类选择器
  • 三.盒子模型
    • 3.1 什么是盒子模型
    • 3.2 盒子的组成部分
    • 边框
    • 内边距
    • 外边距
  • 四.弹性盒子布局
    • 4.1 什么是块级元素和行内元素
      • 块级元素
      • 行内元素
      • 行内元素和块级元素的区别
      • 改变显示模式
    • 4.2 flex布局初步概念
      • justify-content
      • align-items


一.什么是CSS

在这里插入图片描述

一般来说我们CSS就是我们对浏览器的第二个操作,就是给网页穿衣服.让网页变得更好看.
在这里插入图片描述

二. 选择器

在CSS中,选择器用于选择HTML文档中的元素,从而将样式应用于这些元素。选择器通常基于元素的标签名、类名、ID、属性值或父子关系等特征来进行匹配。

2.1 标签选择器

标签选择器:选择某个 HTML 标签,并将样式应用于所有这样的元素。例如,以下代码将应用于文档中的所有段落元素:

p {
  color: red;
}

2.2 类名选择器

类选择器:选择具有指定类的元素,并将样式应用于这些元素。例如,以下代码将应用于所有具有 “highlight” 类的元素:

.highlight {
  background-color: yellow;
}

2.3 ID选择器

ID 选择器:选择具有指定 ID 的元素,并将样式应用于该元素。例如,以下代码将应用于具有 “header” ID 的元素

#header {
  font-size: 24px;
}

2.4 属性选择器

属性选择器:选择具有指定属性的元素,并将样式应用于这些元素。例如,以下代码将应用于具有 “target” 属性的所有链接元素:

a[target="_blank"] {
  color: blue;
}

2.5 子选择器

子选择器:选择作为某个元素子元素的元素,并将样式应用于这些元素。例如,以下代码将应用于所有作为 div 元素子元素的 p 元素:

div > p {
  font-weight: bold;
}

2.6 后代选择器

后代选择器:选择某个元素的后代元素,并将样式应用于这些元素。例如,以下代码将应用于所有作为 div 元素后代的 p 元素:

div p {
  color: blue;
}

2.7 伪类选择器

伪类选择器:选择某个元素的特定状态,并将样式应用于该状态的元素。例如,以下代码将应用于所有被鼠标悬停的链接元素:

a:hover {
  color: red;
}

综合示例

<div id="container">
  <h1 class="title">Welcome to my website</h1>
  <p class="description">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</div>

css选择器示例

/* 选择所有元素,并设置默认字体大小和颜色 */
* {
  font-size: 16px;
  color: #333;
}

/* 选择 ID 为 container 的元素,并设置背景颜色和内边距 */
#container {
  background-color: #f5f5f5;
  padding: 20px;
}

/* 选择类名为 title 的 h1 元素,并设置字体加粗和颜色 */
.title {
  font-weight: bold;
  color: navy;
}

/* 选择类名为 description 的 p 元素,并设置字体样式 */
.description {
  font-style: italic;
}

/* 选择 ul 元素中的所有 li 元素,并设置列表样式和间距 */
ul li {
  list-style: none;
  margin-bottom: 10px;
}

/* 选择 ul 元素中的所有 a 元素并设置文本装饰和颜色 */
ul a {
  text-decoration: none;
  color: #008080;
}

/* 选择 ul 元素中的第一个 li 元素之后的所有 li 元素,并设置颜色 */
ul li + li {
  color: #999;
}

/* 选择鼠标悬停在 a 元素上的状态,并设置背景颜色 */
a:hover {
  background-color: #eee;
}

三.盒子模型

3.1 什么是盒子模型

先来看一段文字:
盒子模型是 CSS 中用于布局和渲染 HTML 元素的基本概念。
在这里插入图片描述

3.2 盒子的组成部分

内容区域(content)、内边距(padding)、边框(border)和外边距(margin)

边框

基础属性
粗细: border-width
样式: border-style, 默认没边框. solid 实线边框 dashed 虚线边框 dotted 点线边框
颜色: border-color

<!DOCTYPE html>
<html>
<head>
<style> 
.box {
  width: 200px; /* 盒子宽度 */
  height: 100px; /* 盒子高度 */

  border-left: 1px solid black; /* 边框 */
  border-right: 1px dashed red;
  border-top: 1px dotted blue;
  border-bottom: 1px  pink;


}
</style>
</head>
<body>
    <div class="box">
        <p>Hello, world!</p>
      </div>


</body>
</html>

边框效果:

在这里插入图片描述

内边距

基础写法
默认内容是顶着边框来放置的. 用 padding 来控制这个距离
可以给四个方向都加上边距

padding-top
padding-bottom
padding-left
padding-right

<!DOCTYPE html>
<html>
<head>
<style> 
.box {
  width: 200px; /* 盒子宽度 */
  height: 100px; /* 盒子高度 */
  padding: 20px; /* 内边距 */
  border: 1px solid black; /* 边框 */
  margin: 10px; /* 外边距 */
}
</style>
</head>
<body>
    <div class="box">
        <p>Hello, world!</p>
      </div>


</body>
</html>



没设内边距之前
在这里插入图片描述
设置了内边距之后
在这里插入图片描述

此时可以看到带有了一个绿色的内边距.
复合写法

padding: 5px; 表示四个方向都是 5px
padding: 5px 10px; 表示上下内边距 5px, 左右内边距为 10px
padding: 5px 10px 20px; 表示上边距 5px, 左右内边距为 10px, 下内边距为 20px
padding: 5px 10px 20px 30px; 表示 上5px,10px,20px,30px (顺时针)

外边距

控制盒子和盒子之间的距离.
属性:
可以给四个方向都加上边距
margin-top
margin-bottom
margin-left
margin-right

在这里插入代码片

设置外边距之前:
在这里插入图片描述

设置之后
在这里插入图片描述
复合写法
规则同 padding

margin: 10px; // 四个方向都设置
margin: 10px 20px; // 上下为 10, 左右 20
margin: 10px 20px 30px; // 上 10, 左右 20, 下 30
margin: 10px 20px 30px 40px; // 上 10, 右 20, 下 30, 左 40

四.弹性盒子布局

4.1 什么是块级元素和行内元素

块级元素(Block-level element)通常被用来构建页面的结构,它们会在页面上创建一个矩形的块,独占一行或多行空间。块级元素可以包含其他块级元素和行内元素,可以设置宽度、高度、内外边距、背景色、边框等样式属性。常见的块级元素包括 <div>、<h1>、<p>、<ul>、<li> 等。

行内元素(Inline element)通常被用来构建文本内容和内联元素,它们不会在页面上创建一个矩形的块,而是在行内显示,并且只占据必要的宽度。行内元素不能设置宽度、高度、内外边距(上下无效)、背景色、边框等属性。常见的行内元素包括 、、<em>、<strong>、<img> 等。

在 HTML 中,元素的类型决定了它们的默认行为和样式。但是,可以通过 CSS 来改变元素的默认样式,并将行内元素转换为块级元素,或者将块级元素转换为行内元素。这些 CSS 属性包括 display、width、height、margin、padding 等。

块级元素

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

具体实例

<!DOCTYPE html>
<html>
<head>
<style> 
.demo1 .parent {
    width: 500px;
    height: 500px;
    background-color: green;
 }
    .demo1 .child {
     /* 不写 width, 默认和父元素一样宽 */
    /* 不写 height, 默认为 0 (看不到了) */
    height: 200px;
    background-color: red;
    }

</style>
</head>
<body>
 
    <div class="demo1">
        <div class="parent">
            <div class="child">
               child1
            </div>
            <div class="child">
               child2
            </div>
        </div>
    </div>

</body>
</html>

在这里插入图片描述

行内元素

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

具体实例

<!DOCTYPE html>
<html>
<head>
<style> 

.demo2 span {
 width: 200px;
 height: 200px;
 background-color: red;
}


</style>
</head>
<body>
 
    <div class="demo2">
           <span>child1</span>
           <span>child2</span>
           <span>child3</span>
    </div>

</body>
</html>



在这里插入图片描述

行内元素和块级元素的区别

  • 块级元素独占一行, 行内元素不独占一行
  • 块级元素可以设置宽高, 行内元素不能设置宽高.
  • 块级元素四个方向都能设置内外边距, 行内元素垂直方向不能设置.

改变显示模式

使用 display 属性可以修改元素的显示模式. 
可以把 div 等变成行内元素, 也可以把 a , span 等变成块级元素. 
display: block 改成块级元素 [常用]
display: inline 改成行内元素 [很少用]
display: inline-block 改成行内块元素

4.2 flex布局初步概念

Flex 是 CSS3 中的一个布局模型,它提供了一种更加灵活的方式来布局和排列元素。使用 Flex 布局,可以轻松地对页面中的元素进行对齐、分布和排序,而不需要使用复杂的 CSS 或 JavaScript。

Flex 布局的核心是一个容器和容器内的一个或多个项目。容器通过设置 display: flex; 或 display: inline-flex; 来启用 Flex 布局。容器内的项目可以通过设置 flex 属性来控制它们相对于容器的大小、位置和间距。Flex 布局还提供了许多其他属性来控制项目的排列方式、顺序、对齐方式等等。

下面来介绍flex常用基本属性

justify-content

定义
设置水平元素的子元素排列方式.
属性
在这里插入图片描述
具体实例

使用flex前
在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
<style> 

div {
        width: 100%;
        height: 150px;
        background-color: red;
        display: flex; 
}
div span {
        width: 100px;
        height: 100px;
        background-color: green;}

</style>
</head>
<body>
 
    <div>
           <span>1</span>
           <span>2</span>
           <span>3</span>
           <span>4</span>
           <span>5</span>
       </div>

</body>
</html>



使用之后flex,可以明显看出行内元素变得可以修改大小了:
在这里插入图片描述

设置 justify-content: flex-end之后:此时元素都排列到右侧了.
在这里插入图片描述

设置 jutify-content: center之后 , 此时元素居中排列在这里插入图片描述

设置 justify-content: space-around之后,平分了剩余空间.
在这里插入图片描述
设置 justify-content: space-between之后,先两边元素贴近边缘, 再平分剩余空间.
在这里插入图片描述

align-items

设置垂直元素排列方式
在上面的代码中, 我们是让元素按照主轴的方向排列, 同理我们也可以指定元素按照侧轴方向排列.
具体属性
在这里插入图片描述

具体实例

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
         width: 500px;
         height: 500px;
         background-color: green;
         display: flex;
        /* justify-content: space-around; */
        }
        div span {
         width: 150px;
         background-color: red;
        }
        </style>
</head>
<body>
    <div>
       
        <span>1</span>
        <span>2</span>
        <span>3</span>
        </div>
       

</body>
</html>



未设置参数之前
在这里插入图片描述

设置 align-items: center之后
在这里插入图片描述

如果最后没理解,我们来个综合的例子

<!DOCTYPE html>
<html>
<head>
    <style>
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 300px;
  background-color: #f5f5f5;
}

.item {
  width: 200px;
  height: 50px;
  margin: 10px;
  background-color: #008080;
  color: #fff;
  text-align: center;
  line-height: 50px;
}
    </style>

</head>
<body>
    <div class="container">
        <div class="item">Item 1</div>
        <div class="item">Item 2</div>
        <div class="item">Item 3</div>
      </div>
       

</body>
</html>

好的,下面是一个具体的实际例子,演示如何使用 align-items 属性来控制 Flex 容器内项目的垂直对齐方式:

HTML 代码:

<div class="container">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
  <div class="item">Item 3</div>
</div>

CSS 代码:

.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 300px;
  background-color: #f5f5f5;
}

.item {
  width: 200px;
  height: 50px;
  margin: 10px;
  background-color: #008080;
  color: #fff;
  text-align: center;
  line-height: 50px;
}

具体展示:
在这里插入图片描述

在这个示例中,我们创建了一个 Flex 容器,并使用 align-items 属性将项目居中对齐。容器的主轴方向为垂直方向,因为我们设置了 flex-direction: column;。容器的高度为 300 像素,背景色为浅灰色。每个项目使用固定的宽度和高度,并在项目之间留有一些间距。项目的背景色为深绿色,文本颜色为白色,水平和垂直居中显示。

通过使用 align-items: center; 属性,我们可以将所有项目在垂直方向上居中对齐,即使它们的高度不同也可以正确对齐。这个例子展示了 align-items 属性的实际用途,帮助我们更好地控制 Flex 容器内项目的对齐方式。

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

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

相关文章

◆ 前端工程化 ◆ webpack 的基本使用 ◆ webpack 中的插件 ◆ webpack 中的 loader ◆ 打包发布 ◆ Source Map

◆ 前端工程化 ◆ webpack 的基本使用 ◆ webpack 中的插件 ◆ webpack 中的 loader ◆ 打包发布 ◆ Source Map ◆ 前端工程化◆ webpack 的基本使用◆ webpack 中的插件◆ webpack 中的 loader1. loader 概述打包处理css文件打包处理less文件打包处理样式表中与url路径相关的…

Python——2

一、循环 1.range() 函数 用于生成一个整数序列&#xff0c;返回的是一个迭代对象&#xff0c;可用 in / not in查看。 &#xff08;1&#xff09;range(stop) 创建一个 [0,stop) 的整数序列&#xff0c;步长为1。 &#xff08;2&#xff09;range(start, stop) 创建一个 [s…

面试谎报了职级,本来是6,谎报成7,已经到HR这一步了,怎么了?

面试时谎报职级&#xff0c;公司能查出来吗&#xff1f; 一位网友说&#xff0c;自己在业务面时谎报了职级&#xff0c;把6报成7&#xff0c;现在已经到hr这一步了&#xff0c;该怎么办&#xff1f;是继续编吗&#xff1f; 有人不明白&#xff0c;为什么要谎报职级&#xff1f;…

Pycharm 安装教程,及常用快捷键,附教程

简介 PyCharm是一款Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如&#xff0c; 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外&#xff0c;该IDE提供了一些高级功能&a…

有史以来最强的5G入门科普!

一个简单且神奇的公式 今天的故事&#xff0c;从一个公式开始讲起。 这是一个既简单又神奇的公式。说它简单&#xff0c;是因为它一共只有3个字母。而说它神奇&#xff0c;是因为这个公式蕴含了博大精深的通信技术奥秘&#xff0c;这个星球上有无数的人都在为之魂牵梦绕。…

CloudCompare二次开发之如何配置PCL点云库?

文章目录 0.引言1.修改两个CMakeLists.txt文件2.源码编译3.测试PCL 0.引言 因笔者课题涉及点云处理&#xff0c;需要通过PCL进行点云数据分析处理&#xff0c;查阅现有网络资料&#xff0c;实现了VisualStudio2015(x86)配置PCL1.8.1点云库&#xff08;见&#xff1a;VisualStud…

基于卷积的图像分类识别(七):SENet

系列文章目录 本专栏介绍基于深度学习进行图像识别的经典和前沿模型&#xff0c;将持续更新&#xff0c;包括不仅限于&#xff1a;AlexNet&#xff0c; ZFNet&#xff0c;VGG&#xff0c;GoogLeNet&#xff0c;ResNet&#xff0c;DenseNet&#xff0c;SENet&#xff0c;MobileN…

网络编程 lesson3 UDP基础编程

目录 UDP介绍 UDP编程 函数接口 recvfrom sendto 小练习&#xff1a;实现服务器和客户端相连&#xff08;使用UDP实现&#xff09; client server UDP介绍 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种在计算机网络中常用的传输…

C++常量成员函数(类成员函数后加const、类成员函数参数列表后加const)常量对象(类名前加const)和非常量对象

文章目录 常量对象和非常量对象&#xff08;常量对象不能调用非常量成员函数&#xff09;常量成员函数&#xff08;常量成员函数不能修改类的数据成员&#xff1b;常量成员函数只能调用常量成员函数&#xff0c;不能调用非常量成员函数&#xff09; 常量对象和非常量对象&#…

网络编程 lesson1 网络概念

目录 网络发展史&#xff08;了解&#xff09; 局域网和广域网 局域网 广域网 IP地址 IP地址划分&#xff08;IPV4&#xff09; IP地址取址范围&#xff1a; 特殊地址 子网掩码 子网号&#xff08;注意和前面进行区分&#xff09; 练习 练习1&#xff1a; 练习2&…

MySQL 数据库之 MMM 高可用架构构建

一、MMM 概述 1. 什么是 MMM   MMM&#xff08;Master-Master replication manager for MySQL&#xff0c;MySQL 主主复制管理器&#xff09;是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发&#xff0c;主要从来监控和管理 MySQL Master-Master&a…

工厂模式中简单工厂模式、工厂方法模式、抽象工厂模式的分析与总结

工厂模式 工厂模式有许多变体,其中最常见的有三种 简单工厂模式工厂方法模式抽象工厂模式 简单工厂代码分析 UML图中我们可以清晰的看到代码结构 ,首先我们创建一个Car的汽车接口,定制汽车的基本规范,汽车可以的方法是可以跑,所以我们定义了一个抽象的run方法. 定义汽车接口…

【sed编辑器】

目录 一、sed编辑器二、sed的命令格式操作命令1.1、命令演示 二、替换三、插入 一、sed编辑器 1、sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 2、sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么…

OSC Liblo Window10配置

OpenSoundControl一种网络通讯协议&#xff0c;想了解详情的自行打开网站。 liblo 是最知名的OSC库&#xff0c; 功能完整&#xff0c;用 C 和 LGPL 许可编写。 下载请前往GitHub库。 解压后安装过程如下&#xff0c;需要用到CMake&#xff1a; 1.选择源代码文件和构建工程的文…

一文读懂“生成式 AI”

一、前言 本文基于谷歌的&#xff1a;《Introduction to Generative AI》 并且借助 ChatGPT 整理而成&#xff0c;帮助大家理解生成式 AI 这个概念。 主要包括 4 个部分&#xff1a; 生成式 AI 的定义生成式 AI 的工作原理生成式 AI 模型的分类生成式 AI 的应用 二、生成式…

【数据结构】双向带头循环链表的实现

目录 全部代码 图例&#xff08;双向带头循环链表&#xff09; 各个功能的实现 创建该链表的节点 创建初始链表 链表的头插 链表的尾插 链表的随机插入 链表的头删 链表的尾删 链表的随机删除 链表的销毁 链表是否为空的判断 链表节点的创建 总结 全部代码 typ…

命令行更新Windows

命令行更新Windows powershell命令行更新安装 Windows Update module for Windows Powershell连接到 Windows Update 服务器并下载更新安装下载好的 Windows Update 更新 cmd执行Windows update更新检查更新下载 Windows Update 更新安装更新安装更新后重新启动设备 win10以下版…

Python中Pandas库的相关操作

目录 Pandas库 常用操作 创建DataFrame 查看数据 数据选择和过滤 数据排序和排名 缺失数据处理 数据聚合和分组 数据的合并和连接 Pandas库 Pandas是Python中常用的数据处理和分析库&#xff0c;它提供了高效、灵活且易于使用的数据结构和数据分析工具。 1.Series&a…

实例35---字符串反转,如将字符串 “www.runoob.com“ 反转为 “moc.boonur.www“。

文章目录 前言一、题目描述 二、题目分析 三、解题 1.解题方法一--- for循环来将字符的下标数值进行对每一个字符进行交换 ---程序运行代码 2.解题方法二------ 指针 ------ 程序运行代码(1)程序运行代码优化 总结 前言 本系列为C语言菜鸟100道基础经典例题详解刷题系列。点滴…

微服务:服务发现

1. 服务发现 eureka、nacos、Consul、etcd 和 zk 都是主流的服务发现工具&#xff0c;而 Dubbo 和 Polaris Mesh 则是基于服务发现的 RPC 框架。 它们的主要区别在于&#xff1a; eureka 是 Netflix 开源的一个服务发现组件&#xff0c;支持高可用和数据同步&#xff0c;具有…