Vue2 窗口自适应

本文讨论了前端开发中像素(px)、视窗单位(vw/vh)和根元素单位(rem)的特性及其在响应式设计中的应用,提供如何根据项目需求选择合适的长度单位的建议。
摘要由CSDN通过智能技术生成

在前端开发的广阔天地中,长度单位的选取无疑是一门精深的学问。尤其在追求响应式设计和页面一致性的当下,如何恰到好处地运用各种长度单位,成为了一个值得深入探讨的话题。本文将带领大家走进像素(px)、视窗单位(vw/vh)和根元素单位(rem)的世界,解析它们之间的微妙差异,并探讨在实际应用中如何明智地选择。

一、像素px——固定单位

像素px,作为数字图像的基本单元,在前端开发中扮演着举足轻重的角色。它的优点在于精确性,能够确保元素在特定分辨率下的精确呈现。然而,像素的缺点也显而易见:它不具备响应性,当屏幕尺寸或分辨率发生变化时,以像素为单位的元素大小可能会显得格格不入。

二、视窗单位vw/vh——相对单位

视窗单位(vw/vh),视窗单位是一种相对单位,其中vw代表视窗宽度的百分比,vh代表视窗高度的百分比。这意味着使用vw/vh单位的元素会根据视窗的大小自动调整尺寸,从而实现真正的响应式设计。视窗单位的优势在于其灵活性和适应性,使得页面在不同设备和屏幕尺寸上都能呈现出良好的视觉效果。然而,过度使用视窗单位可能导致页面布局在极端屏幕尺寸下出现问题,因此需要谨慎使用。

三、根元素单位rem

根元素单位(rem),rem是相对于根元素(html)字体大小的单位。这意味着当根元素的字体大小发生变化时,所有使用rem单位的元素都会相应地调整尺寸。这使得rem在全局样式调整中具有得天独厚的优势。此外,与视窗单位相比,rem单位在极端屏幕尺寸下的表现更为稳定。然而,使用rem单位需要注意与字体大小的关联,以及在不同上下文中可能产生的差异。

那么,在实际应用中如何选择合适的长度单位呢?这需要根据项目的具体需求和目标来权衡。对于需要精确控制尺寸的元素,像素可能是一个不错的选择;对于追求响应式设计的项目,视窗单位能够带来更好的灵活性和适应性;而在需要全局调整样式的情况下,根元素单位则可能更具优势。当然,在实际开发中,我们往往需要根据具体情况综合运用这些长度单位,以达到最佳的视觉效果和用户体验。

echarts 树状图示例
<template>
    <div :id="id" :option="option" :style="chartStyle"></div>
</template>

<script>
import * as Charts from 'echarts';
export default {
    props: {
        id: {
            default: "myChart"
        },
    },
    data() {
        return {
            chartInstance: null,
            option: {
                series: [
                    {
                        type: 'tree',
                        id: 0,
                        name: 'tree1',
                        data: [],
                        top: '10%',
                        left: '5%',
                        bottom: '22%',
                        right: '5%',
                        orient: 'vertical',
                        symbolSize: 14,
                        edgeShape: 'polyline',
                        edgeForkPosition: '63%',
                        initialTreeDepth: 3,
                        lineStyle: {
                            width: 2
                        },
                        label: {
                            backgroundColor: '#fff',
                            position: 'left',
                            verticalAlign: 'middle',
                            align: 'right'
                        },
                        leaves: {
                            label: {
                                position: 'vertical', // 所有叶子节点也设置为竖直放置
                                rotate: 90, // 旋转标签以便更好的阅读
                            }
                        },
                        emphasis: {
                            focus: 'descendant'
                        },
                        expandAndCollapse: true,
                        animationDuration: 550,
                        animationDurationUpdate: 750
                    }
                ]
            },
            chartStyle: {
                height: "1000px", width: "100%",
            },
            dataList: [
                {
                    name: 'flare',
                    children: [
                        {
                            name: 'data',
                            children: [
                                {
                                    name: 'converters',
                                    children: [
                                        { name: 'Converters', value: 721 },
                                        { name: 'DelimitedTextConverter', value: 4294 }
                                    ]
                                },
                                {
                                    name: 'DataUtil',
                                    value: 3322
                                }
                            ]
                        },
                        {
                            name: 'display',
                            children: [
                                { name: 'DirtySprite', value: 8833 },
                                { name: 'LineSprite', value: 1732 },
                                { name: 'RectSprite', value: 3623 }
                            ]
                        },
                        {
                            name: 'flex',
                            children: [{ name: 'FlareVis', value: 4116 }]
                        },
                        {
                            name: 'query',
                            children: [
                                { name: 'AggregateExpression', value: 1616 },
                                { name: 'And', value: 1027 },
                                { name: 'Arithmetic', value: 3891 },
                                { name: 'Average', value: 891 },
                                { name: 'BinaryExpression', value: 2893 },
                                { name: 'Comparison', value: 5103 },
                                { name: 'CompositeExpression', value: 3677 },
                                { name: 'Count', value: 781 },
                                { name: 'DateUtil', value: 4141 },
                                { name: 'Distinct', value: 933 },
                                { name: 'Expression', value: 5130 },
                                { name: 'ExpressionIterator', value: 3617 },
                                { name: 'Fn', value: 3240 },
                                { name: 'If', value: 2732 },
                                { name: 'IsA', value: 2039 },
                                { name: 'Literal', value: 1214 },
                                { name: 'Match', value: 3748 },
                                { name: 'Maximum', value: 843 },
                                {
                                    // name: 'methods',
                                    children: [
                                        { name: 'add', value: 593 },
                                        { name: 'and', value: 330 },
                                        { name: 'average', value: 287 },
                                        { name: 'count', value: 277 },
                                        { name: 'distinct', value: 292 },
                                        { name: 'div', value: 595 },
                                        { name: 'eq', value: 594 },
                                        { name: 'fn', value: 460 },
                                        { name: 'gt', value: 603 },
                                        { name: 'gte', value: 625 },
                                        { name: 'iff', value: 748 },
                                        { name: 'isa', value: 461 },
                                        { name: 'lt', value: 597 },
                                        { name: 'lte', value: 619 },
                                        { name: 'max', value: 283 },
                                        { name: 'min', value: 283 },
                                        { name: 'mod', value: 591 },
                                        { name: 'mul', value: 603 },
                                        { name: 'neq', value: 599 },
                                        { name: 'not', value: 386 },
                                        { name: 'or', value: 323 },
                                        { name: 'orderby', value: 307 },
                                        { name: 'range', value: 772 },
                                        { name: 'select', value: 296 },
                                        { name: 'stddev', value: 363 },
                                        { name: 'sub', value: 600 },
                                        { name: 'sum', value: 280 },
                                        { name: 'update', value: 307 },
                                        { name: 'variance', value: 335 },
                                        { name: 'where', value: 299 },
                                        { name: 'xor', value: 354 },
                                        { name: 'x_x', value: 264 }
                                    ]
                                },
                                { name: 'Minimum', value: 843 },
                                { name: 'Not', value: 1554 },
                                { name: 'Or', value: 970 },
                                { name: 'Query', value: 13896 },
                                { name: 'Range', value: 1594 },
                                { name: 'StringUtil', value: 4130 },
                                { name: 'Sum', value: 791 },
                                { name: 'Variable', value: 1124 },
                                { name: 'Variance', value: 1876 },
                                { name: 'Xor', value: 1101 }
                            ]
                        }
                    ],
                }
            ]
        }
    },
    mounted() {
        this.chartInstance = Charts.init(document.getElementById(this.id));
        this.option.series[0].data = this.dataList;
        this.chartInstance.setOption(this.option);
        const self = this;
        if (this.chartInstance) {
            window.addEventListener("resize", () => {
                // 改变长宽
                self.chartInstance.resize();
            });
        }

    },
    unmounted() {
        if (this.chartInstance) {
            window.removeEventListener('resize', this.chartInstance.resize); //销毁图表监听事件
            this.chartInstance.dispose();
        }
    }
};
</script>

<style scoped></style>
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Vue后台管理项目是一种用于管理和操作后台数据的web应用程序。它基于Vue.js这个流行的JavaScript框架,并结合了其他插件和工具来实现丰富的功能和良好的用户体验。 首先,Vue后台管理项目采用了组件化的架构,将一个页面拆分为多个可重用的组件,这样可以提高代码的可维护性和重用性。每个组件负责不同的功能,例如用户管理、商品管理、订单管理等,通过组合这些组件可以构建出完整的后台管理系统。 其次,Vue后台管理项目具有响应式设计,可以适应不同尺寸的屏幕,包括电脑、平板和手机等。这使得管理员可以随时随地使用这个应用程序来管理后台数据,提升了工作的灵活性和效率。 此外,Vue后台管理项目还支持实时数据更新和交互。通过使用Vue的数据绑定和虚拟DOM技术,可以实现数据的双向绑定,当后台数据发生改变时,页面上的内容会自动更新,而不需要手动刷新页面。同时,它还支持一些交互操作,比如表单验证、搜索、排序、筛选等,方便管理员进行数据的查找和管理。 最后,Vue后台管理项目还提供了一些可自定义的主题和UI组件,使得管理员可以根据自己的需求来定制页面风格和用户界面。这些主题和UI组件可以提高页面的美观度和用户体验。 综上所述,Vue后台管理项目是一种功能丰富、灵活性高、用户体验好的web应用程序,适用于各种后台管理系统的开发。 ### 回答2: Vue后台管理项目是一种基于Vue.js框架开发的管理系统,用于管理和统计企业的各种数据信息以及业务流程。这种项目通常包含了用户管理、权限管理、数据可视化、数据统计、业务处理等功能模块。 在Vue后台管理项目中,用户管理模块负责管理系统的用户,包括用户的注册、登录、修改密码等功能,同时也包括用户权限的管理和分配。权限管理模块用于控制系统各个功能模块的访问权限,保证只有拥有相应权限的用户才能进行操作。 数据可视化模块是Vue后台管理项目的重要组成部分,它通过各种图表和图形展示企业的数据信息,帮助用户更直观地了解企业的运营情况和趋势。数据统计模块则对企业的各项指标进行统计分析,提供数据报表和图像展示,帮助用户更深入地了解企业的业务情况。 业务处理模块是Vue后台管理项目的核心功能模块,通过对各种业务流程的管理和处理,使企业能够高效地进行各项业务活动。该模块通常包括订单管理、库存管理、销售管理等功能,可以帮助企业实现订单的创建、处理和查询,库存的管理和统计,以及销售情况的跟踪和分析。 总之,Vue后台管理项目是一种集用户管理、权限管理、数据可视化、数据统计和业务处理于一体的管理系统,能够帮助企业高效地管理和处理各项业务。它以简洁高效的代码结构、灵活可扩展的功能模块、友好的用户界面和良好的用户体验,成为在企业中广泛应用的管理工具。 ### 回答3: Vue后台管理项目是一种基于Vue框架开发的一种管理系统,用于帮助企业、机构或个人管理和维护其业务数据和功能。该项目具有以下特点: 首先,Vue后台管理项目具有良好的用户界面设计。通过使用Vue的组件化开发,可以构建出现代化的用户界面,使用户能够直观地查看和操作系统的各种功能和数据。 其次,该项目具有响应式布局和自适应功能。通过使用Vue的响应式布局和强大的CSS库,可以使管理系统在不同屏幕大小和设备上能够自动适应,使用户在不同设备上都能够方便地使用管理功能。 再次,Vue后台管理项目具有灵活的数据管理和展示功能。通过Vue的数据双向绑定和组件化开发,可以轻松地读取、展示和修改后台数据库中的数据,使管理员可以方便地对数据进行增删改查操作。 此外,该项目还具有丰富的插件和组件库支持。通过Vue的插件系统和第三方组件库,可以快速引入各种强大的功能和界面组件,如图表、表单验证、富文本编辑器等,使系统具有更多的扩展性和灵活性。 最后,Vue后台管理项目还具备定制化和安全性。通过使用Vue的模块化开发和权限控制等技术,可以根据具体的业务需求和安全要求,对系统进行定制化和安全性的调整,以满足用户的特定需求和保护系统的安全性。 综上所述,Vue后台管理项目是一种强大、灵活和易用的管理系统,具有良好的用户界面设计、响应式布局和自适应功能、灵活的数据管理和展示功能、丰富的插件和组件库支持,以及定制化和安全性等特点,可以帮助用户更好地管理和维护其业务数据和功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

钓了猫的鱼儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值