大白话css第二章深入学习

devtools/2025/2/27 16:50:32/

CSS学习第二阶段主要是深入掌握一些更复杂、更实用的知识和技能,以下用大白话为你详细介绍并给出代码示例:

盒模型与布局

  • 盒模型深入理解
    • 解释:前面说过每个HTML元素像个盒子,现在要更深入了解。内容区域就是盒子里真正放东西的地方,比如文字、图片等。内边距就是内容和边框之间的空白,它能让内容和边框隔开点距离,看起来不那么挤。边框就是盒子的边缘,你可以给它设置粗细、样式和颜色。外边距是盒子和其他盒子之间的空白,用来控制盒子和周围元素的距离。这几个部分共同构成了盒模型,理解它们对布局很重要哦。
    • 示例
css">.box {width: 200px; /* 盒子内容区域宽度 */height: 150px; /* 盒子内容区域高度 */padding: 20px; /* 内边距,上下左右都是20px */border: 3px solid blue; /* 边框,3像素宽,实线,蓝色 */margin: 30px; /* 外边距,上下左右都是30px */
}
  • Flexbox布局进阶
    • 解释:Flexbox布局很强大,除了前面说的简单用法,还能做更多复杂的布局。比如可以通过设置flex-direction属性来改变主轴方向,让元素横着排或者竖着排。justify-content属性用来在主轴方向上对齐元素,像space-between能让元素两端对齐,中间元素均匀分布。align-items属性则是在交叉轴方向上对齐元素,比如让元素在纵向上居中。
    • 示例
css">.container {display: flex;flex-direction: column; /* 主轴方向为垂直,元素竖着排 */justify-content: space-between; /* 元素在主轴方向上两端对齐 */align-items: center; /* 元素在交叉轴方向上居中对齐 */height: 300px;background-color: lightgray;
}.item {width: 150px;height: 80px;background-color: lightblue;
}
<!DOCTYPE html>
<html><body><div class="container"><div class="item"></div><div class="item"></div><div class="item"></div></div>
</body></html>

文本与字体样式

  • 文本装饰与阴影
    • 解释:文本装饰可以给文本添加一些额外的效果,比如下划线、删除线、上划线等,让文本更突出或者有特殊的标识。文本阴影则能让文本看起来有立体感,好像有影子一样,增加视觉效果。
    • 示例
css">p {text-decoration: underline dotted red; /* 下划线,点状线,红色 */text-shadow: 2px 2px 4px gray; /* 阴影,水平偏移2px,垂直偏移2px,模糊半径4px,灰色 */
}
  • 自定义字体
    • 解释:有时候系统自带的字体不能满足我们的需求,这时候就可以使用自定义字体啦。我们可以把自己喜欢的字体文件放到项目中,然后在CSS里通过@font-face规则来引入,这样就可以用这些独特的字体让网页更有个性。
    • 示例
css">@font-face {font-family: 'MyCustomFont';src: url('path/to/your/font.ttf') format('truetype');font-weight: normal;font-style: normal;
}body {font-family: 'MyCustomFont', sans-serif;
}

背景与渐变

  • 多背景与背景混合模式
    • 解释:一个元素可以有多个背景哦,比如可以同时设置背景图片和背景颜色,或者设置多个背景图片,让它们叠加在一起。背景混合模式则可以控制这些背景之间是如何混合显示的,比如正常显示、相乘、叠加等效果,能创造出很独特的背景效果。
    • 示例
css">.box {width: 300px;height: 200px;background-image: url('image1.jpg'), url('image2.jpg');background-position: left top, right bottom;background-repeat: no-repeat, no-repeat;background-color: lightgreen;background-blend-mode: multiply;
}
  • 径向渐变
    • 解释:前面讲了线性渐变,是颜色沿着一条直线方向变化。径向渐变则是从一个中心点开始,颜色向四周呈圆形或椭圆形扩散变化,能做出像水波扩散、聚光灯等效果。
    • 示例
css">.box {width: 200px;height: 200px;background: radial-gradient(circle at center, yellow, green);
}

动画与过渡

  • 过渡的高级应用
    • 解释:过渡除了可以应用在简单的属性变化上,还能同时对多个属性进行过渡,并且可以设置不同的过渡时间和延迟。比如让一个元素在鼠标悬停时,宽度和颜色同时有过渡效果,而且宽度变化快一点,颜色变化慢一点,还可以让颜色变化稍微延迟一下再开始。
    • 示例
css">.box {width: 150px;height: 100px;background-color: blue;transition: width 0.5s, background-color 1s 0.3s;
}.box:hover {width: 250px;background-color: red;
}
  • 关键帧动画的复杂应用
    • 解释:关键帧动画可以通过定义多个关键帧来实现更复杂的动画效果。比如让一个元素先从左到右移动,然后旋转,再变大,最后又回到原来的位置和大小,通过在不同的关键帧设置不同的属性值来实现这些连续的动作。
    • 示例
css">@keyframes complexAnimation {0% {transform: translateX(0) rotate(0deg) scale(1);}33% {transform: translateX(100px) rotate(45deg);}66% {transform: translateX(100px) rotate(45deg) scale(1.5);}100% {transform: translateX(0) rotate(0deg) scale(1);}
}.box {width: 100px;height: 100px;background-color: orange;animation: complexAnimation 5s infinite;
}

用代码展示如何使用Flexbox布局实现一个导航栏

首先呢,我们要知道Flexbox布局就是一种很方便的用来排列页面元素的方法,就好像把一堆东西放在一个有魔法的盒子里,这个盒子能帮我们很轻松地把这些东西按照我们想要的方式摆好。

下面就是具体实现一个简单导航栏的步骤和代码:

  1. HTML结构搭建
    • 先在HTML文件里创建一个导航栏的基本结构。我们用一个<nav>标签来表示这是一个导航栏,然后在里面放几个<a>标签,每个<a>标签就代表导航栏里的一个选项,比如“首页”“关于我们”“产品”之类的。
<nav class="navbar"><a href="#">首页</a><a href="#">关于我们</a><a href="#">产品</a><a href="#">联系我们</a>
</nav>
  1. CSS基本样式设置
    • 给导航栏和里面的选项设置一些基本的样式,让它们看起来好看点。比如给导航栏设置一个背景颜色,让它和页面其他部分区分开,再给里面的选项设置一些文字颜色、字体大小之类的。
css">.navbar {background-color: #333; /* 导航栏背景颜色 */padding: 10px; /* 导航栏内边距,让内容和边框有点距离 */
}.navbar a {color: white; /* 导航选项文字颜色 */text-decoration: none; /* 去掉链接下划线 */padding: 10px 15px; /* 导航选项内边距,让选项有一定的宽度和高度 */font-size: 18px; /* 文字大小 */
}
  1. 使用Flexbox布局
    • 现在开始用Flexbox布局来让导航选项排列得整整齐齐。给导航栏的CSS类.navbar添加display: flex,这就告诉浏览器我们要用Flexbox布局啦。然后用justify-content属性来让导航选项在水平方向上均匀分布。
css">.navbar {background-color: #333;padding: 10px;display: flex; /* 开启Flexbox布局 */justify-content: space-around; /* 让导航选项在水平方向上均匀分布 */
}.navbar a {color: white;text-decoration: none;padding: 10px 15px;font-size: 18px;
}

这样,一个简单的用Flexbox布局实现的导航栏就做好啦。在这个导航栏里,每个导航选项会在一行里均匀分布,而且鼠标放上去也不会有下划线,文字颜色是白色,导航栏有一个深灰色的背景。

如果你想要让导航栏更美观或者有更多功能,还可以继续添加一些CSS样式,比如鼠标悬停在导航选项上时改变颜色、添加一些动画效果等等。

比如,我们可以让鼠标悬停在导航选项上时,文字颜色变成黄色,就像这样:

css">.navbar a:hover {color: yellow; /* 鼠标悬停时文字颜色变成黄色 */
}

除了Flexbox,还有哪些常用的CSS布局方式?

除了Flexbox,CSS还有以下几种常用的布局方式:

传统布局方式

  • 普通文档流布局:这是CSS中最基本、最自然的布局方式,就像我们平常写文章一样,元素按照它们在HTML代码中的顺序,从上到下、从左到右依次排列。块级元素会独占一行,比如<div><p>标签等,它们会自动换行,一个接一个地垂直排列。行内元素则会在一行内从左到右排列,直到该行排满才会换行,像<span><a>标签等就是行内元素。这种布局方式很适合一些简单的、没有复杂排版需求的页面部分,比如正文内容的段落排列。
  • 浮动布局:可以通过给元素设置float属性来实现,让元素向左或向右浮动,就好像把元素从普通文档流中“拿出来”,放到左边或者右边,其他元素会围绕着它排列。常用于实现文字环绕图片的效果,或者将多个元素在一行内排列,比如水平导航栏、多列布局等。但使用浮动布局时要注意清除浮动,不然可能会出现布局混乱的问题。可以在浮动元素的父元素上使用overflow: hidden或者额外添加一个空元素并设置clear: both来清除浮动。

定位布局方式

  • 相对定位:给元素设置position: relative,它会相对于自己在普通文档流中的位置进行偏移。比如设置left: 20px,元素就会相对于原来的位置向右移动20像素。这种定位方式不会影响其他元素的位置,原来元素占据的空间还会保留,常用于微调元素的位置,或者作为绝对定位元素的参考基准。
  • 绝对定位:使用position: absolute,元素会相对于最近的已定位(非static定位)的祖先元素进行定位,如果没有这样的祖先元素,就相对于浏览器窗口。它会完全脱离文档流,不再占据原来的空间,其他元素会忽略它的存在。比如可以用来将一个小图标精确地放置在某个大容器的特定位置,或者创建弹出框、下拉菜单等。
  • 固定定位:通过position: fixed来实现,元素会相对于浏览器窗口固定在某个位置,无论页面如何滚动,它都不会移动。常见的应用场景是固定在页面顶部的导航栏、侧边栏的快捷按钮等,方便用户在浏览页面时随时可以操作这些元素。

网格布局方式

  • CSS Grid布局:它就像是在页面上画了一个超级规整的表格,把页面划分成一个个的单元格,我们可以很方便地把元素放到不同的单元格里,精确地控制它们的位置和大小。通过display: grid来创建网格容器,然后用grid-template-columnsgrid-template-rows属性来定义网格的列和行,还可以用grid-columngrid-row属性来指定元素放在哪个单元格里。非常适合创建复杂的、有规律的多列布局,像电商网站的商品展示页面、博客网站的文章列表页面等。

如何调试和优化CSS代码?

以下是一些用大白话介绍的调试和优化CSS代码的方法:

调试CSS代码

  • 查看样式效果:在浏览器中打开网页,看看页面实际显示的样子和你想要的是不是一样。如果不一样,就开始找问题。比如你想让一个按钮是红色的,但它显示成了蓝色,那肯定就有问题啦。
  • 使用浏览器开发者工具:大部分浏览器都有开发者工具,按F12或者右键点击页面选“检查”就能打开。在开发者工具里有个“元素”或者“审查元素”的功能,点一下它,再去页面上点你觉得有问题的元素,就能看到这个元素对应的CSS代码。看看是不是有什么样式被写错了或者被其他样式覆盖了。比如你给一个div设置了width: 200px,但在开发者工具里发现它实际的宽度是300px,那就得看看是不是还有其他地方也给这个div设置了宽度,把它覆盖掉了。
  • 检查语法错误:CSS代码里语法很重要,如果写错了,浏览器可能就不认识。比如你把color写成了clor,或者少写了个分号,都会出问题。在开发者工具的“控制台”里,有时候会显示CSS的语法错误信息,你可以根据提示来修改。
  • 注释掉部分代码:要是你觉得某个地方的CSS代码可能有问题,但又不确定是哪一句,就可以把这部分代码一段一段地注释掉,看看页面效果有没有变化。如果注释掉某一段后,问题解决了,那就说明问题出在这一段代码里,再仔细检查这部分代码就好。比如你写了一堆给导航栏设置样式的代码,导航栏出问题了,你就可以先注释掉一半,看看导航栏会不会恢复正常,如果恢复了,就继续在剩下的一半里找问题。

优化CSS代码

  • 合并和压缩CSS文件:如果你的项目里有很多个CSS文件,或者CSS代码里有很多空格、换行之类的多余内容,可以把它们合并成一个文件,并且把多余的空格、换行去掉。这样可以减少浏览器加载文件的次数和文件的大小,让页面加载得更快。现在有很多工具可以帮你做这件事,比如一些代码压缩工具或者构建工具。
  • 避免过度嵌套:写CSS选择器的时候,尽量别嵌套得太深。比如div > section > article > p这种很深的嵌套,浏览器解析起来会比较慢。能用简单的选择器就用简单的,比如直接给p标签加个类名,然后用这个类名来设置样式,就会快很多。
  • 利用继承和默认样式:CSS里很多样式是可以继承的,比如字体大小、颜色这些,子元素会默认继承父元素的样式。你可以利用这一点,给父元素设置一个通用的样式,子元素就不用再重复设置了。还有一些浏览器有默认的样式,比如body标签有默认的字体和边距,如果你觉得默认的就挺好,那就不用再专门写代码去设置了,能省不少事儿。
  • 使用CSS预处理器:像Sass、Less这样的CSS预处理器,可以让你用更灵活、更方便的方式写CSS。比如你可以定义变量,像$main-color: #ff0000;,然后在其他地方就可以直接用$main-color来表示这个红色,以后想改颜色,只需要改这一个地方就行了。还可以写函数、混合器之类的,让代码更有条理,也更容易维护。
  • 优化动画和过渡效果:如果页面上有动画或者过渡效果,要注意优化它们。比如尽量用CSS3的动画和过渡,少用JavaScript来实现动画,因为CSS3的性能更好。而且要避免过度使用复杂的动画,不然可能会让页面变得很卡。另外,给动画元素设置will-change属性,可以让浏览器提前做一些优化准备,让动画更流畅。

css布局方式,应用场景,区别

普通文档流布局

  • 介绍:这是最基础、最自然的布局方式。块级元素会独占一行,从上到下垂直排列,像<div><p>标签通常就是这样;行内元素则在一行内从左到右排列,直到该行排满才换行,比如<span><a>标签。
  • 应用场景:适合网页中简单的正文内容排版,比如文章的段落、普通的文本描述等。
  • 区别于其他布局:是最常规的布局,元素按照在HTML中的顺序自然排列,不像其他布局方式那样可以灵活地对元素进行位置调整和特殊排列,基本没有脱离正常的文本流排列顺序。

浮动布局

  • 介绍:通过给元素设置float属性,让元素向左或向右浮动,使其他元素围绕它排列。
  • 应用场景:常用于实现文字环绕图片的效果,或者制作水平导航栏、多列布局等,能让多个元素在一行内排列。
  • 区别于其他布局:可以让元素在一定程度上脱离普通文档流,但又不像绝对定位那样完全脱离,其他元素会根据浮动元素的位置进行环绕排列,不过需要注意清除浮动以避免布局混乱。

定位布局

  • 相对定位
    • 介绍:给元素设置position: relative后,元素会相对于自身在普通文档流中的位置进行偏移,设置lefttop等属性可调整位置。
    • 应用场景:常用于微调元素位置,或者作为绝对定位元素的参考基准。
    • 区别于其他布局:不会使元素完全脱离文档流,它原来占据的空间会保留,只是在自身位置基础上进行相对移动,对其他元素布局影响较小。
  • 绝对定位
    • 介绍:使用position: absolute,元素会相对于最近的已定位(非static定位)的祖先元素进行定位,若没有则相对于浏览器窗口,完全脱离文档流。
    • 应用场景:可用于将元素精确放置在特定位置,如在大容器内精准放置小图标,或创建弹出框、下拉菜单等。
    • 区别于其他布局:完全脱离文档流,不占据原来的空间,其他元素布局不会为它预留位置,定位相对更灵活但也需要更精确地设置位置。
  • 固定定位
    • 介绍:通过position: fixed,元素相对于浏览器窗口固定在某个位置,页面滚动时它也不会移动。
    • 应用场景:常见于固定在页面顶部的导航栏、侧边栏的快捷按钮等,方便用户随时操作。
    • 区别于其他布局:始终相对于浏览器窗口定位,不受页面滚动和其他元素位置变化的影响,在页面中的位置非常固定。

Flexbox布局

  • 介绍:弹性盒布局,通过给父元素设置display: flex,可以很方便地控制子元素的排列方向、对齐方式、伸缩比例等。
  • 应用场景:适用于各种需要自适应和灵活排列的场景,如导航栏、卡片布局、表单布局等,尤其是在响应式设计中能很好地适应不同屏幕尺寸。
  • 区别于其他布局:主要侧重于元素在一维方向(行或列)上的灵活布局,通过弹性属性让元素能根据容器空间自动调整大小和位置,在响应式方面表现出色,不需要像浮动布局那样担心清除浮动等问题。

CSS Grid布局

  • 介绍:把页面划分成一个类似表格的网格,通过display: grid创建网格容器,用grid-template-columnsgrid-template-rows等属性定义网格的列和行,再用grid-columngrid-row等属性指定元素放置的位置。
  • 应用场景:非常适合创建复杂的、有规律的多列布局,如电商网站的商品展示页面、博客网站的文章列表页面等。
  • 区别于其他布局:是一种二维布局方式,能更精确地控制元素在行列组成的网格中的位置,相比Flexbox更适合复杂的多列多排布局场景,对页面整体布局的把控能力更强。

http://www.ppmy.cn/devtools/163113.html

相关文章

怎么合并主从分支,要注意什么

在 Git 中合并主从分支&#xff08;例如将 feature 分支合并到 main 分支&#xff09;是一个常见操作。以下是具体步骤和注意事项&#xff1a; 合并分支的步骤 切换到主分支 git checkout main确保当前在 main 分支。 拉取最新代码 git pull origin main确保 main 分支是最…

如果二者隔离级别不一致,以哪个为主。例如@Transactional 隔离级别是RC,mysql是RR

如果 Spring 的 Transactional 隔离级别 和 数据库的隔离级别 不一致&#xff0c;最终生效的隔离级别取决于以下两种情况&#xff1a; 1. Spring 隔离级别优先级更高 Spring 的行为&#xff1a; 当你在 Transactional 注解中显式配置了隔离级别&#xff08;例如 isolation Iso…

排序模板——C++

0.排序模板题目 题目描述 将读入的 N 个数从小到大排序后输出。 输入格式 第一行为一个正整数 N。 第二行包含 N 个空格隔开的正整数 ai​&#xff0c;为你需要进行排序的数。 输出格式 将给定的 N 个数从小到大输出&#xff0c;数之间空格隔开&#xff0c;行末换行且无空格。 …

MySQL表转移数据的三种方式

说明&#xff1a;在一些情况&#xff0c;像大表修改表结构&#xff0c;重新建立分区&#xff08;对已有表建立分区&#xff0c;对历史数据是不生效的&#xff09;&#xff0c;或者表备份&#xff0c;我们需要将表的数据&#xff0c;从一张表转移到另外一张表里。本文介绍&#…

计算机毕设-基于springboot的仁和机构的体检预约系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

pyrender 自动计算相机 pose

目录 计算smpl高和宽 pyrender 自动计算相机 pose 题目: 计算smpl高和宽 import numpy as np# 假设 vertices 是 (N, 3) 的数组 x = vertices[:, 0] # x 坐标 y = vertices[:, 1] # y 坐标# 计算宽度和高度 width = np.max(x) - np.min(x) height = np.max(y) - np.min(…

CentOS修改yum源

1备份官方yum源 进入该目录cd /etc/yum.repos.d/ 查看该目录下的文件 CentOS-Base.repo为系统自带的yum源&#xff0c;确定后将其备份 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2下载阿里云源配置并覆盖原文件 1、安装wget yum ins…

PwnLab详细解答

一、主机发现 arp-scan -l靶机ip&#xff1a;192.168.55.153 二、端口识别、目录枚举、指纹识别 2.1端口识别 nmap -p- 192.168.55.1532.2目录枚举 dirb http://192.168.55.153枚举出来的敏感目录找到了文件上传网站和上传的地址 2.3指纹识别 nmap 192.168.55.153 -sV -…