当前位置: 首页 > article >正文

vue3 指定元素全屏 screenfull(可直接粘贴使用)

业务需求

由于输入的文字较多,需要将输入框进行全屏展示,方便输入和查看!

效果图

在这里插入图片描述
在这里插入图片描述

实现方式

  1. 下载插件"screenfull": “^6.0.2” yarn add screenfull -S
  2. 项目中使用 import screenfull from "screenfull"
  3. templte中代码
<div ref="textareaRef" class="screenFull">
        <el-icon class="screen_icon" @click.stop.prevent="handleScreen">
          <FullScreen />
        </el-icon>
        <el-input
          id="inputElement"
          v-model="noteData.noteText"
          :rows="rowSize"
          maxlength="5000"
          :autofocus="true"
          type="textarea"
          placeholder="有什么手记想分享给大家?"
        />
      </div>
  1. javascript代码
import { ref } from "vue";

const textareaRef = ref(null);
const rowSize = ref("3");


// 点击esc和x号退出全屏
const handleResize = () => {
  // 写法一 start 
  // document.webkitIsFullScreen  用来判断是否按了ESC和X号取消全屏 (webkitIsFullScreen有兼容性问题)
  if (!document.webkitIsFullScreen) {
    screenfull.exit();
    rowSize.value = "3";
    textareaRef.value.style.width = "100%";
    textareaRef.value.style.height = "";
  }
  // 写法一 end
  
  // 写法二 start  推荐
  if (!screenfull.isFullscreen) {
    screenfull.exit();
    rowSize.value = "3";
    if (textareaRef.value) {
      textareaRef.value.style.width = "100%";
      textareaRef.value.style.height = "";
    }
  }
  // 写法二 start
};

// 全屏
const handleScreen = () => {
  if (screenfull.isEnabled) {
    screenfull.toggle(textareaRef.value);
    rowSize.value = Math.floor(window.innerHeight / 17).toString(); // 该属性不能完成保证高度为多少行
    textareaRef.value.style.width = "100%";
    textareaRef.value.style.height = "100vh";
    textareaRef.value.style.backgroundColor = "#ffffff";
    window.onresize = handleResize;
  }
};
  1. style代码
<style lang="scss" scoped>
.screenFull {
  position: relative;
}

.screen_icon {
  position: absolute;
  top: 10px;
  right: 6px;
  z-index: 10;
  cursor: pointer;
  font-size: 15px;
}
</style>

http://www.kler.cn/news/307135.html

相关文章:

  • 《凡人歌》:网络安全组电话响3声必须接,安全组长被压迫患得惊恐症、抑郁症
  • HTTP跨域请求时为什么要发送options请求
  • 【LLMs对抗性提示:提示泄漏、非法行为、DAN、Waluigi效应、 游戏模拟器、防御策略————】
  • JSON教程
  • 聪明办法学 Python 第二版.1.学习安排
  • vue3项目实现全局国际化
  • 深入理解C++中的std::string::substr成员函数:子串操作的艺术
  • 增强LinkedList实现瑞士轮赛制编排
  • C++课程笔记 类和对象
  • Android JobScheduler介绍
  • 介绍一些免费 的 html 5模版网站 和配色 网站
  • Spring的核心思想
  • Linux常用命令以及操作技巧
  • 数据库之索引<保姆级文章>
  • 纯血鸿蒙NEXT常用的几个官方网站
  • 你天天用微服务还不知道心跳检测机制是什么?
  • Redis的配置与优化
  • spring模块(六)spring event事件(3)广播与异步问题
  • 鸿蒙OS 资源文件
  • 七、结合Landsat、夜光数据建成区提取——K均值聚类和监督分类提取精确的建成区边界
  • AI为云游戏带来的革新及解决方案:深度技术剖析与未来展望
  • windows下自启springboot项目(jar+nginx)
  • 安卓网址自动添加%,显示网页异常
  • IAPP发布《2024年人工智能治理实践报告》
  • 【Leetcode:1184. 公交站间的距离 + 模拟】
  • 【2025】基于python的网上商城比价系统、智能商城比价系统、电商比价系统、智能商城比价系统(源码+文档+解答)
  • Ready Go
  • 本地部署大语言模型
  • 6. Fabric 拖拽元素到画布
  • 聊聊OceanBase合并和转储