CSS/SCSS/LESS和自适应布局/响应式布局详解

在开发前端的时候,界面布局尤为重要,要布局的非常合理,好看,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的功能更加强大。基本项目使用less足够用了。

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框架也会提供。 

本文来源:

CSS/SCSS/LESS和自适应布局/响应式布局详解_css自适应-CSDN博客

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故里2130

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值