当前位置: 首页 > news >正文

前端开发技术之CSS(层叠样式表)

盒模型(Box Model)

        CSS盒模型描述了如何计算一个元素的总宽度和高度。

        它包括以下几个部分:

                1. 内容(Content):元素的实际内容,比如文本或图片。

                2. 内边距(Padding):内容周围的空白区域,位于内容和边框之间。

                3. 边框(Border):围绕在内边距和外边距之间的线条。

                4. 外边距(Margin):边框外的空白区域,用于分隔元素与其它元素。

盒模型的计算方式

        标准盒模型(content-box):width 和 height 属性只包括内容,不包括内边距、边框或外边

距。

        替代盒模型(border-box):width 和 height 属性包括内容、内边距和边框,但不包括外边

距。

.box {width: 200px; /* 内容宽度 */padding: 20px; /* 内边距 */border: 5px solid black; /* 边框 */margin: 10px; /* 外边距 */box-sizing: border-box; /* 使用 border-box 盒模型 */}

浮动(Float)

        浮动用于实现文本环绕图片的效果,也可以用于简单的布局。

        元素通过 float 属性设置为浮动,可以取值 left、right 或 none。

使用浮动

.float-left {float: left;}.float-right {float: right;}

清除浮动

        浮动元素会脱离常规的文档流,可能导致父元素高度塌陷。

        为了解决这个问题,可以使用以下方法清除浮动:

        额外标签法:在浮动元素后面添加一个空标签,并设置 clear: both。

        使用伪元素:在父元素上使用 :after 伪元素来清除浮动。

.clearfix:after {content: "";display: table;clear: both;}

定位(Positioning)

        CSS定位用于控制元素的位置,有以下几种定位方式:

                1. 静态定位(Static):默认值,按照正常文档流定位。

                2. 相对定位(Relative):相对于其正常位置进行定位。

                3. 绝对定位(Absolute):相对于最近的已定位祖先元素进行定位。

                4. 固定定位(Fixed):相对于浏览器窗口进行定位。

                5. 粘性定位(Sticky):基于用户的滚动位置进行定位。

定位示例

.position-relative {position: relative;top: 20px;left: 20px;}.position-absolute {position: absolute;top: 0;right: 0;}

Flexbox布局

        Flexbox(弹性盒模型)布局提供了一种更有效的方式来排列、对齐和分配容器内元素的空

间,即使它们的大小是未知或动态的。

Flexbox容器属性

        display: flex;:将元素定义为Flex容器。

        justify-content:定义了项目在主轴上的对齐方式。

        align-items:定义了项目在交叉轴上如何对齐。

        flex-direction:定义了主轴的方向。

Flexbox项目属性

        flex:定义了项目的放大比例,相对于其他项目的大小。

        align-self:允许单个项目有与其他项目不一样的对齐方式。

Flexbox示例

.flex-container {display: flex;justify-content: space-between;align-items: center;}.flex-item {flex: 1;}

Grid布局

        CSS Grid布局是一个用于创建复杂布局的二维布局系统。它允许我们以行和列的形式来进行

布局设计。

Grid容器属性

        display: grid;:将元素定义为Grid容器。

        grid-template-columns:定义列的尺寸和数量。

        grid-template-rows:定义行的尺寸和数量。

        grid-gap:定义行和列之间的间隔。

Grid项目属性

        grid-column-start / grid-column-end:定义项目的起始和结束列。

        grid-row-start / grid-row-end:定义项目的起始和结束行。

Grid示例

.grid-container {display: grid;grid-template-columns: repeat(3, 1fr);grid-gap: 10px;}.grid-item {/* Grid项样式 */}

CSS预处理器(如Sass或Less)

        CSS预处理器是一种脚本语言,它扩展了CSS的功能,增加了变量、嵌套、混合

(Mixins)、函数等编程特性。预处理器可以提高CSS代码的可维护性和复用性,使得编写和维护

大型项目的样式表变得更加容易。

Sass(Syntactically Awesome Style Sheets)

        Sass是最流行的CSS预处理器之一,它使用.scss或.sass文件扩展名。

        Sass的语法更加接近CSS,因此更容易上手。

变量(Variables)

        在Sass中,你可以使用变量来存储颜色、字体大小、间距等值,以便在样式表中重复使用。

// 定义一个变量 $primary-color,值为333(这个值应该是十六进制颜色代码,例如#333)$primary-color: 333;// 定义另一个变量 $font-size,值为16px$font-size: 16px;// 定义一个类 .container.container {// 设置背景颜色为之前定义的变量 $primary-colorbackground-color: $primary-color;// 设置字体大小为之前定义的变量 $font-sizefont-size: $font-size;
}

嵌套(Nesting)

        Sass允许你将样式规则嵌套在一起,这使得代码更加清晰和易于阅读。

.container {background-color: 333;color: white;.header {font-size: 24px;}.content {padding: 20px;}}

混合(Mixins)

        混合允许你创建可重用的代码块,并在样式表中多次使用。

@mixin rounded-corners {border-radius: 5px;}.button {@include rounded-corners;padding: 10px;}

导入(Import)

        Sass允许你将一个Sass文件导入到另一个文件中,这使得样式表的组织更加灵活。

@import "base.scss";

Less

        Less是另一种流行的CSS预处理器,它使用.less文件扩展名。

        Less的语法与CSS非常相似,但提供了一些额外的功能。

变量(Variables)

        Less也支持变量,用于存储值并重复使用。

@primary-color: 333;@font-size: 16px;.container {background-color: @primary-color;font-size: @font-size;}

嵌套(Nesting)

        Less允许我们将样式规则嵌套在一起,这使得代码更加紧凑。

.container {background-color: 333;color: white;.header {font-size: 24px;}.content {padding: 20px;}}

混合(Mixins)

        Less也支持混合,允许你创建可重用的代码块。

.rounded-corners {border-radius: 5px;}.button {.rounded-corners();padding: 10px;}

导入(Import)

        Less允许你将一个Less文件导入到另一个文件中,这使得样式表的组织更加灵活。

@import "base.less";

        使用预处理器时,我们需要将Sass或Less代码编译成CSS,以便浏览器能够理解。

        这通常通过构建工具(如Webpack、Gulp)或IDE插件来完成。

        预处理器极大地提高了CSS的可维护性和复用性,是现代Web开发中不可或缺的一部分。

除了 Sass 和 Less 之外,还有其他一些流行的CSS预处理器,比如:

        1. Stylus:Stylus是一个相对较新的CSS预处理器,它提供了与Sass和Less类似的特性,但

具有更简洁的语法和更快的编译速度。

        Stylus使用 .styl 文件扩展名,并支持嵌套、变量、混合和导入等特性。

        2. SugarSS:SugarSS是一个轻量级的Sass到CSS编译器,它只编译Sass的缩写语法不支

持嵌套。SugarSS旨在提供比Sass更快的编译速度,并减少文件大小。

        3. PostCSS:PostCSS是一个更高级的CSS处理器,它不仅仅是一个预处理器,而是一个插

件化的工具,允许你使用各种插件来扩展CSS的功能。

        PostCSS支持CSS的变量、混合、导入、转换等,并且可以与Sass和Less的编译器一起使用。

        这些预处理器都有各自的特点和优势,选择哪个预处理器取决于我们的个人偏好、项目需求

和团队习惯。例如,如果你正在寻找一个快速且简单的预处理器,Stylus可能是一个不错的选择

;如果你需要更多的插件支持和灵活性,PostCSS可能更适合你。

      下面是对目前市面上其他一些流行的CSS预处理器的优缺点  

Sass

        优点

                语法接近CSS,易于上手。

                强大的功能,包括嵌套、变量、混合、函数、运算等。

                社区支持广泛,有很多第三方库和插件。

                支持多种文件格式,包括.scss.sass

        缺点

                相对于其他预处理器,编译速度较慢。

                需要专门的编译工具,如Ruby或Node.js。

Less

        优点

                语法与CSS高度相似,易于学习。

                强大的功能,包括嵌套、变量、混合、函数等。

                社区支持广泛,有很多第三方库和插件。

                支持.less文件格式。

        缺点

                相对于其他预处理器,编译速度较慢。

                需要专门的编译工具,如Node.js。

Stylus

        优点

                语法简洁,易于学习。

                编译速度快,文件体积小。

                支持.styl文件格式。

        缺点

                功能相对较弱,不如Sass和Less强大。

                社区支持相对较少。

SugarSS

        优点

                专注于Sass的缩写语法,编译速度快。

                文件体积小。

        缺点

                功能非常有限,仅支持Sass的缩写语法。

                社区支持几乎不存在。

PostCSS

        优点

                插件化设计,可以轻松扩展CSS的功能。

                支持最新的CSS特性。

                编译速度快,性能好。

                社区支持广泛,有很多高质量的插件。

        缺点

                学习曲线较陡峭,需要一定的CSS和JavaScript基础。

                并且需要额外的配置和工具链。

选择预处理器的情况

        如果需要强大的功能和复杂的项目

                Sass和Less都是很好的选择,它们提供了丰富的功能和强大的社区支持。

        如果需要快速编译和轻量级的项目

                Stylus和SugarSS可能更适合,它们提供了简洁的语法和快速的编译速度。

        如果需要插件化和最新的CSS特性

                PostCSS是一个强大的选择,它提供了高度的灵活性和强大的插件支持。

        如果项目已经使用某个预处理器

                通常情况下,继续使用现有的预处理器可以减少学习成本和维护成本。

但是最终的选择取决于项目的具体需求和个人的偏好。

相关文章:

前端开发技术之CSS(层叠样式表)

盒模型(Box Model) CSS盒模型描述了如何计算一个元素的总宽度和高度。 它包括以下几个部分: 1. 内容(Content):元素的实际内容,比如文本或图片。 2. 内边距(Padding)&…...

go语言day20 使用gin框架获取参数 使用自定义的logger记录日志

Golang 操作 Logger、Zap Logger 日志_golang zap-CSDN博客 目录 一、 从控制器中获取参数的几种形式 1) 页面请求url直接拼接参数。 2) 页面请求提交form表单 3) 页面请求发送json数据,使用上下文对象c的BindJSON()方法接…...

DHCP笔记

DHCP---动态主机配置协议 作用:为终端动态提供IP地址,子网掩码,网关,DNS网址等信息 具体流程 报文抓包 在DHCP服务器分配iP地址之间会进行广播发送arp报文,接收IP地址的设备也会发送,防止其他设备已经使用…...

TCP为什么需要四次挥手?

tcp为什么需要四次挥手? 答案有两个: 1.将发送fin包的权限交给被动断开发的应用层去处理,也就是让程序员处理 2.接第一个答案,应用层有了发送fin的权限,可以在发送fin前继续向对端发送消息 为了搞清楚这个问题&…...

MySQL 索引相关基本概念

文章目录 前言一. B Tree 索引1. 概念2. 聚集索引/聚簇索引3. 辅助索引/二级索引4. 回表5. 联合索引/复合索引6. 覆盖索引 二. 哈希索引三. 全文索引 前言 InnoDB存储引擎支持以下几种常见索引:BTree索引,哈希索引,全文索引 一. B Tree 索引…...

Neutralinojs教程项目实战初体验(踩坑指南),干翻 electron

Neutralinojs 项目实战初体验(踩坑指南),干翻 electron Neutralinojs 官方文档 卧槽卧槽,!这个年轻人居然用浏览器把电脑关机了_哔哩哔哩_bilibili正是在下 本教程搭建的是纯原生项目,没有和其它前端框架…...

【轻松拿捏】Java-List、Set、Map 之间的区别是什么?

List、Set、Map 之间的区别是什么? 一、List 二、Set 三、Map 🎈边走、边悟🎈迟早会好 一、List 有序性:List 保持元素的插入顺序,即元素按添加的顺序存储和访问。允许重复:List 可以包含重复的元素。…...

用户史订单查询业务

文章目录 概要整体架构流程技术细节小结 概要 在电商、金融、物流等行业中,用户历史订单查询是一项常见的业务需求。这项功能允许用户查看他们过去的交易记录,包括但不限于购买的商品、服务详情、交易金额、支付状态、配送信息等。对于企业而言&#xf…...

第8节课:CSS布局与样式——掌握盒模型与定位的艺术

目录 盒模型:网页布局的基础盒模型的属性盒模型的示例 定位:控制元素位置定位的类型定位的示例 实践:使用CSS布局创建响应式网页结语 CSS布局是网页设计中的基石,它决定了网页元素的排列和分布。盒模型和定位是CSS布局中的两个核心…...

electron 主进程和渲染进程

最近在整理electron 相关的项目问题,对自己来说也是温故知新,也希望能对小伙伴们有所帮助,大家共同努力共同进步。加油!!!! 虽然最近一年前端大环境不好,但是大家还是要加油鸭&#…...

redis的高可用及性能管理和雪崩

redis的高可用 redis当中,高可用概念更宽泛一些。 除了正常服务以外,数据量的扩容,数据安全。 实现高可用的方式: 1、持久化 最简单的高可用方法,主要功能就是备份数据。 把内存当中的数据保存到硬盘当中。 2、主…...

php基础语法

文章目录 1. PHP(1) 安装php 2. 基础语法(1) 格式(2) 输出语法(3) 注释(4) 变量(无变量类型自动识别)(5) 输入获取(6) 定界符(7) 换行 3. 基本数据类型(1) 字符串(2) 整数(3). 浮点数(4). boolean类型(5). 数组(6). null值 4. 运算符(1) 算术运算符(2) 比较运算符(3) 逻辑运算符…...

js抓取短信验证码发送

油猴(Tampermonkey)是一个流行的浏览器扩展,它允许用户在浏览器中运行自定义的JavaScript脚本。下面是一个简单的示例脚本,用于收集网站上发送短信验证码的API请求,并以JSON格式存储这些信息。请注意,这个脚本需要根据实际网站的API请求进行调整,因为不同的网站可能有不…...

视频怎么加密?常见的四种视频加密方法和软件

视频加密是一种重要的技术手段,用于保护视频内容不被未经授权的用户获取、复制、修改或传播。在加密过程中,安企神软件作为一种专业的加密工具,可以发挥重要作用。 以下将详细介绍如何使用安企神软件对视频进行加密,并探讨视频加密…...

聚焦全局应用可用性的提升策略,详解GLSB是什么

伴随互联网的快速发展和全球化趋势的深入,企业对网络应用的需求日渐增长。为满足全球范围内用户大量的访问需求,同时解决容灾、用户就近访问以及全球应用交付等问题,GLSB(全局负载均衡)也因此应运而生。那么GLSB是什么…...

无水印下载视频2——基于tkinter完成头条视频的下载

在数字化时代的浪潮中,视频内容以其丰富性和便捷性,逐渐成为了我们获取信息和娱乐的重要途径。尤其是在短视频平台上,各种创意十足、内容精彩的视频层出不穷,更是吸引了数以亿计的用户。然而,随着视频内容的增加&#…...

Java学习Day17:基础篇7

继承 Java中的继承是面向对象编程中的一个核心概念,它允许我们定义一个类(称为子类或派生类)来继承另一个类(称为父类或基类)的属性和方法。继承提高了代码的复用性,使得我们不必从头开始编写所有的代码&a…...

Vue3 Pinia的创建与使用代替Vuex 全局数据共享 同步异步

介绍 提供跨组件和页面的共享状态能力,作为Vuex的替代品,专为Vue3设计的状态管理库。 Vuex:在Vuex中,更改状态必须通过Mutation或Action完成,手动触发更新。Pinia:Pinia的状态是响应式的,当状…...

手撕数据结构02--二分搜索(附源码)

一、理论基础 二分搜索,也称折半搜索、对数搜索,是一种在有序数组中查找某一特定元素的搜索算法。 二分搜索是一种高效的查找算法,适用于在已排序的数组中查找特定元素。它的基本思想是通过不断将搜索区间对半分割,从而快速缩小…...

单片机工程师继续从事硬件设计还是涉足 Linux 开发?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」,点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!! 怎么说呢,感觉绝…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...