前端开发技术之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是一个强大的选择,它提供了高度的灵活性和强大的插件支持。

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

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

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

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

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

相关文章

达梦数据库DPI 实现两个数据库数据互通

链接字符串是目标访问链接 目标访问用户名 口令实现 31 里访问33库的数据 如果在31上建立视图访问33的某个表 AS SELECT SZZJ.sys_user.id FROM SZZJ.sys_userszzj31_szzj33;

研0 冲刺算法竞赛 day25 P1223 排队接水

P1223 排队接水 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 考点&#xff1a;贪心算法 思路&#xff1a;很简单&#xff0c;快的先接水即可&#xff0c;要注意重复项 代码: #include<iostream> #include<algorithm> using namespace std;int arr[1000005];…

C语言进阶 10. 字符串

C语言进阶 10. 字符串 文章目录 C语言进阶 10. 字符串10.1. 字符串10.2. 字符串变量10.3. 字符串输入输出10.4. 字符串数组10.5. 单字符输入输出10.6. 字符串函数strlen()10.7. 字符串函数strc()10.8. 字符串函数strcpy()10.9. 字符串搜索函数10.10. PAT10-0. 说反话 (20)10-1.…

七天打造一套量化交易系统:Day6-人工智能在量化投资中的应用

七天打造一套量化交易系统&#xff1a;Day6-人工智能在量化投资中的应用 步骤一&#xff1a;数据获取步骤二&#xff1a;对股票样本进行初步处理步骤三&#xff1a;遗传算法选股遗传算 kmeans 类的主要代码 步骤四&#xff1a;回测结果 遗传算法是一种基础的人工智能算法&#…

CSS实现图片边框酷炫效果

一、前言 我们在浏览一些网页时&#xff0c;经常会看到一些好看酷炫的元素边框效果&#xff08;如下图&#xff09;&#xff0c;那么这些效果是怎么实现的呢&#xff1f;我们知道&#xff0c;一般的边框&#xff0c;要么是实线&#xff0c;要么是虚线&#xff08;点状&#xf…

快速识别音频文件转成文字

一、SenseVoice概述 阿里云通义千问开源了两款语音基座模型 SenseVoice&#xff08;用于语音识别&#xff09;和 CosyVoice&#xff08;用于语音生成&#xff09;。 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测&#xff0c;有以下特点&#xff1a; 多语言…

spark 3.0.0源码环境搭建

环境 Spark版本&#xff1a;3.0.0 java版本&#xff1a;1.8 scala版本&#xff1a;2.12.19 Maven版本&#xff1a;3.8.1 编译spark 将spark-3.0.0的源码导入到idea中 执行mvn clean package -Phive -Phive-thriftserver -Pyarn -DskipTests 执行sparksql示例类SparkSQLExam…

机器学习算法——常规算法,在同的业务场景也需要使用不同的算法(二)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

麒麟V10系统统一认证子系统国际化

在适配麒麟V10系统统一认证子系统国际化过程中&#xff0c; 遇到了很多的问题&#xff0c;关键是麒麟官方的文档对这部分也是粗略带过&#xff0c;遇到的问题有: &#xff08;1&#xff09;xgettext无法提取C源文件中目标待翻译的字符串。 &#xff08;2&#xff09;使用msgf…

rhce THE homework of first

ssh远程免密登录成功 下载httpd和nginx 关闭防火墙 查看selinux的状态 为服务器配置ip 填充网站的内容 添加服务器配置 将文本写入网站

testRigor-基于人工智能驱动的无代码自动化测试平台

1、testRigor介绍 简单来说&#xff0c;testRigor是一款基于人工智能驱动的无代码自动化测试平台&#xff0c;它能够通过分析应用的行为模式&#xff0c;智能地生成测试用例&#xff0c;并自动执行这些测试&#xff0c;无需人工编写测试脚本。可以用于Web、移动、API和本机桌面…

C#基础——类、构造函数和静态成员

类 类是一个数据类型的蓝图。构成类的方法和变量称为类的成员&#xff0c;对象是类的实例。类的定义规定了类的对象由什么组成及在这个对象上可执行什么操作。 class 类名 { (访问属性) 成员变量; (访问属性) 成员函数; } 访问属性&#xff1a;public&#xff08;公有的&…

微前端技术预研 - bit初体验

1.关于什么是微前端以及微前端的发展&#xff0c; 当前主流框架以及实现技术等&#xff0c;可参考这篇总结(非常全面)&#xff0c; 微前端总结&#xff1a;目录详见下图 本文内容主要针对bit框架的实时思路以及具体使用。 1.什么是Bit? &#xfeff;Bit 是可组合软件的构建…

pycharm怎么使用Anaconda和配置

打开Anaconda Prompt 要删除 Conda 环境 yolov5sconda&#xff0c;你可以使用以下命令&#xff1a; conda remove --name yolov5sconda --all这个命令会删除名为 yolov5sconda 的整个环境&#xff0c;包括其中安装的所有包和依赖项。请在命令提示符或终端中运行此命令。执行此…

使用Spring Boot与Spire.Doc实现Word文档的多样化操作

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 使用Spring Boot与Spire.Doc实现Word文档的多样化操作具有以下优势&#xff1a; 强大的功能组合&#xff1a;Spring Boot提供了快速构建独立和生产级的Spring应用程序的能力&#xff0c;而Spire.Doc则…

基于Hadoop的服装电商数据分析系统【Hdfs、flume、HIve、sqoop、MySQL、echarts】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍总体研究方向数据集介绍配置flume文件HIve建表HIveSQL大数据分析MySQL建表Sqoop命令导出数据到MySQL数据可视化店铺销售情况.......等 总结每文一语 有需要本项目的代码或文档以及全…

UDP服务器端bind失败问题

本人使用microchip芯片开发&#xff0c;使用UDP虚拟机通讯&#xff0c;经常提示bind失败&#xff0c;返回-1&#xff0c;尝试了以前UDP作为客户端使用时正常&#xff0c;故硬件链路没问题。 一、可能有几个原因&#xff1a; 端口实际上被占用&#xff1a;最明显的原因是端口真…

短视频矩阵系统搭建教程,源码获取,部署上线指南

目录 一、短视频矩阵是什么&#xff1f; 二、搭建教程 1、前端界面开发 2、后端架构搭建 3、第三方视频平台对接 三、部分代码展示 一、短视频矩阵是什么&#xff1f; 短视频矩阵系统是一种集成了多元短视频平台功能的综合性管理工具&#xff0c;它汇聚了多个视频发布渠…

【Git】.gitignore全局配置与忽略匹配规则详解

设置全局配置 1&#xff09;在C:/Users/用户名/目录下创建.gitignore文件&#xff0c;在里面添加忽略规则。 如何创建 .gitignore 文件&#xff1f; 新建一个.txt文件&#xff0c;重命名&#xff08;包括后缀.txt&#xff09;为 .gitignore 即可。 2&#xff09;将.gitignore设…