《CSS 简易速速上手小册》第1章:CSS 基础入门(2024 最新版)

在这里插入图片描述

文章目录

  • 1.1 CSS 语法和选择器:挑选你的画笔
    • 1.1.1 基础知识
    • 1.1.2 重点案例:创建一个响应式导航菜单
    • 1.1.3 拓展案例 1:为特定链接添加图标
    • 1.1.4 拓展案例 2:创建一个简单的问答折叠面板
  • 1.2 盒模型的基础:构建你的乐高城堡
    • 1.2.1 基础知识
    • 1.2.2 重点案例:创建一个卡片布局
    • 1.2.3 拓展案例 1:垂直居中一个元素
    • 1.2.4 拓展案例 2:创建带有内边距和外边距的流式布局
  • 1.3 级联、继承和特异性:谁是场上的老大
    • 1.3.1 基础知识
    • 1.3.2 重点案例:个性化按钮样式
    • 1.3.3 拓展案例 1:解决样式冲突
    • 1.3.4 拓展案例 2:利用继承简化 CSS

1.1 CSS 语法和选择器:挑选你的画笔

在 CSS 的世界里,语法和选择器是你用来创造和实现想象中的设计的基本工具。理解它们,就像是学会了掌握画笔,能让你在网页这幅画布上自由地挥洒。

1.1.1 基础知识

  • CSS 语法:CSS 的基本结构由选择器和声明块组成。选择器用于指定我们要样式化的 HTML 元素,而声明块则包含了一个或多个声明,用大括号 {} 包围。每个声明由一个属性和一个值组成,属性和值之间用冒号 : 分隔,多个声明之间用分号 ; 分隔。例如:
p {
  color: red;
  font-size: 16px;
}
  • 类型选择器:直接通过标签名来选择元素,如 pdivh1 等。
  • 类选择器:通过元素的 class 属性值来选择元素,前面加点 . 表示,如 .classname
  • ID 选择器:通过元素的 id 属性值来选择元素,前面加 # 表示,如 #idname
  • 属性选择器:根据元素的属性及属性值来选择元素,如 [type="text"]
  • 伪类选择器:用于定义元素的特殊状态,如 :hover:focus 等。
  • 伪元素选择器:用于样式化元素的特定部分,如 ::before::after

1.1.2 重点案例:创建一个响应式导航菜单

想象你正在为一个网站设计导航栏。你需要一个横向布局的导航菜单,当用户鼠标悬停时,菜单项的背景色变化,并且在小屏幕设备上自动转换为纵向布局。

  • HTML 结构
<nav class="navbar">
  <a href="#" class="nav-item">首页</a>
  <a href="#" class="nav-item">关于我们</a>
  <a href="#" class="nav-item">服务</a>
  <a href="#" class="nav-item">联系方式</a>
</nav>
  • CSS 样式
.navbar {
  display: flex;
  justify-content: space-around;
  background-color: #333;
}

.nav-item {
  color: white;
  text-decoration: none;
  padding: 15px 20px;
}

.nav-item:hover {
  background-color: #ddd;
  color: black;
}

@media (max-width: 600px) {
  .navbar {
    flex-direction: column;
  }
}

在这个案例中,我们使用类选择器 .navbar.nav-item 来样式化导航栏和菜单项。伪类选择器 :hover 用于定义鼠标悬停状态,而媒体查询 @media 用于在屏幕宽度小于 600px 时改变导航栏的布局。

1.1.3 拓展案例 1:为特定链接添加图标

假设你想为所有指向外部链接的 a 标签自动添加一个外链图标,提示用户这将打开一个新窗口。

  • CSS 样式
a[href^="http"]:not([href*="yourwebsite.com"])::after {
  content: "⇗";
  padding-left: 5px;
}

这里我们使用属性选择器 a[href^="http"] 来选择所有 href 属性值以 “http” 开头的 a 标签,且通过 :not([href*="yourwebsite.com"]) 排除了指向你自己网站的链接。伪元素 ::after 用于在

这些链接文本之后添加一个上箭头图标。

1.1.4 拓展案例 2:创建一个简单的问答折叠面板

想要在常见问题(FAQ)页面上实现一个简单的折叠效果,当点击问题时,相应的答案可以展开或隐藏。

  • HTML 结构
<div class="faq-item">
  <h2 class="faq-question">什么是 CSS ?</h2>
  <p class="faq-answer">CSS 是用于样式化网页的语言。</p>
</div>
  • CSS 样式
.faq-answer {
  display: none;
}

.faq-question:hover + .faq-answer {
  display: block;
}

在这个案例中,我们使用 :hover 伪类选择器来实现当鼠标悬停在问题上时显示答案。这是一个简单的实现方式,展示了选择器和伪类如何用于创建交互式元素。

通过这些案例,我们可以看到 CSS 选择器和语法的强大之处,它们让我们能够以几乎无限的方式来创造和控制网页的每个细节。继续实验,挑战自己,很快你就会发现自己能够轻松地将任何设计想法转化为现实。

在这里插入图片描述


1.2 盒模型的基础:构建你的乐高城堡

CSS 盒模型是网页布局的基石,理解它就像是掌握了搭建任何结构的乐高积木。每个元素都被视为一个盒子,这个盒子包括了内容(content)、内边距(padding)、边框(border)、和外边距(margin)。掌握盒模型意味着你可以精确地控制元素的大小、间距以及它们之间的关系。

1.2.1 基础知识

  • 内容(Content):这是盒子的主体部分,包括文本和图片等。
  • 内边距(Padding):内容与边框之间的空间。
  • 边框(Border):围绕内边距和内容的边线。
  • 外边距(Margin):盒子与其他盒子之间的空间。

重要属性:

  • box-sizing:控制盒模型的计算方式。默认为 content-box,表示盒子的宽高只包括内容区域;设为 border-box 时,盒子的宽高还包括了边框和内边距。

1.2.2 重点案例:创建一个卡片布局

假设你需要为一个网站创建一个简单的卡片布局,每个卡片显示一篇文章的概览,包括一个图片、标题和简介。

  • HTML 结构
<div class="card">
  <img src="thumbnail.jpg" alt="Article Thumbnail" class="card-img">
  <h3 class="card-title">文章标题</h3>
  <p class="card-desc">这是一篇非常有趣的文章。</p>
</div>
  • CSS 样式
.card {
  box-sizing: border-box;
  width: 300px;
  border: 1px solid #ccc;
  padding: 20px;
  margin: 10px;
  box-shadow: 0 0 10px rgba(0,0,0,0.1);
}

.card-img {
  width: 100%;
  margin-bottom: 15px;
}

.card-title, .card-desc {
  margin: 0 0 10px 0;
}

这个案例展示了如何使用盒模型的各个部分来创建一个有吸引力的卡片布局。box-sizing: border-box; 确保了元素的宽度包含了内容、内边距和边框,这样可以更容易地控制卡片的总体大小。

1.2.3 拓展案例 1:垂直居中一个元素

垂直居中是一个常见的布局需求。使用盒模型的特性,我们可以轻松实现这一点,特别是当我们不知道内容的具体高度时。

  • HTML 结构
<div class="centered-container">
  <p class="centered-content">我是垂直居中的内容!</p>
</div>
  • CSS 样式
.centered-container {
  display: flex;
  height: 200px;
  align-items: center;
  justify-content: center;
}

.centered-content {
  padding: 20px;
  background-color: lightgrey;
}

通过使用 Flexbox(一个 CSS3 的布局模式),我们可以很容易地实现垂直和水平居中,而盒模型的 paddingbackground-color 属性让内容更加突出。

1.2.4 拓展案例 2:创建带有内边距和外边距的流式布局

流式布局是响应式设计的关键元素,允许内容随着浏览器窗口的大小变化而自适应。

  • HTML 结构
<div class="container">
  <div class="box">Box 1</div>
  <div class="box">Box 2</div>
  <div class="box">Box 3</div>
</div>
  • CSS 样式
.container {
  display: flex;
  flex-wrap: wrap;
}

.box {
  flex: 1;
  min-width: 100px;
  margin: 10px;
  padding: 20px;
  background-color: lightcoral;
}

在这个案例中,.container 使用了 Flexbox 的 flex-wrap: wrap; 属性,使得 .box 元素可以在容器宽度不足以并排显示所有元素时自动换行。每个 .boxmarginpadding,确保了内容的可读性和美观。

通过这些案例,我们可以看到盒模型是如何在实际的网页布局中发挥作用的。无论是创建卡片布局、实现元素的居中,还是设计响应式的流式布局,掌握盒模型都是实现这些布局的关键。练习和实验这些案例,让你更加熟悉盒模型的各个方面,为构建更复杂的布局打下坚实的基础。

在这里插入图片描述


1.3 级联、继承和特异性:谁是场上的老大

在 CSS 的世界里,了解级联(Cascading)、继承(Inheritance)和特异性(Specificity)的规则至关重要,因为它们决定了哪些样式将被应用到你的网页元素上。这些规则就像是网页设计的游戏规则,掌握了它们,你就能成为场上的老大。

1.3.1 基础知识

  • 级联(Cascading):CSS 的全称是“Cascading Style Sheets”,其中“Cascading”指的是多个样式表的样式可以叠加应用,而最终样式的决定遵循一定的优先级规则。
  • 继承(Inheritance):某些 CSS 属性会从父元素继承到子元素,例如字体和颜色,这意味着你不需要在每个元素上重复相同的样式声明。
  • 特异性(Specificity):当多条规则应用于同一个元素时,CSS 通过特异性来决定使用哪条规则。特异性是通过计算选择器类型来决定的,通常:内联样式 > ID 选择器 > 类/伪类/属性选择器 > 元素/伪元素选择器。

1.3.2 重点案例:个性化按钮样式

假设你在设计一个网站,需要为不同的按钮应用基础样式和个性化样式。

  • HTML 结构
<button class="btn">普通按钮</button>
<button class="btn btn-primary">主要按钮</button>
  • CSS 样式
/* 基础按钮样式 */
.btn {
  padding: 10px 20px;
  border: 1px solid transparent;
  background-color: #f0f0f0;
  color: #333;
}

/* 主要按钮样式 */
.btn-primary {
  background-color: #007bff;
  color: #fff;
}

/* 悬停状态 */
.btn:hover {
  opacity: 0.8;
}

在这个案例中,.btn.btn-primary 类定义了按钮的基础和主要样式。由于 .btn-primary 有更高的特异性(同为类选择器,但它是直接应用于目标元素),它的样式会覆盖 .btn 的同名属性。悬停状态的样式通过伪类 :hover 添加,展示了级联的概念,即后来的规则可以增强或覆盖之前的规则。

1.3.3 拓展案例 1:解决样式冲突

在一个大型项目中,你可能遇到由于不同 CSS 文件中的规则冲突导致的样式问题。

  • HTML 结构
<p class="text-warning">警告信息</p>
  • CSS 样式
/* 来自第一个样式表 */
.text-warning {
  color: yellow;
}

/* 来自第二个样式表 */
.text-warning {
  color: red;
}

为了解决这个冲突,你可以使用特异性原则,通过增加选择器的特异性来确保正确的样式被应用:

body .text-warning {
  color: red;
}

通过前置 body,增加了规则的特异性,确保文本显示为红色。

1.3.4 拓展案例 2:利用继承简化 CSS

设想你需要设置一个页面的基础字体样式,你不想在每个文本元素上重复设置字体样式。

  • HTML 结构
<div class="content">
  <p>这是一段示例文本。</p>
  <p>这是另一段示例文本。</p>
</div>
``

`

- **CSS 样式**:

```css
.content {
  font-family: 'Arial', sans-serif;
  color: #333;
}

在这个案例中,.content 的字体和颜色样式会被它的所有子元素继承,这样你就不需要在每个 <p> 标签上单独设置字体和颜色了,展示了继承的强大用处。

通过这些案例,你可以看到级联、继承和特异性在 CSS 设计中的实际应用。掌握这些概念,可以帮助你更有效地解决样式冲突,优化你的 CSS 代码,并确保你的网页看起来正如你所期望的那样。练习这些案例,让自己成为掌控 CSS 规则的大师。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【RabbitMQ(二)】:Exchange 详解 | Message Convert 消息转换器

文章目录 03. 使用 Java 代码去操控 RabbitMQ3.1 快速入门3.1.1 创建父子项目3.1.2 编写代码 3.2 Work 模型3.3 RabbitMQ 中的三类交换机3.3.1 Fanout 扇出交换机3.3.2 Direct 交换机3.3.3 Topic 交换机 3.4 声明队列交换机3.4.1 方式一&#xff1a;书写 Config 类3.4.2 方式二…

【软件使用】【edge】如何让edge的某个网页作为应用安装

【背景】 有些常用网页希望用双击快捷方式的形式打开更加效率&#xff0c;我的浏览器主要是edge&#xff0c;研究了两种方法来实现这个需求。 【Edge自带方法】 点击Edge的右上角三点水-》应用-》将此站点作为应用安装。 点击安装&#xff0c;可以选择是否加到开始屏幕等。 …

Linux 从日志中抽取信息,批量生成SQL语句并执行

这里写目录标题 一. 需求分析二. 从日志中抽取出指定字段&#xff0c;并切分为若干个子文件三. 生成查询执行计划四. 生成查询的SQL语句五. 检查并执行 一. 需求分析 有如下日志文件&#xff0c;假设日志文件中有10000条数据&#xff0c;要求将全部的TRANSACTIONID抽取出来&am…

vue3 之 商城项目—二级分类

二级分类功能描述 配置二级路由 准备组件模版 <script setup></script><template><div class"container "><!-- 面包屑 --><div class"bread-container"><el-breadcrumb separator">"><el-bre…

python coding with ChatGPT 打卡第19天| 二叉树:合并二叉树

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树&#xff1a;理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树&#xff1a;翻转…

在虚拟机上完成Centos安装

Linux学习和使用 前言如何安装Centos初始化操作 使用VMware备份操作系统快照克隆 内容总结参考链接 本人介绍:2023年全国大学生数学建模竞赛国家二等奖,2022年蓝桥杯省二等奖,这里是一个和你一起不断努力,不断前进的程序猿一枚 前言 简单介绍一下本片文章将会讲到的内容:本章节…

关于创建vue项目报错command failed: npm install --loglevel error

一、首先 在这个目录下有个文件叫.vuerc 二、其次 进去之后把里面的"useTaobaoRegistry": false,修改下&#xff0c;我之前是true&#xff0c;后来改成了false才成功。

【大厂AI课学习笔记】【1.6 人工智能基础知识】(1)人工智能、机器学习、深度学习之间的关系

6.1 人工智能、机器学习与深度学习的关系 必须要掌握的内容&#xff1a; 如上图&#xff1a;人工智能>机器学习>深度学习。 机器学习是人工智能的一个分支&#xff0c;该领域的主要研究对象是人工智能&#xff0c;特别是如何在经验学习中改进具体算法的性能。 深度学习…

【MySQL进阶之路】生产案例:数据库无法连接,Too many connections

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

【leetcode】965. 单值二叉树

题目链接 965. 单值二叉树 bool isUnivalTree(struct TreeNode* root) {// if (root->left ! NULL && root->right ! NULL) {// return root->val root->left->val// && root->val root->right->val// && isUnivalTr…

算法学习——LeetCode力扣二叉树篇3

算法学习——LeetCode力扣二叉树篇3 116. 填充每个节点的下一个右侧节点指针 116. 填充每个节点的下一个右侧节点指针 - 力扣&#xff08;LeetCode&#xff09; 描述 给定一个 完美二叉树 &#xff0c;其所有叶子节点都在同一层&#xff0c;每个父节点都有两个子节点。二叉树…

【开源】JAVA+Vue.js实现衣物搭配系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 衣物档案模块2.2 衣物搭配模块2.3 衣物收藏模块 三、系统设计3.1 用例设计3.2 E-R图设计3.3 数据库设计3.3.1 衣物档案表3.3.2 衣物搭配表3.3.3 衣物收藏表 四、系统实现4.1 登录页4.2 衣物档案模块4.3 衣物搭配模块4.4…

C语言每日一题(54)对称二叉树

力扣网 101 对称二叉树 题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提…

国际物流数字化运输方式选择指南 | 箱讯科技

国际物流涉及多种运输方式&#xff0c;每种方式都有其独特的优势和适用场景。选择合适的运输方式对于确保货物安全、及时到达目的地并控制成本至关重要。以下是对六种主要国际运输方式的简要介绍和选择建议&#xff1a; 国际快递&#xff1a;适用于小件、高价值或急需的货物。…

游戏服务器租用价格表_TOP3费用对比

游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;华为云26元&#xff0c;游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选&#xff0c;游戏专业服务器公网带宽10M、12M、15M…

python+django人力资源管理系统7w5x3

技术栈 后端&#xff1a;python 前端&#xff1a;vue.jselementui 框架&#xff1a;django Python版本&#xff1a;python3.7 数据库&#xff1a;mysql5.7 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm .设计框架&#xff1a;Vue 1. 表现层&#xff1a;写多…

微软 CMU - Tag-LLM:将通用大语言模型改用于专业领域

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 论文地址&#xff1a;https://arxiv.org/abs/2402.05140 Github 地址&#xff1a;https://github.com/sjunhongshen/Tag-LLM 大语言模型&#xff08…

vue3初识

目录 一、前言二、主观感受三、vue3初探 原文以及该系列教程文章后续可点击这里查看&#xff1a;vue初识 一、前言 Vue.js是一款流行的前端框架&#xff0c;最初由尤雨溪&#xff08;Evan You&#xff09;于2014年创建&#xff0c;非常的年轻。官网为vue3&#xff0c; 但要注…

Java集合 Collection接口

这里写目录标题 集合Collection接口创建一个性表增加元素删除元素修改元素判断元素遍历集合实例判断元素是否存在 集合 Java中的Collection接口是集合类的一个顶级接口&#xff0c;它定义了一些基本的操作&#xff0c;如添加、删除、查找等。Collection接口主要有以下几个常用…

【数据结构与算法】【小白也能学的数据结构与算法】迭代算法专题

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…