Javaweb - 3 CSS

CSS 层叠样式表(Cascading Style Sheets),能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。

简单来说,HTML 搭建一个毛坯房,CSS 对毛坯房进行装修美化,到了 JS 的时候,就是加入家电智能设备了。

目录

[1 CSS 引入方式](#1 CSS 引入方式)

[方式 1:行内式](#方式 1:行内式)

[方式 2:内嵌式](#方式 2:内嵌式)

[方式 3:外部样式表](#方式 3:外部样式表)

[2. CSS选择器](#2. CSS选择器)

[1. 元素选择器:](#1. 元素选择器:)

[2. id 选择器:](#2. id 选择器:)

[3. class 选择器](#3. class 选择器)

[3. CSS 浮动](#3. CSS 浮动)

[4. CSS 定位](#4. CSS 定位)

static

absolute

relative

fixed

[5. CSS 盒子模型](#5. CSS 盒子模型)

完!


1 CSS 引入方式

方式 1:行内式

通过元素的 style 属性引入样式。

语法:style = "样式名:样式值;样式名:样式值;..........."

缺点:1. 代码复用度低,不利于维护。

  1. css 样式代码和 html 结构代码交织在一起,影响阅读,影响文件大小,影响性能。

方式 2:内嵌式

通过在 head 标签中的 style 标签,定义本页面的公共样式。

通过选择器来确定样式的作用元素。

内嵌式样式需要在 head 标签中,通过一对 style 标签定义 css 样式

css 样式的作用范围要依赖选择器

缺点:

内嵌式虽然对样式代码做了抽取,但是 css 代码仍然在 html 文件中

内嵌样式仅仅只能作用在当前文件,代码的复用度还是不够,不利于网站的风格统一

方式 3:外部样式表

将 css 代码单独放入 .css 样式文件,在 head 标签中通过 link 标签引入

<link href = "css/btn.css" rel = stylesheet>(rel 表示的是引入文件的类型 css 就是 style sheet)


2. CSS选择器

1. 元素选择器:

语法:标签名{ }

缺点:某些同名的元素,不希望使用某些样式,某些不同名的元素,也想要使用该样式,无法协调。

2. id 选择器:

根据标签的 id 值来确定样式的作用元素。

一般每个元素都有 id 属性,在一个页面中,id 的值不应该相同,id 具有唯一性。

语法:#id值{ }

缺点:id 值有唯一性,样式只能作用到一个元素上

3. class 选择器

根据元素的 class 属性值来确定样式的作用元素

元素的 class 值可以重复,而且一个元素的 class 属性可以有多个值

语法:.class属性值{ }

class 选择器非常灵活,在 css 中,大部分情况均使用该选择器~

3. CSS 浮动

CSS 的 Float(浮动),使元素脱离文档流,按照指定的方向(左或者右发生移动),直到它的外边缘碰到包含框或另一个浮动框的边框为止。

浮动设计的初衷,是为了解决文字环绕图片问题,浮动后一定不会把文字挡住。

文档流是文档中可显示对象在排列所占的位置 / 空间,而脱离文档流就是在页面中不占位置了~

有如上图代码,运行结果如图:

我们想让块元素在同一行,该如何操作呢?(块元素定义是独占一行的~)

首先可以想到,用 display 来设置行元素和块元素~

但是很明显,在设置之后,宽和高的设置都失效了~ 并不符合我们的预期~

这个时候就想到了 -- 浮动手段

此时,div1 就浮动到了父级的最右边~

注意观察的是,框 2 自动向上浮动,占据了之前 div1 的位置~

通过浮动,就可以实现,让多个块元素,既保持了它的块元素特征,也保持在了同一行。

如果是向左浮动呢?

此时发生的效果,又有点不对劲了~

当我们只在 div1 中设置 left 的浮动,发现结果如上图。

出现上图的原因是:框1 由于我们的浮动设置,脱离了文档流。但还记得我们浮动的设计初衷吗?是为了解决文字环绕图片问题,浮动后一定不会把文字挡住。

框1 left 浮动之后,把框2 的颜色遮挡住了,但是不会把文字给遮挡住,所以框2 的文字也就被挤到下面了,和框3 的文字重合在了一起~~

当我们给三个 div 都设置 left 的浮动后,就会正常显示了~

4. CSS 定位

让 div 出现在指定的位置 ==》 定位

position 属性指定了元素的定位类型:

static

静态定位 static 不设置的时候的默认值就是 static,静态定位,元素出现在该出现的位置 == 》 块级元素垂直排列,行内元素水平排列。

absolute

绝对定位 absolute,通过 top left right bottom 指定元素在页面上的固定位置,定位后,元素会脱离文档流,其他元素可以占用其位置。

relative

相对定位 relative,相对于自己原来的位置进行定位,定位后保留原来的占位,其他元素不会移动到该位置。

fixed

固定占位,始终在浏览器窗口固定位置,不会随着页面的上下移动而移动,元素定位后会让出原来的位置,其他元素可以占用

当我们在 div 后面加上 100 个 br 换行后,滑动浏览器页面,发现框1 始终都在页面的固定位置~

这种一般就适用于 == 》 广告~~

5. CSS 盒子模型

所有的 HTML 元素可以看作盒子,在 CSS 中,"box model" 这一术语用来设计和布局~

CSS 盒模型本质上是一个盒子,来封装周围的 HTML 元素。它包括:外边距(margin),边框(border),内边距(padding),实际内容(content)

用一个实际的例子来理解上面的概念是:

我们有一个盒子:容量 width:100px height:100px border:1px

如图,粉色的是我们的实际内容,width:100px,height:100px,红色的是border:1 px

border 向实际内容里面是内边距,border 向实际内容外是外边距,注意,内外边距所占的像素并不会影响实际内容的大小~

实例如下:

在浏览器 F12 观察如下:

完!

相关推荐
weixin_382395237 小时前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__8 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.8 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~9 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华10 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子12 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅12 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni13 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学14 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端