前端css + js +vue +element-ui 实现响应式布局,根据浏览器窗体大小自动响应

这篇具有很好参考价值的文章主要介绍了前端css + js +vue +element-ui 实现响应式布局,根据浏览器窗体大小自动响应。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、环境

我的环境是element-ui vue版的,其他的也可以,主要是css和js的内容

2、js代码

<script>
export default {
  data() {
    return {
      scaledStyle: {
        transform: '',
        "transform-origin": "left",
      },
    }
  },
  mounted() {
    this.$nextTick(()=> {
      this.updateScaledStyle()
    })
    window.addEventListener('resize', this.updateScaledStyle)
  },
  methods: {
    updateScaledStyle() {
      let innerWidth =  window.innerWidth
      const scaleX = innerWidth / 1920;
      this.scaledStyle.transform = `scale(${scaleX},1)`;
    }
}
</script>


3、代码解释

1、定义对象

首先在data中定义一个对象

 scaledStyle: {
        transform: '',
        "transform-origin": "left",
      },

其实就是css的样式,不过放在了js 里面而已
这里css设置了两个属性
一个是transform
这个属性对div标签的缩放作用,当浏览器窗口或者屏幕大小改变时,就调整这个属性的值,来等比缩放标签的布局。
另一个是transform-origin
这个属性是设置div标签缩放的圆点位置,也就是以什么位置为圆点缩放的,默认是中间点,但是很多时候以中间点作为圆点缩放是不合理的,根据自己的实际需求设置,我这里设置以左边为圆点缩放,就是当窗口页面变化时,左边不动,右边往左边缩放靠拢。

2、定义方法

其次是

methods: {
    updateScaledStyle() {
      let innerWidth =  window.innerWidth
      const scaleX = innerWidth / 1920;
      this.scaledStyle.transform = `scale(${scaleX},1)`;
    }
}

这里就是在methods里面定义一个方法,监听窗体的变化,然后计算该缩放多少倍。
window.innerWidth 是获取当前窗口的宽度,window里面还有其他属性,例如 innerHeight 获取窗口的高度等,我这里值改变窗口的宽度,所以获取高度。
const scaleX = innerWidth / 1920; 这个是计算缩放的比例,1920是自己定的,就看正常不缩放时窗口的宽度是多少,如果时1080,那就设置1080,当然也可以是页面的某个div,我这里是整个页面。
说白了就是原始不缩放时的宽高。

3、监听窗口变化,计算比例值,并赋值给transform 属性

最后就是

this.scaledStyle.transform = `scale(${scaleX},1)`;

这里其实就是给transform 属性赋值,transform 属性可以赋两个值,也就是x,y值,横边缩放和竖边缩放,这两个值是这样赋值的 scale(0.7,0.8),这就是横向缩小为原来的0.7倍,竖向缩小为原来的0.8倍。
我这里竖向不缩放所以直接写1,横向是根据当前的窗口宽度和原来的比,得到一个比例值决定缩小还是放大的。

4、实现监听

 mounted() {
    this.$nextTick(()=> {
      this.updateScaledStyle()
    })
    window.addEventListener('resize', this.updateScaledStyle)
  },

mounted 是vue生命周期中载入后执行的,但是这里还没有渲染dom,获取不到dom。
意思就是获取不到宽高,所以这里加了一个nextTick获取到下一个更新的dom,以保证能够获取到dom。
获取到dom之后去执行更新方法updateScaledStyle
最后一句 window.addEventListener(‘resize’, this.updateScaledStyle) 就是将 updateScaledStyle方法加入到监听事件中,resize 是监听窗口的额变化,然后执行updateScaledStyle方法,起到窗口变化,同时缩放div的效果

3、html 代码

<template>
  <div  :style="scaledStyle">
	// 其他内容
  </div>
</template>

这里html的代码就简单了,就是定义一个div标签,一个动态的样式。

4、特别注意

这里div里面的所有样式不能用%,例如宽5%,高10%这些百分比的样式。
不然缩放的事样式按百分比缩放会乱。
这是我遇到的问题,你们可以试一下。
个人觉得它这个缩放其实是把div下的所有内容当做一张图一样来缩放,所以你在里面写的固定px值也会跟着缩放。文章来源地址https://www.toymoban.com/news/detail-639599.html

到了这里,关于前端css + js +vue +element-ui 实现响应式布局,根据浏览器窗体大小自动响应的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue搭配element-ui前端实现表格分页

    如果不从后台请求数据,那么就需要在前端手动管理数据。可以使用以下步骤实现该功能: 在 Vue 组件的 data 中定义一个数组来存放所有数据(不分页)。 在 mounted 钩子函数中,手动获取数据并存放到上一步定义的数组中。 在模板中使用 element-ui 的表格组件来展示数据,同

    2024年02月11日
    浏览(30)
  • 简单的vue+element-ui纯前端实现基本增删改查功能

    建立一个vue2的项目: 打开控制台,输入命令:vue create xxx(项目名称,记得要小写哈),并回车,记得选择vue2  用vscode打开项目,并 引入相关的依赖 打开项目 终端,输入命令 npm i element-ui -S npm install less-loader@5.0.0 --save  npm install less --save 点击进入main.js,引入elementui ,加上下面

    2024年02月06日
    浏览(42)
  • Vue使用element-ui/plus组件布局容器container失效解决方法

    这个错我遇到了好几次,每一次都花了很长时间解决,还是决定写个笔记记录一下。 在使用elementu官网的布局容器时,他是这样的。 我在确定elementui引入正确的情况下是这样写的。 注意,我在SideNav,Header,Main,Footer组件套了el-aside,el-header... 然后暴露出来在Home中引用。 当然错

    2024年02月11日
    浏览(36)
  • element-ui实现一个动态布局的对话框

     我把组件上传到npm了,具体使用方法请看:https://gitee.com/zengyanfang/tablelist-way/blob/master/README.md#%E5%8F%82%E6%95%B0 前言:在工作中有各种各样的对话框,最多就是填写信息这些的,一般这样的内容都是el-input输入框,el-select选择框等等之内的,这时我们就可以封装成一个组件,想

    2024年02月01日
    浏览(32)
  • Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页

    Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页:         当table的数据量比较大的时候,一个屏幕展示不出全部的数据,这个时候就需要分页显示。而多数情况下都是做的后端分页,就是将分页参数和查询条件一并传到后端,后端将当前页要

    2024年01月20日
    浏览(39)
  • 前端基础(CSS)——css介绍 & 常用样式 & 案例—进化到Bootstrap——进化到Element-UI(未完待续)

    css是什么,层叠样式表, css作用:让html网页有布局,变漂亮 参考w3school 以p标签为例, 序号 位置 优先级 1 写在p标签内 最高 2 写在style内 第二 3 写在link内 最低 (1)标签选择器—div{} 标签选择器,选择html文档中所有的div,对所有的div进行设置 (2)id选择器----#div01{} 符号

    2024年02月08日
    浏览(37)
  • Springboot04--vue前端部分+element-ui

    注意点:  这边v-model和value的区别:v-model是双向绑定的,value是单向绑定 li的key的问题  vue的组件化开发:  安装完之后可以在cmd里面使用以下指令  安装好之后,找到你放代码的目录,cmd,然后npm install -g @vue/cli  新手选第三个,然后取消掉下面这个  运行项目的代码:  

    2024年02月13日
    浏览(27)
  • Vue element-ui form 表单 前端提交和后端的接收

    一、前端 1、新建弹窗dialog 2、在数据(data)里面绑定(return)数据 3、在method里新建方法 二、后端 1、在配置好mybatis-plus的前提下 2、在控制类中添加方法 3、@RequestBody注解的使用 @requestBody注解的使用 - 西风恶 - 博客园 (cnblogs.com)

    2024年02月15日
    浏览(42)
  • 菜鸟级:Vue Element-UI 前端 + Flask 后端 的登录页面验证码

    这里记录登录页面验证码的做法,采取的是前后端分离的做法,前端用Vue,后端用Flask 首先是GIF效果图: 后端返回的数据结构(base64字符串,response.data.img):   1、Vue前端页面基本采用Ruoyi Ui里面的登录页面代码,里面的一些方法进行重写; 首先是单个vue文件里网页内容

    2023年04月08日
    浏览(44)
  • 仿chatGPT或chatPDF的前端界面布局,css实现对话聊天布局代码,响应式左右分栏布局(附完整源代码)

    chatPDF或者chatGPT的界面挺简洁的,就是一个左侧的列表以及右侧的对话列表,现在使用css实现这样的布局 充分运用了flex布局方式实现,左右分栏,以及对话形式展示效果 下面是效果图:   在手机设备看就隐藏左侧,右侧100%适应  下面就是html和css的布局代码  

    2023年04月22日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包