Vue 实现响应式布局

news2025/1/17 6:19:19

实现响应式布局是工作中必不可少 客户需要

若是使用vue +element ui 的方式实现

浏览器宽度为760的情况

浏览器宽度为360的情况 

手机上的显示的情况

一、对于屏幕尺寸的定义

element UI参照Bootstrap的解决方案提供了五种屏幕大小尺寸:xs、sm、md、lg 和 xl。并对这五种尺寸提供了两种解决方案。

名称尺寸设备
xs <768px  超小屏 如:手机
sm ≥768px 小屏幕 如:平板
md ≥992px  中等屏幕 如:桌面显示器
lg≥1200px     大屏幕 如:大桌面显示器
xl   ≥1920px  2k屏等

二、Element UI提供的两种解决方案
 

(一)在标签中指定元素所占大小
这种方式通常需要结合<el-row></el-row>标签使用。在列元素中指定不同尺寸下元素所占的大小,例如:xs="4"表示在手机上将一行分为24栏本元素占4栏。这种方法简化了CSS关于响应式布局代码的编写,但是需要配合<el-row></el-row>标签使用,不是很灵活。

<el-row :gutter="10">
  <el-col :xs="8" :sm="6" :md="4" :lg="3" :xl="1"><div class="grid-content bg-purple"></div></el-col>
  <el-col :xs="4" :sm="6" :md="8" :lg="9" :xl="11"><div class="grid-content bg-purple-light"></div></el-col>
  <el-col :xs="4" :sm="6" :md="8" :lg="9" :xl="11"><div class="grid-content bg-purple"></div></el-col>
  <el-col :xs="8" :sm="6" :md="4" :lg="3" :xl="1"><div class="grid-content bg-purple-light"></div></el-col>
</el-row>

:xs="4"表示在手机上将一行分为24栏本元素占4栏。这种方法简化了Css关于响应式布局代码的编写,但是需要配合<el-row></el-row>标签使用,不是很灵活。

(二)使用样式类指定元素是否显示

这种方法需要导入element-ui/lib/theme-chalk/display.css样式就可以实现在不同屏幕尺寸下,元素是否显示。这种方法的好处是不需要配合<el-row></el-row>标签就可以使用,使用起来比较灵活。但是这种只能简单的对元素进行隐藏,如果需要实现稍微复杂点的响应式样式就要思考很多。使用这种方法首先需要导入样式:import 'element-ui/lib/theme-chalk/display.css';。然后在目标元素上添加类名就行。例如:

<el-divider class="hidden-sm-and-up"></el-divider>

这表示<el-divider></el-divider>元素在手机网页中显示,在平板及比平板屏幕大的设备上隐藏。下面是Element UI官网提供的一些用于隐藏元素的类名。

hidden-xs-only - 当视口在 xs 尺寸时隐藏
hidden-sm-only - 当视口在 sm 尺寸时隐藏
hidden-sm-and-down - 当视口在 sm 及以下尺寸时隐藏
hidden-sm-and-up - 当视口在 sm 及以上尺寸时隐藏
hidden-md-only - 当视口在 md 尺寸时隐藏
hidden-md-and-down - 当视口在 md 及以下尺寸时隐藏
hidden-md-and-up - 当视口在 md 及以上尺寸时隐藏
hidden-lg-only - 当视口在 lg 尺寸时隐藏
hidden-lg-and-down - 当视口在 lg 及以下尺寸时隐藏
hidden-lg-and-up - 当视口在 lg 及以上尺寸时隐藏
hidden-xl-only - 当视口在 xl 尺寸时隐藏

三、不该被忘记的CSS语法

比如时间选择器不能满足需求时,我们可以使用@media语法来确定屏幕尺寸,并且指定在不同尺寸下的元素样式。例如,我们指定一个元素在不同屏幕尺寸下的大小:

浏览器宽度800的情况

 手机尺寸的情况:

@media screen and (max-width: 768px) {
  .customCon .el-picker-panel__body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }
  .customCon .el-date-range-picker__content {
    width: 100%;
  }
}

效果图:

pc

手机设备

 

示例代码如下:无添加额外class

<template>
  <div>
    <el-row :gutter="25">
      <el-form ref="elForm" :model="formData" :rules="rules" size="medium">
        <el-col :span="20" :xs="24">
          <el-form-item label="线索内容" prop="clueContent">
            <el-input
              v-model="formData.clueContent"
              type="textarea"
              placeholder="请输入线索内容"
              :autosize="{ minRows: 4, maxRows: 4 }"
              :style="{ width: '100%' }"
            />
          </el-form-item>
        </el-col>
        <el-col :span="20" :xs="24">
          <el-button type="primary" style="" @click="findClue">检索</el-button>
        </el-col>

        <el-col :span="24">
          <el-form-item label="涉及企业" prop="clueCompany">
            <el-input
              v-model="formData.clueCompany"
              placeholder="请输入涉及企业"
              clearable
            />
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="所属镇街" prop="regionName">
            <el-select
              v-model="formData.regionName"
              placeholder="请选择"
              clearable
              filterable
            >
              <el-option
                v-for="(item, index) in regionNameOptions"
                :key="index"
                :label="item.label"
                :value="item.label"
              />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="线索地址" prop="clueAddress">
            <el-input
              v-model="formData.clueAddress"
              placeholder="请输入线索地址"
              clearable
            />
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="线索类型" prop="clueType">
            <el-radio-group v-model="formData.clueType" size="medium">
              <el-radio
                v-for="(item, index) in clueTypeOptions"
                :key="index"
                :label="item.value"
                :disabled="item.disabled"
                >{{ item.label }}</el-radio
              >
            </el-radio-group>
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="污染源类型" prop="pollutionType">
            <el-radio-group v-model="formData.pollutionType" size="medium">
              <el-radio
                v-for="(item, index) in pollutionTypeOptions"
                :key="index"
                :label="item.dictValue"
                >{{ item.dictLabel }}</el-radio
              >
            </el-radio-group>
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="违法行为项" prop="wfxwx">
            <el-select
              v-model="formData.wfxwx"
              value-key="id"
              placeholder="请选择"
              clearable
              filterable
              @change="breakChange"
            >
              <el-option
                v-for="item in wfxwxArr"
                :key="item.id"
                :label="item.wfxwx"
                :value="item"
              />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="法律法规名称" prop="flfgName">
            <el-input
              v-model="formData.flfgName"
              placeholder="请查看法律法规名称"
              clearable
            />
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="法律法规内容" prop="flfgContent">
            <el-input
              v-model="formData.flfgContent"
              placeholder="请查看法律法规内容"
              clearable
              autosize
              type="textarea"
            />
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="线索时间" prop="clueTime">
            <el-date-picker
              v-model="formData.clueTime"
              format="yyyy-MM-dd"
              value-format="yyyy-MM-dd"
              :style="{ width: '100%' }"
              placeholder="请选择线索时间"
              clearable
            />
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="线索交办科室" prop="designateDept">
            <el-cascader
              v-model="formData.designateDept"
              :options="designateDeptOptions"
              :props="designateDeptProps"
              :style="{ width: '100%' }"
              placeholder="请选择线索交办科室"
              clearable
              @change="handleChange"
            />
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="是否为线索" prop="isClueFirstStep">
            <el-radio-group v-model="formData.isClueFirstStep" size="medium">
              <el-radio
                v-for="(item, index) in isClueFirstStepOptions"
                :key="index"
                :label="item.value"
                :disabled="item.disabled"
                >{{ item.label }}</el-radio
              >
            </el-radio-group>
          </el-form-item>
        </el-col>
        <el-col :span="20">
          <el-form-item label="理由" prop="isClueFirstStepReson">
            <el-input
              v-model="formData.isClueFirstStepReson"
              type="textarea"
              placeholder="请输入理由"
              :autosize="{ minRows: 4, maxRows: 4 }"
              :style="{ width: '100%' }"
            />
          </el-form-item>
        </el-col>
        <el-col v-if="this.deployId" :span="24">
          <el-form-item size="large">
            <el-button type="primary" @click="submitForm">提交</el-button>
            <el-button @click="resetForm">重置</el-button>
          </el-form-item>
        </el-col>
      </el-form>
    </el-row>
  </div>
</template>

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

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

相关文章

帮助谷歌从40人裂变为60000人的OKR是啥?

OKR&#xff08;Objectives and Key Results&#xff09;是一种目标管理方法&#xff0c;旨在帮助组织和个人明确目标并衡量成功。在谷歌的发展过程中&#xff0c;OKR扮演了至关重要的角色&#xff0c;帮助公司从40人规模快速成长为60000人的科技巨头。 OKR适用于各种类型的企…

Spring中你应该要知道的initMethod

文章目录 功能源码 功能 之前的文章中由解析过PostConstruct/PreDestroy&#xff0c;他们也是initMethod的一种形式&#xff0c;注解方式是后来才加入的&#xff0c;在源码中他们的命名都是一样的名字&#xff0c;都叫initMethod&#xff0c;不过他们却是有着很大的差别&#…

MySQL数据库基础和基本的增删改查操作

目录 前瞻 数据库的基本概念 数据库管理系统&#xff08;DBMS&#xff09; 数据库系统(DBS) 数据库类型和常用数据库 关系型数据库 SQL 非关系型数据库 NoSQL SQL语句 简介 SQL语句分类 常用的数据类型 MySQL的六大约束特性 SQL语句的使用 创建及删除数据库和表 …

quic协议及核心源码分析

quic协议 1、网络通信时&#xff0c;为了确保数据不丢包&#xff0c;早在几十年前就发明了tcp协议&#xff01;然而此一时非彼一时&#xff0c;随着技术进步和业务需求增多&#xff0c;tcp也暴露了部分比较明显的缺陷&#xff0c;比如: 建立连接的3次握手延迟大&#xff1b; T…

亚信安慧AntDB数据库荣获“2023年度信创卓越贡献奖”

近日&#xff0c;业界知名IT垂直门户媒体IT168公布“2023技术卓越奖”获奖名单&#xff0c;亚信安慧AntDB数据库荣获“2023年度信创卓越贡献奖”。 图1&#xff1a;亚信安慧AntDB数据库荣获“2023年度信创卓越贡献奖” “技术卓越奖”评选是IT168重要的年度奖项评选&#xff0c…

【Filament】纹理贴图

1 前言 本文主要介绍使用 Filament 实现纹理贴图&#xff0c;读者如果对 Filament 不太熟悉&#xff0c;请回顾以下内容。 Filament环境搭建绘制三角形绘制矩形绘制圆形绘制立方体 Filament 纹理坐标的 x、y 轴正方向分别朝右和朝上&#xff0c;其 y 轴正方向朝向与 OpenGL ES…

使用StableDiffusion进行图片Inpainting原理

论文链接&#xff1a;RePaint: Inpainting using Denoising Diffusion Probabilistic Models代码链接&#xff1a;RePaint Inpainting任务是指在任意一个二进制的掩码指定的图片区域上重新生成新的内容&#xff0c;且新生成的内容需要和周围内容保持协调。当前SOTA模型用单一类…

天文与计算机:技术的星辰大海

天文与计算机&#xff1a;技术的星辰大海 一、引言 在人类的历史长河中&#xff0c;天文学与计算机技术这两个领域似乎相隔甚远&#xff0c;然而在科技的推动下&#xff0c;它们却逐渐走到了一起&#xff0c;为人类对宇宙的探索开辟了新的道路。天文观测的复杂度与数据量随着…

C++初阶——类和对象

呀哈喽&#xff0c;我是结衣 C入门之后&#xff0c;我们就进入了C的初阶的学习了&#xff0c;在了解类和对象之前&#xff0c;我们还是先了解&#xff0c;面向过程和面向对象的初步认识。 在本篇博客中&#xff0c;我们要讲的内容有 1.面向过程和面向对象初步认识 2.类的引入 3…

数据流图_DFD图_精简易上手

数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输人移动到输出的过程中所经受的变换。 首先给出一个数据流图样例 基本的四种图形 直角矩形:代表源点或终点,一般来说,是人,如例图的仓库管理员和采购员圆形(也可以画成圆角矩形):是处理,一般来说,是动作,是动词名词的形式…

攻防世界——game 游戏

下载下来是一个exe文件&#xff0c;可以用IDA打开 我们先运行一下 这是属于第二种类型&#xff0c;完成一个操作后给你flag 这种题我更倾向于动调直接得到flag 我们查壳 没有保护壳&#xff0c;直接32打开 进入字符串界面&#xff0c;找到显示的那部分 int __cdecl main_0(…

传感器原理及工程应用(2)---传感器

文章目录 1. 传感器概述1.1 传感器的组成1.2 传感器的分类 2. 传感器的静态特性2.1 灵敏度2.2 线性度2.3 迟滞2.4 重复性2.5 漂移 1. 传感器概述 1.1 传感器的组成 1. 传感器能感受&#xff08;或响应&#xff09;规定的被测量并按照一定的规律转换成可用输出信号的器件或装置…

B041-SSM集成_拦截器

目录 SSM整合简介整合步骤先准备spring环境核心配置文件 Spring整合Mybatis准备数据库和表Spring管理数据库连接属性文件Spring管理连接池实体类、mapper接口和映射文件Spring管理SqlSessionFactorySpring管理Mapper接口Spring管理Servive层 Spring整合SpringMVC准备web.xml准备…

PromptNER: Prompt Locating and Typing for Named Entity Recognition

原文链接&#xff1a; https://aclanthology.org/2023.acl-long.698.pdf ACL 2023 介绍 问题 目前将prompt方法应用在ner中主要有两种方法&#xff1a;对枚举的span类型进行预测&#xff0c;或者通过构建特殊的prompt来对实体进行定位。但作者认为这些方法存在以下问题&#xf…

最小二乘法简介

最小二乘法简介 1、背景描述2、最小二乘法2.1、最小二乘准则2.2、最小二乘法 3、最小二乘法与线性回归3.1、最小二乘法与线性回归3.2、最小二乘法与最大似然估计 4、正态分布&#xff08;高斯分布&#xff09; 1、背景描述 在工程应用中&#xff0c;我们通常会用一组观测数据去…

(Mac上)使用Python进行matplotlib 画图时,中文显示不出来

【问题描述】 ①报错确缺失字体&#xff1a; ②使用matplotlib画图&#xff0c;中文字体显示不出来 【问题思考】 在网上搜了好多&#xff0c;关于使用python进行matplotlib画图字体显示不出来的&#xff0c;但是我试用了下&#xff0c;对我来说都没有。有些仅使用于windows系…

中心性算法归纳

中心性算法不仅是在我所学习的计算机网络当中起很重要的作用&#xff0c;在交通网络、社交网络、信息网络、神经网络当中也有很多的应用例子。今天我在这里总结一下场景的几种中心性算法。 参考文献 Python NetworkX库 偏心中心性&#xff08;Eccentricity Centrality&#x…

在Linux下探索MinIO存储服务如何远程上传文件

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 创建Buckets和Access Keys二. Linux 安装Cpolar三. 创建连接MinIO服务公网地…

python时间处理方法和模块

在 Python 中&#xff0c;有一些内置的模块和库&#xff0c;可以帮助我们处理日期和时间的表示、计算和转换。 1. 时间模块&#xff08;time&#xff09; Python 的 time 模块提供了一系列函数来处理时间相关的操作。通过这个模块&#xff0c;可以获取当前时间、睡眠指定时间…

BIT-6-指针(C语言初阶学习)

1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 1. 指针是什么&#xff1f; 指针是什么&#xff1f; 指针理解的2个要点&#xff1a; 指针是内存中一个最小单元的编号&#xff0c;也就是地址平时口语中说的指针&#xff0c;通常…