通过element写一个控制台展示复制功能

<el-col :span="12">
  <!-- 控制台输出区域,高度自适应 -->
  <div class="console-output" style="flex-grow: 1;">
    <div class="well">
      <div class="item-text-wrapper">
        <!-- 复制按钮 -->
        <div class="btn-copy-wrapper">
          <!-- 点击复制按钮,复制控制台输出文本 -->
          <button class="btn-copy" data-clipboard-target=".item-text" @click="copyText">复制</button>
        </div>
        <!-- 控制台输出文本区域 -->
        <div class="item-text" ref="consoleOutput" v-html="console_output"></div>
      </div>
    </div>
  </div>
</el-col>

以上是HTML代码,主要是控制台输出区域的布局,包含一个控制台输出文本区域和一个复制按钮,点击复制按钮可以将控制台输出的文本内容复制到剪贴板中。 这段代码是Vue.js的模板语法,用于渲染控制台输出区域的HTML结构。其中,:span="12"是一个动态绑定的属性,表示该元素占用12个格子的宽度。

是控制台输出区域的外层容器,style="flex-grow: 1;"表示该容器的高度可以自适应。
是控制台输出区域的内层容器,用于设置样式。
是控制台输出文本区域的容器,ref="consoleOutput"表示该元素可以在Vue实例中通过this.$refs.consoleOutput访问到,v-html="console_output"表示该元素显示的文本内容由Vue实例中的console_output变量决定。
是复制按钮的容器。 是复制按钮的容器。
是控制台输出文本区域的容器,ref="consoleOutput"表示该元素可以在Vue实例中通过this.$refs.consoleOutput访问到,v-html="console_output"表示该元素显示的文本内容由Vue实例中的console_output变量决定。 是复制按钮的容器。
是控制台输出区域的内层容器,用于设置样式。 是控制台输出文本区域的容器,ref="consoleOutput"表示该元素可以在Vue实例中通过this.$refs.consoleOutput访问到,v-html="console_output"表示该元素显示的文本内容由Vue实例中的console_output变量决定。 是复制按钮的容器。
是控制台输出区域的外层容器,style="flex-grow: 1;"表示该容器的高度可以自适应。 是控制台输出区域的内层容器,用于设置样式。 是控制台输出文本区域的容器,ref="consoleOutput"表示该元素可以在Vue实例中通过this.$refs.consoleOutput访问到,v-html="console_output"表示该元素显示的文本内容由Vue实例中的console_output变量决定。 是复制按钮的容器。
引入复制js文件
import ClipboardJS from clipboard;
mounted() {
  // 初始化剪贴板功能
  new ClipboardJS(.btn-copy);
  // 监听控制台输出区域高度变化
  const observer = new ResizeObserver(entries => {
    for (const entry of entries) {
      if (entry.target === this.$refs.consoleOutput) {
        // 动态设置控制台输出区域的高度
        this.$refs.consoleOutputWrapper.style.height = `${entry.contentRect.height}px`;
      }
    }
  });
  observer.observe(this.$refs.consoleOutput);
},

这段代码是Vue.js组件中的JavaScript代码,包括了两个部分:mounted()函数和样式定义。mounted()函数是Vue.js组件的生命周期函数之一,在组件挂载到DOM之后执行。这个函数中的代码主要包括了两个功能:初始化剪贴板功能和监听控制台输出区域高度变化。其中,new ClipboardJS(‘.btn-copy’)是初始化剪贴板功能,表示将.btn-copy类的元素绑定为可以复制的对象。const observer = new ResizeObserver(entries => {…})是监听控制台输出区域高度变化的代码,ResizeObserver是一个用于监听元素尺寸变化的内置对象,entries是一个尺寸变化的数组,其中包含了所有变化的元素。在这段代码中,我们遍历了entries数组,判断其中的元素是否是控制台输出区域的元素,如果是,则动态设置控制台输出区域的高度 控制台样式部分

经验分享 程序员 微信小程序 职场和发展