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

news2024/9/9 0:46:48

盒模型(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-color

  background-color: $primary-color;

  // 设置字体大小为之前定义的变量 $font-size

  font-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.coloradmin.cn/o/1958582.html

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

相关文章

MySQL 性能调优

文章目录 一. MySQL调优金字塔1. 架构调优2. MySQL调优3. 硬件和OS调优4. 小结 二. 查询性能调优三. 慢查询1. 概念2. 优化数据访问3. 请求了不需要数据,怎么做4. 是否在扫描额外的记录5. 慢查询相关配置 & 日志位置6. 小结 四. 查询优化器五. 实现调优手段 一.…

24、Python之面向对象:责任与自由,私有属性真的有必要吗

引言 前面我们进一步介绍了类定义中属性的使用,今天我们对中关于属性私有化的话题稍微展开聊一下,顺便稍微理解一下Python设计的相关理念。 访问级别 在其他编程语言中,比如Java,关于类中的属性和方法通过关键字定义明确的访问级…

1、仓颉工程基础操作 cjpm

文章目录 1. 仓颉工程创建方式2. cjpm2.1 init 初始化工程2.2 run 运行工程 1. 仓颉工程创建方式 使用 cangjie studio 通过cangjie studio 创建 使用vscode插件 通过 VSCode 命令面板创建仓颉工程通过可视化界面创建仓颉工程 cjpm 注:具体使用参考官方文档&#…

探索分布式光伏运维系统的组成 需要几步呢?

前言 随着光伏发电的不断发展,对于光伏发电监控系统的需求也日益迫切,“互联网”时代,“互联网”的理念已经转化为科技生产的动力,促进了产业的升级发展,本文结合“互联网”技术提出了一种针对分散光伏发电站运行数据…

浅谈Devops

1.什么是Devops DevopsDev(Development)Ops(Operation) DevOps(Development和Operations的混合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”…

asp.net mvc 三层架构开发商城系统需要前台页面代完善

一般会后端开发,都不太想写前台界面,这套系统做完本来想开源,需要前台界面,后台已开发,有需求的朋友,可以开发个前端界面完善一下,有的话可以私聊发给我啊

The Llama 3 Herd of Models 第6部分推理部分全文

第1,2,3部分 介绍,概览和预训练 第4部分 后训练 第5部分 结果 6 Inference 推理 我们研究了两种主要技术来提高Llama 3405b模型的推理效率:(1)管道并行化和(2)FP8量化。我们已经公开发布了FP8量化的实现。 6.1 Pipeline Parallelism 管道并行 当使用BF16数字表示模型参数时…

VirtualBox创建共享磁盘

VirtualBox创建共享磁盘 目录 VirtualBox创建共享磁盘1、划分共享磁盘1.1、【管理】->【工具】->【虚拟介质管理】1.2、【创建】->【VDI(VirtualBox 磁盘映像)】->【下一步】1.3、【预先分配全部空间】->【下一步】1.4、【分配大小】->…

5、springboot3 vue3开发平台-后端- satoken 整合

文章目录 1. 为什么使用sa-token2. 依赖导入jichu2.1 基础依赖引入2.2 redis整合2.3 redis 配置, 使redis能支持中文存储 3. 配置4. 配置使用4.1 权限加载接口实现, 登录实现4.2 配置全局过滤器4.3 登录异常处理 5. 登录测试6. 用户session的获取 1. 为什…

MySQL索引与存储引擎、事物

数据库索引 是一个排序的列表,存储着索引值和这个值所对应的物理地址 无须对整个表进行扫描,通过物理地址就可以找到所需数据 是表中一列或者若干列值排序的方法 需要额外的磁盘空间 类型 普通索引 最基本的索引类型,没有唯一性之类的限制 创…

图不连通怎么办?

目录 1.问题 2.连通的相关概念 3.解决方案 C语言示例实现: 1.问题 无论是图的深度还是广度遍历都是从图的某一条边往下走,那么被孤立的结点怎么被遍历到呢? 2.连通的相关概念 连通:如果从V到W存在一条(无向&#…

3D魔方游戏制作lua迷你世界

--3D魔方 --星空露珠工作室 --核心脚本来自负负 --1:xy 2:yx 3:xz 4:zx 5:yz 6:zy --4000,0-3 3995-0,3 local trn{ {{5,2},{3,1},{1,2},{1,3},{4,0},{2,2}}, {{3,0},{5,3},{1,3},{1,2},{2,3},{4,1}}, {{4,2},{2,1},{1,1},{1,0},{3,3},{5,1}}, {{2,0},{4,3},{1,0},{1,1},{5,0},…

Web3.js 4.x版本事件监听详解:从HTTP到WebSocket的迁移

项目场景 在一个使用以太坊区块链技术的项目中,需要监听智能合约的事件,以便在事件触发时能够及时响应。项目中使用了web3.js库的4.x版本,节点使用Geth启动,并通过HTTP与节点进行通信。 问题描述 合约DataStorage.sol文件已经定…

华为项目管理工具集

华为项目管理10大模板是一套被广泛认可和使用的项目管理工具集,它包含了在项目管理过程中常用的各种表格和文档模板。这些模板旨在帮助项目经理更有效地规划、执行和监控项目,确保项目的成功交付。 虽然具体的模板内容可能会有所不同,但根据…

51 单片机的Keil5软件

1. KEIL C51 软件获取 博主网盘下载:链接:https://pan.baidu.com/s/1YBfrRh2L7SIehS5xLQkAow?pwd4211 提取码:4211 也可以在 KEIL 的官网上下载:http:// https://www.keil.com/download/product/ 打开界面如下图所示&#xff1…

机器学习(二十三):决策树和决策树学习过程

一、决策树 下面是数据集,输入特征是耳朵形状、脸形状、是否有胡子,输出结果是是否为猫 下图是决策树,根据耳朵形状、脸形状、是否有胡子这几个特征,建立决策树,从根节点一步步预测结果。 上图中,每一个椭…

[硬件]—电感传感器

电感传感器 1.概述 工作基础:电磁感应,即利用线圈自感或互感的改变来实现非电量测量。工作原理: 被测物理量(非电量:位移、振动、流量);线圈自感系数L/互感系数M;电压或电流&#…

QT常用的控件(二)

QT的常用控件 一.按钮类控件1.1 Push Button代码示例: 带有图标的按钮代码示例: 带有快捷键的按钮代码示例: 按钮的重复触发 1.2 Radio Button代码示例: 选择性别代码示例: click, press, release, toggled 的区别代码示例: 单选框分组 1.3 Check Box代码示例: 获取复选按钮的取…

邮件攻击案例系列四:某金融企业遭遇撒网式钓鱼邮件攻击

案例描述 2023 年 3 月末,某知名投资公司业务经理李先生先后收到两封看似是来自邮件服务商和公司网络安全部门发出的邮件,标题是“紧急:邮箱安全备案更新通知”。邮件内容称,由于最近公司内部系统升级,所有员工必须重…

【微信小程序实战教程】之微信小程序的配置文件详解

小程序的配置文件 对于有过服务端开发的程序员来说,肯定对“约定优于配置”并不陌生,这是一种按约定编程的软件设计范式,目的在于减少软件开发者做决定的数量。而微信小程序正好与这种软件设计范式的理念相反,小程序是一种“配置…