《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 规则的大师。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

腾讯云4核8G服务器最大能承载多少用户在线?12M带宽

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线&#xff1f;通用型-4核8G-180G-2000G&#xff0c;2000GB月流量&#xff0c;系统盘为180GB SSD盘&#xff0c;12M公网带宽&#xff0c;下载速度峰值为1536KB/s&#xff0c;即1.5M/秒&#xff0c;假设网站内页平均大小为60KB…

[架构之路-275]:五张图向你展现软件开发不仅仅是编码,而是一个庞大的系统工程

目录 一、软件开发是组织架构的一部分&#xff0c;是为业务服务的 二、软件开发是一个系统工程&#xff0c;需要组织各种组织内的资源 三、目标软件是一个复杂的系统 四、软件开发过程本身是一个系统工程 五、目标软件的测试验证是一个系统工程 一、软件开发是组织架构的一…

lv14 led驱动设备树版本 13

led驱动代码中无法给其他开发板重用&#xff0c;编程依据不清晰&#xff0c;如下&#xff0c;修改后尽量在代码中不直接修改寄存器。 把编程依据写到设备树中 一、起源 减少垃圾代码 减轻驱动开发工作量 驱动代码和设备信息分离 参考Open Fireware设计 用来记录硬件平台中…

数据结构-->线性表-->单链表

链表的定义 链表&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 与顺序表不同的是&#xff0c;链表里的每节都是独立申请下来的空间&#xff0c;我们称之为“节点、结点”。 节点的组成主要由…

机器翻译后的美赛论文怎么润色

美赛论文的语言表达一直是组委会看重的点&#xff0c;清晰的思路和地道的语言在评审中是重要的加分项。 今天我们就来讲讲美赛论文的语言问题。 我相信有相当一部分队伍在打美赛的时候&#xff0c;出于效率的考量&#xff0c;都会选择先写中文论文&#xff0c;再机翻成英文。 …

ChatGPT4 教你如何完成SQL的实践应用

对数据库的各项应用与操作都离不开SQL来对数据进行增删改查。 例如 &#xff1a; 有一张某公司职员信息表如下&#xff1a; 需求1&#xff1a;在公司职员信息表中&#xff0c;请统计各部门&#xff0c;各岗位下的员工人数。 如果这个SQL语句不会写或者不知道怎么操作可以交给…

Linux运行级别 | 管理Linux服务

Linux运行级别 级别&#xff1a; 0关机1单用户2多用户但是不运行nfs网路文件系统3默认的运行级别&#xff0c;给一个黑的屏幕&#xff0c;只能敲命令4未使用5默认的运行级别&#xff0c;图形界面6重启切换运行级别&#xff1a; init x管理Linux服务 systemctl命令&#xf…

【北邮鲁鹏老师计算机视觉课程笔记】02 filter

1 图像的类型 二进制图像&#xff1a; 灰度图像&#xff1a; 彩色图像&#xff1a; 2 任务&#xff1a;图像去噪 噪声点让我们看得难受是因为噪声点与周边像素差别很大 3 均值 滤波核 卷积核 4 卷积操作 对应相乘再累加起来 卷积核记录了权值&#xff0c;把权值套到要卷积…

vivo发布2023 年度科技创新;阿里全新AI代理,可模拟人类操作手机

vivo 发布 2023 年度十大产品技术创新 近日&#xff0c;vivo 发布了「2023 年度科技创新」十大产品技术创新榜单&#xff0c;并将这些技术分为了 4 个板块。 「四大蓝科技」为 vivo 在去年推出的全新技术品牌&#xff0c;涵盖蓝晶芯片技术栈、蓝海续航系统、蓝心大模型、蓝河操…

基于springboot会员制医疗预约服务管理信息系统源码和论文

会员制医疗预约服务管理信息系统是针对会员制医疗预约服务管理方面必不可少的一个部分。在会员制医疗预约服务管理的整个过程中&#xff0c;会员制医疗预约服务管理系统担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类的管理系统也在不断改进。本课题所设计…

sqlmap 使用笔记(kali环境)

sqlmap使用 kali环境 -u或–url 直接扫描单个路径 //如果需要登录要有cookie sqlmap -u "http://10.0.0.6:8080/vulnerabilities/sqli/?id1" --cookie"PHPSESSIDisgvp2rv4uts46jbkb9bouq6ir; securitylow"-m 文件中保存多个url&#xff0c;工具会依次扫…

93 log4j-slf4j-impl 搭配上 log4j-to-slf4j 导致的 StackOverflow

前言 呵呵 最近想要 做一个 mongo 低版本的客户端读取高版本的服务端传递过来的数据造成的一个错误的时候, 出现了这样的问题 引入了 mongo-java-driver 之后, 使用相关 api 的时候会触发 com.mongo.internal.connection.BaseCluser 的初始化, 其依赖的 Loggers 间接的依赖…

解决MapboxGL的Popup不支持HTMLDiv元素的问题

解决MapboxGL的Popup不支持HTMLDiv元素的问题 官网给出的文档是不支持HTMLDivElement的&#xff0c;只支持HTML标签。 如果单纯的只显示字符串&#xff0c;那就没问题&#xff0c;如果想在Popup中使用更强大的功能&#xff0c;此时就不行了&#xff0c;下面是源码的一部分显示…

python从入门到精通(十):python爬虫的BeautifulSoup4

python爬虫的BeautifulSoup4 BeautifulSoup4导入模块解析文件创建对象python解析器beautifulsoup对象的种类Tag获取整个标签获取标签里的属性和属性值Navigablestring 获取标签里的内容BeautifulSoup获取整个文档Comment输出的内容不包含注释符号BeautifulSoup文档遍历Beautifu…

金融信贷风控系统设计

前言 近一年多以来在金融行业负责风控系统&#xff0c;根据自己工作中的经验&#xff0c;写下这篇文章。既是对自己在风控领域工作的总结&#xff0c;也是给刚入行和准备入行的朋友打个样&#xff0c;希望能有所帮助。 为什么要有风控系统 记得 2016 年信贷行业的发展形势还…

JavaScript综合练习4

JavaScript 综合练习 4 1. 案例演示 2. 代码实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title&…

[职场] 如何通过运营面试_1 #笔记#媒体#经验分享

如何通过运营面试 盈利是公司的事情&#xff0c;而用户就是你运营的事情。你需要彻底建立一个庞大而有效的用户群&#xff0c;这样才能让你们的公司想盈利就盈利&#xff0c;想战略就战略&#xff0c;想融资就融资。 一般从事运营的人有着强大的自信心&#xff0c;后台数据分析…

M1 Mac使用SquareLine-Studio进行LVGL开发

背景 使用Gui-Guider开发遇到一些问题,比如组件不全。使用LVGL官方的设计软件开发 延续上一篇使用的基本环境。 LVGL项目 新建项目 选择Arduino的项目,设定好分辨率及颜色。 设计UI 导出代码 Export -> Create Template Project 导出文件如图 将libraries下的ui文…

微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 目录 前言 通过代码实现限流 定义资源 通过代码定义资源 通过注解方式定义资源 定义限流规则 通过…

第三章:光效果产生立体感

本文是《从0开始图形学》笔记的第三章&#xff0c;上一章中我们已经将箱子的整个形状“找出来”了&#xff0c;但是还仅仅只是一个色块区域。这一节我们就利用光将整个箱子的立体感凸显出来。涉及到布林冯光照模型以及向量的点乘运算。 概念解说 这里需要用到“布林冯”光照模…