发布于 2026-01-06 0 阅读
0

CSS——让我们深入学习基础知识。我该如何提高?🙏

CSS——让我们深入了解基础知识。

我该如何改进?

🙏

让我们跳出固有思维模式!

CSS会将每个HTML元素解释为一个盒子。

每个元素都具有:

  • 内容蓝色区域。
  • 周围的衬垫,即绿色区域。
  • 周围的边界,橙色区域。
  • 周围边缘,即棕色区域。

内容
可以是文字、图片、视频……

边框
:边框环绕着内容。

内边距:
从内容到边框的内部空间。

边距:
元素与其相邻元素之间的距离。

CSS 中的盒模型包含内容边框内边距外边距。

<div id="boxModel">
  Hello Box Model!
</div>
Enter fullscreen mode Exit fullscreen mode
#boxModel {
  background-color: violet;
  font-size:50px;
  padding: 20px;
  border: 10px solid red;
  margin: 30px;
}
Enter fullscreen mode Exit fullscreen mode

应用此 CSS 规则后,我们可以在下面看到浏览器如何解释每个 CSS 声明。

内容|蓝色区域
我们有 CSS 声明font-size:50px,因此我们有高度57px

边框 | 橙色区域
我们有 CSS 声明border: 10px solid red,因此为周围的边框分配了 10px 的宽度和solid red颜色。

内边距 | 绿色区域
我们有 CSS 声明padding: 20px;,因此周围区域已分配 20px 的内边距。

边距 | 棕色区域。
此外,我们有一个 CSS 声明margin: 30px;,因此周围边距已分配 30px。



默认边距

通过浏览器

浏览器默认margin: 8px;会给 body 元素分配一个属性。

要移除这个默认边距,我们可以使用以下 CSS 规则:

body {
  margin: 0px;
}
Enter fullscreen mode Exit fullscreen mode



边际收缩

当有两个或多个 HTML 元素(块级元素)时,
它们之间的边距会自动折叠。这是浏览器为了减少过多空白而自动执行的操作。

下面我们可以看到,margin-bottom第一个元素和margin-top第二个元素已经自动合并在一起了。

默认情况下,边距较大的块元素优先。
如下所示,margin-top第二个元素的边距值大于margin-bottom第一个元素的边距值。

阅读更多:



速记属性

简写属性可以将多个属性的值合并到一个 CSS 声明中。

例如:

margin: 8px
Enter fullscreen mode Exit fullscreen mode

是……的简写

margin-top: 8px;
margin-right: 8px;
margin-left: 8px;
margin-bottom: 8px;
Enter fullscreen mode Exit fullscreen mode

简写可以更轻松地将多个值传递给一个 CSS 属性

border: 10px dashed purple;
Enter fullscreen mode Exit fullscreen mode

速记属性的实际应用

padding: 10px 20px;是以下含义的简写:

padding-top:    10px;
padding-right:  20px;
padding-bottom: 10px;
padding-left:   20px;
Enter fullscreen mode Exit fullscreen mode

padding: 10px 20px 30px;是以下含义的简写:

padding-top: 10px;
padding-right: 20px;
padding-bottom: 30px;
padding-left: 20px;
Enter fullscreen mode Exit fullscreen mode

padding: 10px 20px 30px 40px;是以下含义的简写:

padding-top: 10px;
padding-right: 20px;
padding-bottom: 30px;
padding-left: 40px;
Enter fullscreen mode Exit fullscreen mode



宽度和高度

宽度

块级元素总是试图占据浏览器的全部可用宽度,或者如果它有外层元素,则占据其外层元素的全部可用宽度。

div {
  background: greenyellow;
}
Enter fullscreen mode Exit fullscreen mode
  <div>What is my width?</div>
Enter fullscreen mode Exit fullscreen mode

如果我们用百分比值来设置宽度,它将占据周围元素宽度的百分比。
在本例中,该div元素没有周围元素,因此它占据了浏览器窗口的全部可用宽度。

div {
  background: greenyellow;
  width: 33%
}
Enter fullscreen mode Exit fullscreen mode

如果我们div用一个外层section元素包裹它,并给这个section外层元素一个特定的宽度。

<section>
  <div>What is my width?</div>
</section>
Enter fullscreen mode Exit fullscreen mode
section {
   width: 500px; 
   background: yellow;
}
div {
  background: greenyellow;
  width: 33%
}
Enter fullscreen mode Exit fullscreen mode

元素的宽度div现在将是其外层元素宽度的百分比
如下所示,它的宽度已经缩小了。

高度

另一方面,高度设置了元素容纳其内容所需的最大垂直空间。默认情况下,它不会占用浏览器可用的全部高度。

div {
  background: greenyellow;
  width: 100%;
  height: 100%;
}
Enter fullscreen mode Exit fullscreen mode

如果 html 元素被包含在另一个元素内,则其高度将相对于该元素而言。

<section>
  <div>What is my height?</div>
</section>
Enter fullscreen mode Exit fullscreen mode
section {
   width: 500px; 
   background: yellow;
   width: 200px;
   height: 200px;
}

div {
  background: greenyellow;
  width: 80%;
  height: 100%;
}
Enter fullscreen mode Exit fullscreen mode

为了充分利用浏览器窗口的高度,一个技巧是应用以下 CSS 规则:

html, body {
    height: 100%
    }
Enter fullscreen mode Exit fullscreen mode



盒子尺寸

box-sizing该属性允许我们将内边距和边框包含在元素的总宽度和高度中。
但在此之前,让我们先了解一下浏览器是如何为每个元素分配空间的。

元素盒子的实际可见/渲染宽度
= 宽度 + 内边距 + 边框

元素盒子的实际可见/渲染高度
= 高度 + 内边距 + 边框

默认情况下,边距、边框和内边距会分别设置各自的间距。

<div>How much space do I use?</div>
Enter fullscreen mode Exit fullscreen mode
div {
  background: pink;
  width: 100px;
  height: 100px;
  padding: 10px;
  margin: 10px;
  border: 10px solid greenyellow;
}
Enter fullscreen mode Exit fullscreen mode

box-sizing我们可以通过给属性赋予三个可能值之一来改变盒子模型。

  1. content-box
  2. padding-box
  3. border-box(最受欢迎的值)

举例说明box-sizing: border-box;

div {
  background: pink;
  width: 100px;
  height: 100px;
  padding: 10px;
  margin: 10px;
  border: 10px solid greenyellow;
  box-sizing: border-box;
}
Enter fullscreen mode Exit fullscreen mode

box-sizing重置方法

如果要border-box在整个项目中使用,以下样式可以快速解决问题。

html  {  
    box-sizing: border-box;  
}  
*, *:before, *:after  {  
    box-sizing: inherit;  
}
Enter fullscreen mode Exit fullscreen mode

延伸阅读:

显示属性

块级元素
是指任何另起一行的元素,例如段落,并且会占用页面或容器的全部宽度(所有可用的水平空间)。块级元素可以占据一行或多行,元素前后都有换行符。我们可以设置其上边距和下边距。

块级元素示例:

HTML 标签 描述
<address> 显示联系信息
<applet> 嵌入 Java 小程序
<article> 包含文章内容
<aside> 描述一段内容
<blockquote> 标明引用的部分。
<canvas> 使用 JavaScript 绘制图形
<caption> 给表格添加标题
<center> 中心文本
<details> 创建一个交互式小部件来隐藏文本
<dir> 指定一组文件名
<div> 创建文档部门
<dl> 包含定义及其描述的列表
<dt> 在描述列表中指定一个术语
<embed> 指定一个区域用于互动内容
<figure> 指定一个独立内容区域
<form> 创建用于采集数据的输入表单
<frame> 创建另一个页面的框架窗口
<h1><h6> 创建标题
<header> 创建标题部分
<hr> 画一条水平线
<iframe> 创建页面的窗口框架
<li> 用于表示列表项
<main> 包含特定页面的内容
<marquee> 创建滚动文本
<nav> 包含页面的导航链接
<noscript> 包含在不支持脚本的浏览器中使用的内容
<object> 指定嵌入网页中的对象
<ol> 包含一个有序列表
<p> 用于表示一段
<pre> 包含预格式化文本
<section> 将主题相似的内容归类在一起
<table> 包含一张表格
<ul> 包含一个无序列表

display 属性允许我们将元素的行为更改为块级、行内或行内块级。

行内元素
顾名思义,“作为正文的一部分而非单独的部分包含在内”。行内元素会根据其内容占用主元素所定义的空间,也就是说,它们会占据足够的空间来容纳其内容。与块级元素不同,行内元素不会另起一行。因此,两个行内元素可以位于同一行(只要它们的内容组合起来没有占据整个空间,否则会添加换行符)。对行内元素设置 `<style>`width或 ` <style>`height属性也不会产生任何效果。

行内元素示例:

HTML 标签 描述
<a> 创建锚点
<abbr> 创建首字母缩写词或简称
<acronym> 创建一个首字母缩写词
<audio> 嵌入音频文件
<b> 粗体文本
<bdi> 限制可能采用不同格式的文本
<bdo> 强制文本朝某个方向显示
<big> 放大文本
<blink> 使文本闪烁
<br> 创建换行符
<button> 创建表单按钮
<cite> 请提及任何创作作品
<code> 将文本指定为代码
<del> 删除或划掉文本
<dfn> 表示术语的定义实例
<em> 强调文本
<font> 更改字体
<i> 将文本斜体化
<img> 显示图像文件
<input> 在表单上创建一个输入框
<ins> 插入文本
<kbd> 指示文本是通过键盘插入的
<mark> 高亮文本
<meter> 创建一个计量器
<output> 显示用户操作或计算的结果
<progress> 显示任务进度
<q> 将文本指定为简短引用
<rp> 为不支持 Ruby 注解的浏览器指定括号
<rt> 标明东亚词的发音
<ruby> 在网页上指定 Ruby 注解
<s> 删除线文本
<samp> 指定计算机的样本输出
<select> 降低
<small> 缩小文本
<span> 用于对内容进行分组或定语的容器
<strike> 删除线文本
<strong> 标记文本以示强调
<sub> 创建下标文本
<sup> 将文本设置为上标
<strong> 重视文本
<textarea> 创建表单的文本区域
<time> 指定一个人类可读的日期和时间。
<tt> 制作电传打字机文本
<u> 下划线文本
<var> 将文本定义为一个变量
<video> 显示视频文件
<wbr> 换行

行内块
元素与周围所有文本保持行内对齐,外观与行内元素相同。
其优点在于:我们可以设置该元素的垂直高度,因此可以设置margin-top宽度、margin-bottom高度padding-toppadding-bottom间距vertical-align

延伸阅读



display: none对比visibility:hidden

CSS 声明display: none;会将该元素从文档流中移除。这意味着该元素不再可见,也不会“阻塞其位置”。其他元素可以(并且将会)取代它的位置。

CSS声明visibility: hidden;会隐藏一个元素,但保留它在文档中的位置。这意味着其他元素不会占据它原本的位置。

例如,如果我们有两个 div 元素,一个设置为 display: none,另一个设置为 visibility: hidden:

<section>
<div class="dnone">Display None</div>
</section>
<br>
<section>
<div class="vhidden">Visibility Hidden</div>
</section>
Enter fullscreen mode Exit fullscreen mode
section {
  border: 1px solid red;
}
.dnone {
    display: none;
    height: 50px;
}

.vhidden{
    visibility: hidden;
    height: 50px;
}
Enter fullscreen mode Exit fullscreen mode

第一个div带有 CSS 声明的元素display: none;已从文档流中完全移除。



伪类

伪类在特定条件下选择元素:

  • 当它们的位置是相对于它们的兄弟姐妹而言时。
  • 或者当他们处于某种特定状态时。

常见伪类示例:

动态伪类

  • :link
  • :visited
  • :hover
  • :active
  • :focus

UI元素状态伪类

  • :enabled
  • :disabled
  • :checked

结构伪类

  • :first-child
  • :nth-child(n)
  • :nth-last-child(n)
  • :nth-of-type(n)
  • :nth-last-of-type(n)
  • :last-child
  • :first-of-type
  • :last-of-type
  • :only-child
  • :only-of-type
  • :root
  • :empty

其他伪类

  • :not(x)
  • :target
  • :lang(language)



伪元素

伪元素有效地创建了文档标记中未指定的新元素,并且可以像常规元素一样对其进行操作。

  • ::before
  • ::after
  • ::first-letter
  • ::first-line
p::first-letter {
  color: Red;
  font-size: 25px;
  font-weight: bolder;
}

p::after {
  content: "<-- Remember this";
  background-color: yellow;
  color: red;
  font-weight: bold;
}
Enter fullscreen mode Exit fullscreen mode



伪什么???

伪类和伪元素之间的区别乍一看可能有点令人困惑。
是一种选择器,它可以帮助我们选择那些无法用简单选择器表达的内容,例如 `<a>` :hover。因为`<a>`:hover是一个动作。另一方面,伪元素允许我们
创建文档中通常不存在的元素,例如 `<a>` ::after

所以伪类用于选择,而伪元素用于创建。



CSS 规则分组

如果两条 CSS 规则共享相同的 CSS 声明,我们可以用逗号 (.) 将它们分组,
这里,逗号 (.),并不起到组合器的作用。

div:first-letter,
p::first-letter {
  font-family: sans-serif;
  font-weight: bold;
  color: orange;
  font-size: 30px;
}
Enter fullscreen mode Exit fullscreen mode

我该如何改进?

感谢您阅读本文。🙏 🙏 🙏
您能否告诉我我可能遗漏了哪些内容,以及我该如何改进这篇文章?
谢谢。

激励我写更多东西

评论、转发、点赞❤️、点赞🦄和收藏🔖

🙏

文章来源:https://dev.to/rishiabee/css-let-s-go-deeper-in-the-basics-69l