Vue 实现响应式布局

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

若是使用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>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CAD制图

CAD制图 二维到三维 文章目录 CAD制图前言一、CAD制图二、机械设计三、二维图纸四、三维图纸总结前言 CAD制图可以提高设计效率和准确性,并方便文档的存档和交流,是现代工程设计中不可或缺的一部分。 一、CAD制图 CAD(Computer-Aided Design)是利用计算机技术辅助进行设计…

web3风险投资公司之Electric Capital

文章目录 什么是 Electric CapitalElectric团队 Electric Capital 开发者报告参考 什么是 Electric Capital 官网&#xff1a;https://www.electriccapital.com/ 官方github&#xff1a;https://github.com/electric-capital Electric Capital 是一家投资于加密货币、区块链企…

自学华为鸿蒙开发?一般人我还是劝你算了吧!!!

本人纯屌丝一枚&#xff0c;在学编程之前对电脑的认知也就只限于上个网&#xff0c;玩个办公软件。这里不能跑题&#xff0c;我为啥说自学鸿蒙开发&#xff0c;一般人我还是劝你算了吧。因为我就是那个一般人。 基础真的很简单&#xff0c;是个人稍微认点真都能懂&#xff0c;…

如何要做好年终绩效

年终绩效&#xff0c;每年12月份&#xff0c; 都是“绩效”这个词比较热门的阶段&#xff0c; 各个企业各个部门避不开的话题。 那如何能做好呢&#xff0c;一起来看看关于 要做好年终绩效考核、绩效面谈和绩效环评的建议吧&#xff01; 明确目标和指标&#xff1a;在考核开…

轻松搭建知识付费小程序:让知识传播更便捷

明理信息科技saas知识付费平台 在当今数字化时代&#xff0c;知识付费已经成为一种趋势&#xff0c;越来越多的人愿意为有价值的知识付费。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。同时&#xff0c;开发和维护…

C# 基于MQTT创建客户端的可靠数据传输

C# 基于MQTT创建客户端的可靠数据传输 引言MQTT简介C# MQTT库引用代码和描述1、 代码2、 描述 引言 MQTT是tcpip的应用层协议&#xff0c;这里我们简单介绍一下MQTT的基本概念&#xff0c;并用C# 描述客户端的订阅和发布。 MQTT简介 MQTT(Message Queuing Telemetry Transpor…

AcWing125. 耍杂技的牛(贪心+推公式)

题目链接AcWing125. 耍杂技的牛 分析: 这是一道贪心问题&#xff0c;我们假设牛最终的摆放顺序(从上大小)为1,2,3,...i,i1,...,n&#xff0c;当存在相邻的两头牛i,i1如果 w i s i > w i 1 s j 1 w_is_i> w_{i1}s_{j1} wi​si​>wi1​sj1​ 那么交换两头牛i,i1的…

ansibe的脚本---playbook剧本(1)

playbook剧本组成部分&#xff1a; 1、task 任务&#xff1a; 主要是包含要在目标主机上的操作&#xff0c;使用模块定义操作。每个任务都是模块的调用。 2、variables变量&#xff1a;存储和传递数据。变量可自定义&#xff0c;可以在playbook中定义为全局变量&#xff0c;可…

centos7服务器安装 mysql

centos7服务器安装 mysql 一、下载 官网&#xff1a;https://dev.mysql.com/downloads/mysql/ 二、安装 1.查看有没有需要卸载的SQL包&#xff0c;一般系统的mariadb是自带的&#xff0c;需要卸载 rpm -qa | grep mysql rpm -qa | grep mariadb例如&#xff1a;安装过MySQL…

ubuntu保存分辨率失效解决办法

在VM虚拟机中&#xff0c;遇到修改ubuntu分辨率后&#xff0c;重启后又重置的解决办法。 目前我的ubuntu版本是&#xff1a;ubuntu 18.04.6 版本。 1.首先&#xff0c;在你喜欢的目录建立一个.sh 脚本文件。 终端执行命令&#xff1a;sudo vim xrandr.sh 2.按 i 进入编辑状…

开放原子线下训练营---STM32H7搭载TobudOS开发心得

导语&#xff1a; 本次线下活动是以STM32H7为核心的一个功能强大的开发板&#xff0c;不仅支持Audio&#xff0c;HDMI&#xff0c;还支持4G或者WiFi模块&#xff0c;也可以外接屏幕&#xff0c;本次线下训练营是以4G模块进行开发。 线下的实物开发板如下所示&#xff1a; 注意…

更改WiseAlign软件界面图标方法

更改WiseAlign软件界面图标方法 未替换时 首先将图片转换为BMP格式&#xff0c;在搜索栏处输入画图&#xff0c;点击打开画图工具 按住图标拖动到画布内&#xff0c;或是直接CtrlV将图标复制到画布内 点击文件&#xff0c;再点击另存为 保存类型选择“24位位图&#xff08;*.bm…

超分辨数据集:Set5 Set14 BSD100 Urban100 Manga109

DIV2K数据集官网上很好找到&#xff0c;但是网上流传的Set5 14 BSD100,Urban100 Manga109都是私人进行处理过的版本&#xff0c;各个处理方式都不同&#xff0c;为了统一方式写了这篇文章。 官方的DIV2K x2、x3、x4的LR图片使用下面matlab代码生成&#xff08;已经经过测试最后…

Hadoop入门学习笔记——五、在虚拟机中部署Hive

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记&#xff08;汇总&#xff09; 目录 五、在虚拟机中部署Hive5.1. 在node1虚拟机安装MySQL5.2.…

drawio绘制组织架构图和树形图

drawio绘制组织架构图和树形图 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云…

VSCode SSH 连接提示: spawn UNKNOWN

随笔记录 目录 1. 背景介绍 2. 确认问题 : ssh -V 3. 解决问题 3.1 确认本地 ssh.exe 路径 3.2 修改vscode Remote.ssh:Path 3.2.1 设置 Reomte.ssh:Path - 方法一 3.2.2 设置 Reomte.ssh:Path - 方法二 1. 背景介绍 windows 系统vscode ssh remote CentOS7&#xff…

【Nacos】—客户端与服务端源码解析

Nacos系列 Nacos—简述、注册中心、配置中心 Nacos安装教程 SpringBoot项目与Nacos配置 一、背景介绍 Nacos&#xff08;Naming and Configuration Service&#xff09;是阿里巴巴开源的服务发现和配置管理工具&#xff0c;它是一个全面的微服务基础设施组件&#xff0c;提供…

Linux命令-查看内存、GC情况及jmap 用法

查看进程占用内存、CPU使用情况 1、查看进程 #jps 查看所有java进程 #top 查看cpu占用高进程 输入m &#xff1a;根据内存排序 topMem: 16333644k total, 9472968k used, 6860676k free, 165616k buffers Swap: 0k total, 0k used, 0k free, 6…

【vue】前端页面点击按钮弹窗播放m3u8格式视频

最终效果&#xff1a; 1.表格操作列 <el-table ref"tables" v-loading"loading" :data"list" :default-sort"defaultSort" sort-change"handleSortChange" border><el-table-column label"id" align&qu…

【面向对象】对比JavaScript、Go、Ada、Python、C++、Java、PHP的访问限制。

在不同编程语言中&#xff0c;控制成员&#xff08;变量、方法、类等&#xff09;可见性的机制不尽相同。以下是对比JavaScript、Go、Ada、Python、C、Java、PHP所使用的访问限制关键字和约定&#xff1a; 一、JavaScript ### JavaScript访问限制 早期的JavaScript并没有类似…