《CSS 简易速速上手小册》第7章:CSS 预处理器与框架(2024 最新版)

在这里插入图片描述

文章目录

  • 7.1 Sass:更高效的 CSS 编写
    • 7.1.1 基础知识
    • 7.1.2 重点案例:主题颜色和字体管理
    • 7.1.3 拓展案例 1:响应式辅助类
    • 7.1.4 拓展案例 2:深色模式支持
  • 7.2 Bootstrap:快速原型设计和开发
    • 7.2.1 基础知识
    • 7.2.2 重点案例:构建响应式导航栏
    • 7.2.3 拓展案例 1:使用卡片组件展示内容
    • 7.2.4 拓展案例 2:定制 Bootstrap 主题
  • 7.3 Tailwind CSS:实用主义的 CSS 框架
    • 7.3.1 基础知识
    • 7.3.2 重点案例:构建一个响应式导航菜单
    • 7.3.3 拓展案例 1:创建一个带有卡片布局的网格
    • 7.3.4 拓展案例 2:自定义按钮样式

7.1 Sass:更高效的 CSS 编写

Sass(Syntactically Awesome Stylesheets)是一个强大的CSS扩展语言,它引入了许多有用的特性,如变量、嵌套、混入(Mixins)、继承(Inheritance)、和模块(Modules),从而使得CSS的编写变得更加高效和可维护。

7.1.1 基础知识

  • 变量:允许你存储信息,比如颜色、字体堆或任何CSS值,使得你能够在整个样式表中重用它们。
  • 嵌套:让你能够在一个选择器内嵌套另一个选择器的样式,这样可以减少代码的重复并保持样式表的清晰。
  • 混入(Mixins):是可以重用的代码块,可以接受参数,使得你可以定义一组可复用的样式。
  • 继承(Inheritance):让你可以基于一个选择器集继承另一个的样式,有助于保持你的样式表的DRY(Don’t Repeat Yourself)。
  • 模块(Modules):Sass 1.23.0引入的新特性,允许你将Sass代码分割成更小的、可维护的片段。

7.1.2 重点案例:主题颜色和字体管理

假设你正在开发一个需要支持多种主题颜色和字体的网站,Sass的变量和混入可以使这项工作变得简单。

  • Sass 样式
// 定义变量
$primary-color: #007bff;
$secondary-color: #6c757d;
$font-stack: Helvetica, sans-serif;// 使用变量
body {font-family: $font-stack;color: $primary-color;
}.button {@mixin button-variant($color) {background-color: $color;border: 1px solid darken($color, 5%);&:hover {background-color: lighten($color, 5%);}}@include button-variant($primary-color);
}

通过定义颜色和字体变量以及按钮的混入,我们可以轻松地调整和应用主题样式。

7.1.3 拓展案例 1:响应式辅助类

利用Sass的混入和循环,我们可以创建一系列响应式辅助类,用于快速调整元素的间距、大小等。

  • Sass 样式
@mixin responsive-margin($property, $values) {@each $size, $value in $values {.m-#{$property}-#{$size} {margin-#{$property}: $value;}}
}@include responsive-margin(left, ('sm': 5px, 'md': 10px, 'lg': 15px));

这段代码通过混入和循环生成了一系列关于左边距的响应式辅助类。

7.1.4 拓展案例 2:深色模式支持

使用Sass的变量和条件语句,我们可以为网站添加深色模式支持,让用户在不同的视觉模式之间切换。

  • Sass 样式
$light-theme: (background: #fff,text: #000,
);$dark-theme: (background: #333,text: #fff,
);body {@if $theme == dark {background-color: map-get($dark-theme, background);color: map-get($dark-theme, text);} @else {background-color: map-get($light-theme, background);color: map-get($light-theme, text);}
}

这段代码通过条件语句切换深色和浅色主题的样式设置。

通过掌握Sass,你的CSS编写将变得更加高效、组织化和强大。无论是管理复杂的样式系统、创建可复用的UI组件,还是实现主题切换功能,Sass都能让这些任务变得轻而易举。让我们开始利用Sass的高级特性,为我们的网站设计注入更多的活力和灵活性吧!

在这里插入图片描述


7.2 Bootstrap:快速原型设计和开发

Bootstrap是一个广受欢迎的前端框架,专为快速开发响应式和移动优先的网页而设计。它提供了一套丰富的HTML、CSS和JavaScript组件,帮助设计师和开发者快速构建整洁、功能丰富的网站。

7.2.1 基础知识

  • 网格系统:Bootstrap的网格系统允许你通过行(rows)和列(columns)快速创建布局,确保布局在不同设备上的兼容性和响应性。
  • 组件库:Bootstrap提供了一系列预制的组件,如按钮、导航栏、模态窗口、卡片等,可以直接在项目中使用。
  • 实用工具类:提供了大量的实用工具类,用于调整边距、填充、字体大小、对齐方式等,提高开发效率。
  • 定制性:Bootstrap允许通过Sass变量和混入来定制框架,使得开发的网站符合品牌的视觉标准。

7.2.2 重点案例:构建响应式导航栏

假设你需要为网站创建一个响应式导航栏,Bootstrap的导航组件能够让这个任务变得轻而易举。

  • HTML 结构
<nav class="navbar navbar-expand-lg navbar-light bg-light"><a class="navbar-brand" href="#">Navbar</a><button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarNav"><ul class="navbar-nav"><li class="nav-item active"><a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a></li><li class="nav-item"><a class="nav-link" href="#">Features</a></li><!-- 更多导航项 --></ul></div>
</nav>

通过使用Bootstrap的导航栏组件,你可以快速实现一个在移动设备上友好的、可折叠的导航栏。

7.2.3 拓展案例 1:使用卡片组件展示内容

卡片组件是展示内容的理想选择,无论是产品、文章还是个人资料。

  • HTML 结构
<div class="card" style="width: 18rem;"><img src="..." class="card-img-top" alt="..."><div class="card-body"><h5 class="card-title">Card title</h5><p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p><a href="#" class="btn btn-primary">Go somewhere</a></div>
</div>

通过简单的HTML标记,Bootstrap使创建具有吸引力的卡片变得非常简单。

7.2.4 拓展案例 2:定制 Bootstrap 主题

定制Bootstrap以符合你的品牌标准是提升网站专业度的关键。

  • Sass 定制
// 自定义变量
$theme-colors: ("primary": #007bff,"success": #28a745,"info": #17a2b8
);// 引入Bootstrap
@import "node_modules/bootstrap/scss/bootstrap";

通过覆盖Bootstrap的默认变量,你可以创建一个独特且与品牌一致的主题,使网站在众多网站中脱颖而出。

Bootstrap为网站的快速原型设计和开发提供了强大的工具和资源。无论是通过使用预制的组件来加速开发,还是利用其灵活的网格系统和实用工具类来实现复杂的布局,Bootstrap都能帮助你有效地实现设计目标。掌握Bootstrap,让你的网页设计和开发工作更加高效和愉悦。

在这里插入图片描述


7.3 Tailwind CSS:实用主义的 CSS 框架

Tailwind CSS以其实用主义的设计哲学在前端开发者中获得了巨大的流行。它是一个功能类优先的CSS框架,提供了大量的实用工具类,使开发者能够通过组合这些类来构建复杂的设计,而无需离开HTML文档。这种方法旨在加快开发速度,同时保持样式的一致性和可维护性。

7.3.1 基础知识

  • 实用工具类:Tailwind 提供了成千上万的实用工具类,用于设置边距、颜色、字体大小、布局等,几乎可以控制元素的每一个样式方面。
  • 响应式设计:通过简单的类前缀,如 sm:, md:, lg:, xl:, 2xl:,可以轻松实现响应式设计。
  • 定制性:虽然Tailwind 提供了大量预设的样式,但它也支持高度定制。通过修改tailwind.config.js文件,开发者可以根据项目需求定制主题颜色、字体大小、断点等。
  • 无用CSS的清除:Tailwind 与PurgeCSS集成,可以自动移除未使用的CSS,确保最终构建的文件尽可能小。

7.3.2 重点案例:构建一个响应式导航菜单

使用Tailwind CSS构建一个响应式导航菜单,该菜单在小屏幕上隐藏,大屏幕上显示。

  • HTML 结构
<div class="flex flex-wrap justify-between items-center"><a href="#" class="text-xl text-gray-800">Logo</a><nav class="hidden md:flex space-x-4"><a href="#" class="text-gray-600 hover:text-gray-800">Home</a><a href="#" class="text-gray-600 hover:text-gray-800">About</a><!-- 更多链接 --></nav>
</div>

通过使用Tailwind的实用工具类,我们可以快速实现一个响应式的导航菜单,md:flex 确保在中等大小的屏幕及以上导航是可见的,而在更小的屏幕上则隐藏。

7.3.3 拓展案例 1:创建一个带有卡片布局的网格

使用Tailwind CSS的网格工具类来创建一个响应式的卡片布局网格。

  • HTML 结构
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"><div class="bg-white shadow rounded-lg p-4">Card 1</div><div class="bg-white shadow rounded-lg p-4">Card 2</div><!-- 更多卡片 -->
</div>

通过调整grid-cols-1, sm:grid-cols-2, lg:grid-cols-3类,我们可以定义不同屏幕大小下的列数,gap-4则为卡片之间提供了间隔。

7.3.4 拓展案例 2:自定义按钮样式

定制一个按钮样式,并在不同状态下改变其外观。

  • HTML 结构
<button class="btn-primary">Click me</button>
  • Tailwind 配置(在 tailwind.config.js 中):
module.exports = {theme: {extend: {colors: {'brand-blue': '#007bff',}}}
}
  • CSS(使用@apply指令):
.btn-primary {@apply bg-brand-blue text-white py-2 px-4 rounded hover:bg-blue-700;
}

通过在Tailwind配置文件中添加自定义颜色,并使用@apply指令应用实用工具类,我们可以快速创建一个具有品牌特色的按钮,并在悬停时改变背景色。

Tailwind CSS 通过其实用主义的设计哲学,为网页设计和开发带来了前所未有的灵活性和效率。无论是构建响应式布局、实现定制化设计,还是优化最终产物的文件大小,Tailwind都能提供强大的支持。掌握了Tailwind,你就拥有了在现代网页设计领域快速迭代和实现创意的能力。

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

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

相关文章

【NLP】MHA、MQA、GQA机制的区别

Note LLama2的注意力机制使用了GQA。三种机制的图如下&#xff1a; MHA机制&#xff08;Multi-head Attention&#xff09; MHA&#xff08;Multi-head Attention&#xff09;是标准的多头注意力机制&#xff0c;包含h个Query、Key 和 Value 矩阵。所有注意力头的 Key 和 V…

排序算法---计数排序

原创不易&#xff0c;转载请注明出处。欢迎点赞收藏~ 计数排序&#xff08;Counting Sort&#xff09;是一种线性时间复杂度的排序算法&#xff0c;其核心思想是通过统计待排序元素的个数来确定元素的相对位置&#xff0c;从而实现排序。 具体的计数排序算法步骤如下&#xff…

基于Python实现Midjourney集成到(个人/公司)平台中

目前Midjourney没有对外开放Api&#xff0c;想体验他们的服务只能在discord中进入他们的频道进行体验或者把他们的机器人拉入自己创建的服务器中&#xff1b;而且现在免费的也用不了了&#xff0c;想使用就得订阅。本教程使用midjourney-api这个开源项目&#xff0c;搭建Midjou…

鸿蒙开发-HarmonyOS UI架构

初步布局Index 当我们新建一个工程之后&#xff0c;首先会进入Index页。我们先简单的做一个文章列表的显示 class Article {title?: stringdesc?: stringlink?: string }Entry Component struct Index {State articles: Article[] []build() {Row() {Scroll() {Column() …

Web项目利用MybatisPlus进行分页查询

之前在写博客系统前台页面的时候&#xff0c;遇到了利用mp进行分页查询的情况&#xff0c;由于涉及到的知识点相对较为重要&#xff0c;固写一篇博客以此巩固。 一、功能需求 在首页和分类页面都需要查询文章列表。 首页&#xff1a;查询所有的文章分类页面&#xff1a;查询…

云计算基础-网络虚拟化

虚拟交换机 什么是虚拟交换机 虚拟交换机是一种运行在虚拟化环境中的网络设备&#xff0c;其运行在宿主机的内存中&#xff0c;通过软件方式在宿主机内部实现了部分物理交换机的功能&#xff0c;如 VLAN 划分、流量控制、QoS 支持和安全功能等网络管理特性 虚拟交换机在云平…

Invalid DataSize: cannot convert ‘30Mb‘ to Long

Invalid DataSize: cannot convert 30Mb to Long servlet:multipart:max-file-size: 30MBmax-request-size: 30MB

Mysql5.6忘记密码,如何找回(windows)

mysql5.6安装 第一步&#xff1a;关闭正在运行的数据库服务 net stop mysql第二步&#xff1a;在my.ini文件当中的[mysqld] 任意一个位置放入 skip-grant-tables第三步&#xff1a;启动mysql服务 net start mysql第四步&#xff1a;服务启动成功后就可以登录了&#xff0c;…

数据库管理-第149期 Oracle Vector DB AI-01(20240210)

数据库管理149期 2024-02-10 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xff09;1 机器学习2 向量3 向量嵌入4 向量检索5 向量数据库5 专用向量数据库的问题总结 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xf…

Typora+PicGO+腾讯云COS做图床教程

文章目录 Typora&#xff0b;PicGO&#xff0b;腾讯云COS做图床教程一、为什么使用图床二、Typora、PicGO和腾讯云COS介绍三、下载Typora和PicGOTyporaPicGO 四、配置Typora、PicGO和腾讯云COS腾讯云COS配置PicGO配置Typora配置 Typora&#xff0b;PicGO&#xff0b;腾讯云COS做…

【教学类-19-08】20240214《ABAB式-规律黏贴18格-手工纸15*15CM-一页3种图案,A空,纵向、无边框》(中班)

背景需求 利用15*15CM手工纸制作AB色块手环&#xff08;手工纸自带色彩&#xff09;&#xff0c;一页3个图案&#xff0c;2条为一组&#xff0c;黏贴成一个手环 素材准备 代码展示 # # 作者&#xff1a;阿夏 # 时间&#xff1a;2024年2月14日 # 名称&#xff1a;正方形数字卡…

OpenTitan- 开源安全芯片横空出世

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【PyQt6]全屏截图实现的带密码锁屏功能

文章目录 1. 简介2. Demo 1. 简介 书接上回&#xff0c;PyQt6 使用 QScreen 实现了截图&#xff0c;如果用个控件全屏显示截图&#xff0c;嘿嘿&#xff0c;那就是简单的一个锁屏界面了&#xff0c;类似于一个假死界面&#xff0c;也挺有意思。 友情提醒 输入 quit 可以退出程…

前端vue 数字 字符串 丢失精度问题

1.问题 后端返回的数据 是这样的 一个字符串类型的数据 前端要想显示这个 肯定需要使用Json.parse() 转换一下 但是 目前有一个问题 转换的确可以 showId:1206381711026823172 有一个这样的字段 转换了以后 发现 字段成了1206381711026823200 精度直接丢了 原本的数据…

SAP PP学习笔记- 豆知识01 - 怎么查询既存品目

SAP系统当中已经有哪些品目要怎么查询呢&#xff1f; 1&#xff0c;MM60 品目一览 这里可以输入Plant&#xff0c;然后可以查询该工厂的所有品目。 2&#xff0c;SE16 > MARA MARA 品目一般Data&#xff0c;存放的是品目基本信息。 如果要查询该品目属于哪个Plant&#x…

[计算机网络]---序列化和反序列化

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、再谈协议…

杨中科 ASP.NET DI综合案例

综合案例1 需求说明 1、目的:演示DI的能力; 2、有配置服务、日志服务&#xff0c;然后再开发一个邮件发送器服务。可以通过配置服务来从文件、环境变量、数据库等地方读取配置&#xff0c;可以通过日志服务来将程序运行过程中的日志信息写入文件、控制台、数据库等。 3、说明…

linux-firewalld防火墙端口转发

目的:通过统一地址实现对外同一地址暴露 1.系统配置文件开启 ipv4 端口转发 echo "net.ipv4.ip_forward 1" >> /etc/sysctl.confsysctl -p 2.查看防火墙配置端口转发之前的状态 firewall-cmd --statefirewall-cmd --list-all 3.开启 IP 伪装 firewall-cm…

6、内网安全-横向移动WmiSmbCrackMapExecProxyChainsImpacket

用途&#xff1a;个人学习笔记&#xff0c;有所借鉴&#xff0c;欢迎指正&#xff01; 前言&#xff1a; 在内网环境中&#xff0c;主机192.168.3.31有外网网卡能出网&#xff0c;在取得该主机权限后上线&#xff0c;搭建web应用构造后门下载地址&#xff0c;利用该主机执行相…

【漏洞复现】狮子鱼CMS文件上传漏洞(wxapp.php)

Nx01 产品简介 狮子鱼CMS&#xff08;Content Management System&#xff09;是一种网站管理系统&#xff0c;它旨在帮助用户更轻松地创建和管理网站。该系统拥有用户友好的界面和丰富的功能&#xff0c;包括页面管理、博客、新闻、产品展示等。通过简单直观的管理界面&#xf…