CSS回顾-基础知识详解

一、引言

在前端开发领域,CSS 曾是构建网页视觉效果的关键,与 HTML、JavaScript 一起打造精彩的网络世界。但随着组件库的大量涌现,我们亲手书写 CSS 样式的情况越来越少,CSS 基础知识也逐渐被我们遗忘。
现在,这种遗忘带来了诸如样式调整困难、面对兼容性问题不知所措等麻烦。所以,我们有必要回顾 CSS,重拾这些重要知识,为更好地开发网页助力。

二、基础介绍

2.1 什么是CSS

层叠样式表(Cascading Style Sheets,缩写为 CSS)是一种专门用于描述文档(如网页、XML 文档等)呈现方式的样式表语言之一(XSL、LESS、SASS)。

我们知道HTML是负责搭建网页文档的结构地基,而CSS就是给这个网页增加色彩与动画的,最终变成精美的界面呈现给用户。

2.2 基础语法

CSS 是一门基于规则的语言。是由选择器样式信息组成:选择器 {样式信息}

h1 {color: red;font-size: 20px;
}

上面写了一个简单示例,我们可以看到h1就代表选择器的一种标签选择器,括号中包裹的就是对应的样式对象信息,由属性、属性值组成。上面样式的意思是:将界面上h1标签元素文字样式设置为红色,文字大小设置为20px;

注意:具体的选择器类别样式信息后面会总结(挖一个坑,后面回填的),请大家持续关注。

2.3 注释语法

在 CSS(层叠样式表)中,注释用于在代码中添加说明性文字,这些文字不会被浏览器解析为样式规则。CSS 注释有两种常见的语法:

  1. 多行注释:/* 这是
    注释内容 */
  2. 单行注释:/* 这是注释内容 */
/* 这是h1标签样式 */
h1 {/* 多行注释color: red;font-size: 20px;*/
}

三、引用方式

我们配置的css的样式最终是要作用到网页结构信息上面的,而书写的位置也会有不同,书写位置不同会导致最终界面呈现的效果不同。主要分为以下三种:

  1. 外部样式表(外联样式)
  2. 内部样式表(style标签)
  3. 行内样式表(内联样式)

3.1 外部样式表(外联样式)

外部样式表是将 CSS 代码保存在一个独立的.css文件中,然后在 HTML 文档中通过<link>标签或者@import规则来引用这个文件。

首先在外部新建.css后缀的文件,里面书写css样式。示例:

/* style.css 文件样式 */
h1 {color: red;font-size: 20px;
}

主界面引用:

  <!-- link标签引入 --><!-- <link rel="stylesheet" href="./css/style.css"> --><style>/* 内部样式中使用@import引入(不推荐用于 HTML 文件,可以在.css文件中引入) */@import url("./css/style.css");</style>

3.2 内部样式表(style标签)

内部样式表是在 HTML 文档的<head>标签内使用<style>标签来定义 CSS 规则。这些规则只适用于当前的 HTML 文档。

<style>h1 {color: red;font-size: 20px;}
</style>

3.3 行内样式表(内联样式)

内联样式是直接在 HTML 元素的style属性中添加 CSS 规则。这种方式将样式直接应用于特定的元素,优先级非常高。

<h1 style="color: red;font-size: 20px;">h1标题</h1>

3.4 总结

  1. 外联样式
    1. 优点:实现样式和内容完全分离,HTML 文件更简洁专注于结构。多个 HTML 文件可共享,提高代码复用性和可维护性,修改样式表可影响所有引用页面。
    2. 缺点:需要额外管理样式表文件,文件丢失或路径错误会导致样式加载失败,开发时可能需同时打开 HTML 和 CSS 文件编辑,对简单页面稍复杂,但大型项目中优势更明显。
  2. 内部样式表
    1. 优点:能集中管理文档内的样式,较内联样式可维护性有所提高。
    2. 缺点:多个 HTML 页面共享样式时,需在各页面重复编写,会导致代码冗余,大型项目中使 HTML 文件臃肿,不利于代码组织管理。
  3. 内联样式
    1. 优点:简单直接,可快速对个别元素设置样式。
    2. 缺点:可维护性差,样式代码在 HTML 元素中,若多个元素需相同样式,代码会重复,不符合样式和内容分离原则。

在实际的网页开发中,外部样式表是最常用的引入方式,因为它最符合代码的组织和复用原则,能够提高开发效率和代码的可维护性。

四、盒模型

CSS 盒模型是网页布局的基础概念,它把每个 HTML 元素看作一个矩形盒子。这个盒子由内容(content)、内边距(padding)、边框(border)和外边距(margin)组成。

div {width: 300px;height: 150px;margin: 20px;padding: 10px;border: 4px solid red;
}

在这里插入图片描述

如上图蓝色部分就是代表元素内容所占宽高,绿色部分代表内容区与边框之前的间距padding,黄色部分代表元素边框,橙色部分代表元素与其他周围元素之间的间距

4.1 内容区(Content)

内容区是盒模型的核心部分,用于显示元素包含的文本、图像等实际内容.

在上方例子中,widthheight属性分别设置了<div>元素内容区的宽度为 300px 和高度为 150px。

4.2 内边距(Padding)

内边距是内容区和边框之间的空间。它可以用于在内容和边框之间添加空白,使内容不会直接贴在边框上,增强了内容的可视性和布局的美观性。

在上面的例子中,设置了四个方向上下左右边距都为10px;还有其他几种书写方式:

  1. padding: 1px 2px 3px 4px;(对应上、右、下、左不同的边距大小)
  2. padding: 1px 2px 3px;(对应上、左右、下不同的边距大小)
  3. padding: 1px 3px;(对应上下、左右不同的边距大小)
  4. 或者单独配置边距:padding-leftpadding-top

4.3 边框(Border)

边框是围绕在内边距和内容区外部的线条,用于划分元素的边界。边框可以有不同的样式、宽度和颜色。

border是一个简写方式:border:边框宽度 边框样式 边框颜色;

还可以拆开分别配置:

  1. border-width: 边框宽度
  2. border-style: 边框样式,如solid(实线)、dashed(虚线)、dotted(点线)等)
  3. border-color: 边框颜色(颜色英文或颜色进制,rgb)

还可以单独设置某一边的边框:border-leftborder-left-color

在上面的例子中,只是单纯的设置了四个边为4px的红色实线边框

4.4 外边距(Margin)

边距是元素边框与相邻元素之间的空间。它用于控制元素之间的间距,使页面布局更加合理。

在上面的例子中,设置了四个方向上下左右边距都为20px;还有其他几种书写方式:

  1. margin: 1px 2px 3px 4px;(对应上、右、下、左不同的边距大小)
  2. margin: 1px 2px 3px;(对应上、左右、下不同的边距大小)
  3. margin: 1px 3px;(对应上下、左右不同的边距大小)
  4. 或者单独配置边距:margin-leftmargin-top

4.5 标准盒模型与怪异盒模型

标准盒模型:在标准盒模型中,元素的宽度(width)和高度(height)只包括内容区域的大小,不包括内边距和边框。 如上图:

  1. 元素实际在页面所占宽度=宽度300(width)+ 内边距10*2(padding) + 边框4*2(border);
  2. 元素实际在页面所占高度=高度150(width)+ 内边距10*2(padding) + 边框4*2(border);

怪异盒模型(IE 盒模型):在怪异盒模型中,元素的宽度(width)和高度(height)是指内容区、内边距和边框的总和,外边距不包括在内。可以通过box - sizing属性来切换盒模型。

div {width: 300px;height: 150px;margin: 20px;padding: 10px;border: 4px solid red;box-sizing: border-box;
}

经过上方样式配置后,就会将元素更改为怪异盒模型:

  1. 元素实际在页面所占宽度300=宽度(width)+ 内边距(padding) + 边框(border);
  2. 元素实际在页面所占高度150=高度(width)+ 内边距(padding) + 边框(border);

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

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

相关文章

从0开始机器学习--Day27--主成分分析方法

主成分分析方法(Principal components analysis) 在降维算法中&#xff0c;比较普遍的是使用主成分分析方法&#xff08;PCA&#xff09; PCA算法简单示例 如图&#xff0c;假设我们有一个二维的特征&#xff0c;想要将其降为一维&#xff0c;简单的方法是寻找一条直线&#…

电子工牌独立双通道定向拾音方案(有视频演示)

现在一些行业的客服人员在面对客户都要求使用电子工牌分别记录客服和顾客的声音,我们利用双麦克风阵列双波束拾音的方案设计了一个电子工牌方案.可以有效分别记录客服和顾客的声音. 方案思路: 我们采用了一个双麦阵列波束拾音的模块A-59,此模块可以利用2个麦克风组成阵列进行双…

Qt Quazip压缩解压实例

qt 中Quazip封装了zip压缩解压操作类&#xff0c;windows编译出dll,lib 最简单的使用示例如下&#xff1a;

小程序19-微信小程序的样式和组件介绍

在小程序中不能使用 HTML 标签&#xff0c;也就没有 DOM 和 BOM&#xff0c;CSS 也仅支持部分选择器 小程序提供了 WXML 进行页面结构的编写&#xff0c;WXSS 进行页面的样式编写 WXML 提供了 view、text、image、navigator等标签构建页面结构&#xff0c;小程序中标签称为组件…

HCIP-HarmonyOS Application Developer 习题(二十二)

1、用户将手机导航迁移至智能手表之后&#xff0c;智能手表如果需要获取手机传过来的数据&#xff0c;从下列哪个方法中获取? A、onCompleteContinuation() B、onStartContinuation() C、onRestoreData() D、onSaveData() 答案&#xff1a;C 分析&#xff1a;FA发起迁移后&am…

动态规划-背包问题——[模版]完全背包问题

1.题目解析 题目来源 [模版]完全背包_牛客题霸_牛客 测试用例 2.算法原理 1.状态表示 与01背包相同&#xff0c;这里的完全背包也是需要一个二维dp表来表示最大价值&#xff0c;具体如下 求最大价值dp[i][j]:在[1,i]区间选择物品&#xff0c;此时总体积不大于j时的最大价值 求…

高效分支管理规范

一、目的 通过标准化的流程和最佳实践&#xff0c;确保代码组织清晰、版本控制高效、变更管理有序&#xff0c;从而提高软件开发的质量、效率和可维护性&#xff0c;支持团队协作和持续集成/持续部署流程&#xff0c;最终实现项目的长期成功和发展 二、分支命名规范 简洁明了…

前后端分离练习(云客项目)

这几天学习了一点前端的开发&#xff0c;后面通过这个小项目来整理开发的过程&#xff0c;参考的是动力节点的动力云客这个项目&#xff0c;大家有兴趣可以去看一下视频&#xff0c;我更多的是学习了它的前端开发&#xff0c;后端我是用自己的方式来的&#xff0c;那么开始今天…

linux001.在Oracle VM VirtualBox中ubuntu虚拟系统扩容

1.打开终端切换到virtualBox安装目录 2.输入命令扩容 如上终端中的代码解释&#xff1a; D:\Program Files\Oracle\VirtualBox>.\VBoxManage modifyhd D:\ubuntu18.04\Ubuntu18.04\Ubuntu18.04.vdi --resize 40960如上代码说明&#xff1a;D:\Program Files\Oracle\Virtual…

小版本大不同 | Navicat 17 新增 TiDB 功能

近日&#xff0c;Navicat 17 迎来了小版本更新。此次版本新增了对 PingCap 公司的 TiDB 开源分布式关系型数据库的支持&#xff0c;进一步拓展了 Navicat 的兼容边界。即日起&#xff0c;Navicat 17 所有用户可免费升级至最新版本&#xff0c;通过 Navicat 工具实现 TiDB 数据库…

Flutter:key的作用原理(LocalKey ,GlobalKey)

第一段代码实现的内容&#xff1a;创建了3个块&#xff0c;随机3个颜色&#xff0c;每次点击按钮时&#xff0c;把第一个块删除 import dart:math; import package:flutter/material.dart; import package:flutter_one/demo.dart;void main() {runApp(const App()); }class App…

10款PDF翻译工具的探索之旅:我的使用经历与工具特色!!

在如今的时代&#xff0c;PDF文件已经成为我们工作、学习和生活中不可或缺的一部分。但是&#xff0c;当遇到一些非母语或陌生语言的PDF文档时&#xff0c;这要怎么办呀&#xff01;这时候翻译工具就显得尤为重要了。这也是我所遇到过的难题&#xff0c;现在我将与大家分享几款…

L11.【LeetCode笔记】有效的括号

目录 1.题目 2.分析 理解题意 解决方法 草稿代码 ​编辑 逐一排错 1.当字符串为"["时,分析代码 2.当字符串为"()]"时,分析代码 正确代码(isValid函数部分) 提交结果 3.代码优化 1.题目 https://leetcode.cn/problems/valid-parentheses/descri…

创建vue插件,发布npm

开发步骤&#xff1a;1.创建一个vue项目&#xff0c;2.开发一个组件。 3.注册成插件。 4.vite和package.json配置。5.发布到npm &#xff11;.创建一个vue项目 npm create vuelatest 生成了vue项目之后&#xff0c;得到了以下结构。 在src下创建个plugins目录。用于存放开发的…

Android OpenGL ES详解——实例化

目录 一、实例化 1、背景 2、概念 实例化、实例数量 gl_InstanceID 应用举例 二、实例化数组 1、概念 2、应用举例 三、应用举例——小行星带 1、不使用实例化 2、使用实例化 四、总结 一、实例化 1、背景 假如你有一个有许多模型的场景&#xff0c;而这些模型的…

MyBatis-Plus的IPage分页total不正确问题

场景&#xff1a; 执行了一条连接查询的sql语句&#xff0c;进行分页后&#xff0c;total不正确问题。如下图&#xff1a; 分析&#xff1a; 分页部分代码如下&#xff1a; String sql searchSqlBuilderInstance.generateSql(); Page page new Page(commonSearchDTO.getPage…

【LeetCode】【算法】53. 最大子数组和

LeetCode 53. 最大子数组和 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。子数组是数组中的一个连续部分。 思路 思路&#xff1a;动态规划秒了 具体递推式如…

每日八股——JVM组成

直接上图 JVM&#xff08;Java虚拟机&#xff09;是运行Java字节码的虚拟机。它主要由以下几个部分组成&#xff1a; 1. 类加载器&#xff08;ClassLoader&#xff09; 负责加载class文件到内存中&#xff0c;并生成对应的Class对象。类加载器分为启动类加载器、扩展类加载器…

Java项目实战II基于微信小程序的私家车位共享系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在城市化进…

Linux(CentOS 7) yum一键安装mysql8

1、通过yum安装 &#xff08;1&#xff09;下载mysql 在Linux找个地方输入以下命令 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm &#xff08;2&#xff09;安装mysql yum 仓库配置文件 [rootVM-8-15-centos ~]# sudo rpm -Uvh mysql80-c…