CSS布局之详解

news2024/9/19 10:55:14

在开发前端的时候,界面布局尤为重要,要布局的非常合理,好看,css是必不可少的,然后是各种布局,使用这些布局,进行混合搭配,最终的目的都是开发一个完整的界面。前端的技术变化是五花八门的,也是群魔乱舞的,使用的方法更是层出不穷。所以本文收集了一些个人的观点,并且进行记录。好的布局不是一下能学会的,是需要大量的实战经验,上手很快,但是精通需要一定的时间才行。

目录

1.CSS/SASS/SCSS/LESS

2.界面布局的类型

3.快速上手布局


1.CSS/SASS/SCSS/LESS

第一:css中重要的属性

1:position,意思是定位,position 属性有5个值

static 定位:HTML 元素的默认值,即没有定位,遵循正常的文档流对象。 静态定位的元素不会受到 top, bottom, left, right影响。

fixed 定位:元素的位置相对于浏览器窗口是固定位置。 即使窗口是滚动的它也不会移动。

relative 定位:相对定位元素的定位是相对其正常位置。

absolute定位: 绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>

sticky 定位:sticky 英文字面意思是粘,粘贴,所以可以把它称之为粘性定位。 position: sticky; 基于用户的滚动位置来定位。 粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。

2:媒体查询,媒体查询可以根据不同的设备或者浏览器的大小,进行自适应的变化。

语法如下,表示如果浏览器窗口小于 500px, 背景将变为浅蓝色

@media screen and (max-width: 500px) {
    body {
        background-color: lightblue;
    }
}

第二:SASS/SCSS

sass先出来,它的目的也是可以替换css的,而scss是后来出来的,它是根据sass演化而来的,所以流行和未来的选择,肯定优选scss。

第三:LESS

less也可以代替css,但是它和sass/scss是一回事,只是它们2者的底层实现原理不一样,最终的效果是一样的。

1.使用命令安装

npm install less --save

2.安装成功后有标识

3.使用

<template>
	<div>123
		<h1>456</h1>
	</div>
</template>

<style scoped lang="less">
	div {
		background-color: red;
		height: 3.125rem;
		width: 3rem;
		font-size: 1.6rem;
		h1 {
			background-color: aqua;
		}
	}
</style>

具体参考文档

Less 入门文档

总结:不管sass,scss,less,都是可以替换css的。所以,在我们使用css实现效果的时候,首选建议使用less,原因是它简单上手,然后选择scss,它的功能更加的强大,但是安装起来,非常复杂。基本项目配合scss足够用了。

2.界面布局的类型

界面的布局都是使用css写的,布局分为5种:固定布局,流式布局,弹性布局,自适应布局,响应式布局。

固定布局:就是静态布局,换句话说,就是界面是死的,一般是px单位。

流式布局:顾名思义,流动,像水一样,会根据界面的变化而变化,但是字体不会变化,一般是                        百分比的单位。

弹性布局:具有弹性,像橡皮筋一样,弹来弹去,可大可小,一般是rem,em单位

自适应布局:自适应,就是根据不同的设备,进行布局,一种屏幕一个布局,主要是使用媒体查询

响应式布局:最强大,一套代码,可以实现所有设备的大小的变化,包括手机端和电脑端,一般都是综合使用上面的。

以上5种布局,都是根据时间顺序发展而来的,布局一个界面,不是只选择一种布局方式,一般都是多种布局混合搭配,最终实现页面的效果,所以说,不是哪个好,哪个不好,都要根据需求而定,然后进行布局。

举例一下:百度搜索“圣杯布局”

比如菜鸟教程的CSS网页布局:菜鸟教程在线编辑器

比如菜鸟教程的Bootstrap创建一个网页:Bootstrap 实例 - 一个简单的网页

3.快速上手布局

可以使用上面提供的布局,这些布局都是响应式布局,根据浏览器不同的大小而变化的。

目前市场上,最流行的适配方案有二种。

方案一:

less+媒体查询+rem

说明:less和媒体查询前面说了。主要说一下rem。rem是根据 根元素html 的字体大小变化而变化的。直接上代码说,也就是grid-content的高度是根据html的font-size大小变化而变化。

<style>
	html {
		font-size: 10px;
	}
	.el-col {
		border-radius: 4px;

	}
	.grid-content {
		border-radius: 4px;
		height: 21rem;
	}
</style>

当font-size是10px的时候,高度是10*21等于210 

当font-size是15px的时候,高度是15*21等于315 

 这个就是rem的本质

方案二:lib-flexible+rem

说明:lib-flexible是web自适应方案 ,可伸缩布局方案。其中lib-flexible和flexible.js非常相似,可以看它们的源码,基本上一样,只是前者不需要修改任何参数,后者是手机客户端的,需要进行修改,所以,就使用前者就行了,功能都是一样的。

lib-flexible官网,可以使用命令,也可以进行下载后,进行引用

GitHub - amfe/lib-flexible: 可伸缩布局方案

1.安装amfe-flexible

npm i -S amfe-flexible

2.使用,main.js中导入

import 'amfe-flexible/index.js'
import {
	createApp
} from 'vue'
import App from './App.vue'

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
// import 'lib-flexible/flexible.js'
// import './index.js'
import 'amfe-flexible/index.js'

const app = createApp(App)

app.use(ElementPlus)
app.mount('#app')

3.下面的代码中,在浏览器中运行的时候,就会根据浏览器的大小变化而变化

<template>
	<div>123</div>
</template>

<style scoped>
	div {
		background-color: red;
		height: 3.125rem;
		width: 3rem;
		font-size: 1.6rem;
	}
</style>

4.效果

可以看到,页面根据屏幕的大小变化而变化。

当把main中import 'amfe-flexible/index.js'去掉,就没有这种效果了。

5.补充rem说明

本实例使用的HBuilderX开发的,它的默认像素是16px,所以1rem=16px,也可以进行修改

打开设置,把16修改成10即可,此时1rem=10px。

amfe-flexible是把界面等分10份,如果电脑是1600*900的,那么宽就是1600px,高是900px,每一份就是1600px/10=160px,也就是说,1rem=160px,那么就应该把上面的配置改成160,这样在1600*900的环境开发,就是配置正常的。

<template>
	<div>123
	</div>
</template>
<style scoped>
	div {
		background-color: red;
		height: 3.125rem;
		width: 1rem;
	}
</style>

图中的实际宽度就是160px 

总结:其实响应式布局方式还有很多,例如ElementPlus提供的响应式Layout 布局 | Element Plus

其他UI框架也会提供。 

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

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

相关文章

mybatis-plus ---1

mybatis-plus 在mybatis的基础上只做加强&#xff0c;不做删减。 一个简单的mybatis-plus案例 结构图 创建一个springboot工程 添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0…

Linux(Linux各目录结构详解)

我们知道Linux系统是一个文件系统&#xff0c;它的文件系统就类似windows系统下的磁盘文件系统。 我们连接上一台linux系统的服务器。 输入命令 &#xff1a; ls / 我们可以看到 linux系统的根目录下有这些目录 bin boot data dev etc hbr home lib lib64 lostfoun…

【前端】参考C站动态发红包界面,高度还原布局和交互

最近有些小伙伴咨询博主说前端布局好难&#xff0c;其实都是熟能生巧&#xff01; 模仿C站动态发红包界面&#xff0c;cssdiv实现布局&#xff0c;纯javascript实现交互效果 目录 1、界面效果 2、界面分析 2.1、整体结构 2.2、标题 2.3、表单 2.4、按钮 3、代码实现 3.…

【目标检测】如何使用Yolov8

如何使用Yolov8一、前言二、用法2.1 安装2.2 使用方法2.3 模型2.3.1 目标检测2.3.2 实例分割2.3.3 分类一、前言 一种易于使用的新的对象检测模型。 由 Ultralytics 开发的 Ultralytics YOLOv8 是一种尖端的、最先进的 (SOTA) 模型&#xff1a; https://github.com/ultralyt…

前端调试2

一、用chrome调试(node.js)例&#xff1a;const fs require(fs/promises);(async function() {const fileContent await fs.readFile(./package.json, {encoding: utf-8});await fs.writeFile(./package2.json, fileContent); })();1.先 node index.js 跑一下&#xff1a;2.然…

并发包工具之 批量处理任务 CompletionService(异步)、CompletableFuture(回调)

文章目录一、处理异步任务并获取返回值——CompletionService二、线程池三、Callable 与 Future四、通过回调方式处理可组合编排任务——CompletableFuture一、处理异步任务并获取返回值——CompletionService 特点描述&#xff1a; 对于比较复杂的计算&#xff0c;把…

dfs(九)字符串的全排列

字符串的排列_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目&#xff0c;配有官方题解&#xff0c;在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/fe6b651b66ae47d7ac…

Windows 安装Tomcat

版本:tomcat8.5jdk-8u231一.解压JDK安装包 更换JDK安装路径二.解压安装Tomcat 选择jdk安装路径更换tomcat安装路径三.设置环境变量 1.“环境变量”界面中系统变量点击”新建“&#xff0c;创建CATALINA_HOMEC:\RESSET\tomcat&#xff08;Tomcat服务器的根目录&#xff09;2.创建…

电脑录屏win+g没反应怎么办?打开这2个开关,就能解决

有不少的小伙伴在使用电脑自带的录屏软件的时候&#xff0c;发现录屏快捷键wing没反应了。电脑录屏wing没反应怎么办&#xff1f;解决办法很简单&#xff0c;只需要打开2个开关&#xff0c;就能够快速解决&#xff0c;一起来看看吧&#xff01; 一、电脑录屏wing没反应怎么办&a…

响应式布局之viewport-超级简单

之前文章CSS布局之详解_故里2130的博客-CSDN博客 上面的文章可以实现响应式布局&#xff0c;根据浏览器的大小变化而变化&#xff0c;但是相对于viewport来说&#xff0c;之前的还是有点复杂&#xff0c;而使用viewport更加的简单。 当我们使用amfe-flexible的时候&#xff0…

记录ideal中使用springboot遇到的问题

持续记录&#xff0c;避免反复查找资料 选择Maven构建项目 创建springboot项目时&#xff0c;【Project Metadata页】的Type选项默认是Gradle&#xff0c;如果要使用Maven需要修改选项&#xff0c;如下图 mysql依赖包直接在pom.xml中添加 创建时在对话框中勾选【Mysql Driver】…

两个月,测试转岗产品经理,我是怎么规划的?

​本期同学依旧来自深圳 测试到产品转变&#xff0c;用了两个月 本周&#xff0c;为大家介绍M同学的佛系转岗经历 学员档 学员档案 原岗位&#xff1a;测试 转岗级别&#xff1a;中级产品经理 转岗特点&#xff1a; 1.未接触产品工作 2.对岗位地点要求严格 先看结果 …

浅显易懂的说清楚小游戏与H5游戏的技术区别

从“跳一跳”到“羊了个羊”微信小游戏上线4年时间&#xff0c;除了涌现出不少火爆全网的小游戏之外&#xff0c;也有类似于“动物餐厅”、“口袋奇兵”等游戏得以在此孵化繁荣&#xff0c;凭借着微信强大的社交属性小游戏成为游戏厂商在桌面端、App 端、H5 端之外争夺的另一个…

40个改变你编程技能的小技巧!

40个改变编程技能的小技巧 1、将大块代码分解成小函数 2、今日事今日毕&#xff0c;如果没毕&#xff0c;就留到明天。 如果下班之前还没有解决的问题&#xff0c;那么你需要做的&#xff0c;就是关闭电脑&#xff0c;把它留到明天。 中途不要再想着问题了&#xff01; 3、…

【LeetCode】不同的二叉搜索树 [M](卡特兰数)

96. 不同的二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&a…

学会使用LoadRunner录制脚本

1.LoadRunner安装 https://blog.csdn.net/weixin_48584088/article/details/129012469 2.Loadrunner的基本概念 LoadRunner是一种适用于许多软件体系架构的自动负载测试工具&#xff0c;从用户关注的响应时间、吞吐量&#xff0c; 并发用户和性能计数器等方面来衡量系统的性…

Linux数据流重定向

数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据&#xff0c;给它传输到其他地方去 如果我们要执行一个命令&#xff0c;它通常是这样的&#xff1a; 标准输入、输出、错误stdin标准输入0stdout标准输出1stderr标准错误输出2标准输入&#xff08;stdin&#xff09;…

ESP-IDF:使用多任务测试互斥体mutex

代码&#xff1a; #include <stdio.h> #include “sdkconfig.h” #include “freertos/FreeRTOS.h” #include “freertos/task.h” #include “freertos/semphr.h” #include “esp_system.h” #include “esp_spi_flash.h” /互斥体测试/ SemaphoreHandle_t xmutex; …

【html弹框拖拽和div拖拽功能】原生html页面引入vue语法后通过自定义指令简单实现div和弹框拖拽功能

前言 这是html版本的。只是引用了vue的语法。 这是很多公司会出现的一种情况&#xff0c;就是原生的页面&#xff0c;引入vue的语法开发 这就导致有些vue上很简单的功能。放到这里需要转换一下 以前写过一个vue版本的帖子&#xff0c;现在再加一个html版本的。 另一个vue版本…

CentOS8基础篇5:用户账号与用户组的创建

一、用户与用户组概念 Linux是一个多用户、多任务的服务器操作系统&#xff0c;多用户多任务指可以在系统上建立多个用户&#xff0c;而多个用户可以在同一时间内登录同一个系统执行各自不同的任务&#xff0c;而互不影响。 Linux用户是根据角色定义的&#xff0c;具体分为三…