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

【sgHelp】自定义组件:网站、平台右下角的帮助助手、指导助理

sgHelp

<template>
  <div :class="$options.name">
    <div class="help-icon" @click.stop="show_sgFloatDialog = !show_sgFloatDialog">?</div>
    <!-- 指导帮助悬浮弹窗 -->
    <sgFloatDialog
      :data="data_sgFloatDialog"
      v-model="show_sgFloatDialog"
      v-if="show_sgFloatDialog"
    >
      <div class="content">
        <div class="top">
          <img
            src="~@/../static/img/product-logo.png"
            style="
              width: 120px;
              height: 40px;
              object-position: center;
              object-fit: contain;
              margin-bottom: 20px;
            "
          />

          <div class="title1">你好, 我是</div>
          <div class="title2">小智资源AI助理</div>
        </div>
        <div class="bt">底部信息</div>
      </div>
    </sgFloatDialog>
  </div>
</template>
<script>
import sgFloatDialog from "@/vue/components/admin/sgFloatDialog";

export default {
  name: "sgHelp",
  components: { sgFloatDialog },
  data() {
    return {
      form: {},
      data_sgFloatDialog: {
        title: `AI助理`,
      },
      show_sgFloatDialog: false,
      show_sgFloatDialog: true, //测试----------------------------------------
    };
  },
  props: ["data"],
  computed: {},
  watch: {
    data: {
      handler(newValue, oldValue) {
        //console.log(`深度监听${this.$options.name}:`, newValue, oldValue);
        if (Object.keys(newValue || {}).length) {
          this.form = JSON.parse(JSON.stringify(newValue));
        }
      },
      deep: true, //深度监听
      immediate: true, //立即执行
    },
  },
  created() {},
  mounted() {},
  destroyed() {},
  methods: {
    // 关闭托盘
    close({ cb } = {}) {
      this.show_sgFloatDialog = false;
    },
  },
};
</script>
<style lang="scss" scoped>
.sgHelp {
  .help-icon {
    line-height: 1;
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    vertical-align: baseline;
    background: transparent;
    font-family: Microsoft YaHei;
    position: fixed;
    background-color: #fff;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    box-shadow: 0 0 6px rgba(0, 0, 0, 0.12);
    cursor: pointer;
    z-index: 5;
    color: #000;
    right: 40px;
    bottom: 120px;
    font-weight: bold;
    transition: 0.2s;
    /*禁止选中文本*/
    user-select: none;
    &:hover {
      transform: scale(1.1);
      color: #409eff;
    }
    &:active {
      transform: translate(1px, 1px);
      color: white;
      background-color: #409eff;
    }
  }
  .content {
    width: 100%;
    height: 100%;
    overflow-y: auto;
    display: flex;
    align-items: center;
    flex-direction: column;
    .top {
      width: 100%;
      display: flex;
      align-items: center;
      flex-direction: column;
      font-size: 24px;
      .title1 {
        margin-bottom: 10px;
        // font-family: Alimama_ShuHeiTi_Bold;
      }
      .title2 {
        // font-family: Alimama_ShuHeiTi_Bold;
        /*渐变文字(仅谷歌内核浏览器支持)*/
        background: -webkit-linear-gradient(0deg, #409eff, #f56c6c);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
      }
    }
    .bt {
      font-size: 14px;
      text-align: center;
      box-sizing: border-box;
      padding: 20px;
    }
  }
}
</style>

demo

<template>
  <sgHelp :data="data_sgHelp" @s="s_sgHelp" />
</template>
<script>
import sgHelp from "@/vue/components/admin/sgHelp";

export default {
  components: { sgHelp },
  data() {
    return {
      data_sgHelp: {},
    };
  },
  methods: {
    s_sgHelp(d) {
      console.log(``, d);
    },
  },
};
</script>

依赖【sgFloatDialog】自定义组件:浮动弹窗,支持修改尺寸、拖拽位置、最大化、还原、最小化、复位-CSDN博客文章浏览阅读22次。文章浏览阅读245次。它允许用户自定义吸附距离,可以设置拖拽行为是否禁用,以及停靠边界距离。组件在拖拽过程中提供了半透明效果,并能在不同阶段监听和处理鼠标事件以实现拖拽、吸附和停靠功能。核心原理就是在四条边、四个顶点加上透明的div,给不同方向提供按下移动鼠标监听 ,对应计算宽度高度、坐标变化。【sgDragSize】自定义组件:自定义拖拽修改DIV尺寸组件,适用于窗体大小调整_div拖拽调整大小-CSDN博客。【sgDragMove】自定义组件:自定义拖拽组件,仅支持拖拽、设置吸附屏幕边界距离。 https://blog.csdn.net/qq_37860634/article/details/146408896

相关文章:

  • app测试必须进行吗?需要进行哪些测试?
  • 混元视频与万相2.1全面对比分析
  • 嵌入式笔记 | 正点原子STM32F103ZET6 4 | 中断补充
  • 搭建个人博客教程(Hexo)
  • Django+celery+flower
  • 【文件分类助手V1.0b】支持自定义后缀分类整理及目录文档自动生成,方便大家美化管理自己的PC文件库支持Win10/11
  • 【从零开始学习计算机科学与技术】计算机网络(三)数据链路层
  • 蓝桥杯备考---》分类讨论之Fixed Points
  • 在Ubuntu20.04上交叉编译能在Windows上运行的Qt5应用
  • Vue3 集成wangEditor 5
  • 鸿蒙开发真机调试:无线调试和USB调试
  • MQ,RabbitMQ,MQ的好处,RabbitMQ的原理和核心组件,工作模式
  • LeetCode 解题思路 22(Hot 100)
  • 9.嗅探与Wireshark进阶分析
  • 使用Python在Word中创建、读取和删除列表 - 详解
  • DeepSeek接入多模态,个人电脑也能飞速生成高清图,确实可以封神了!
  • 目前主要虚拟世界平台在单一实例承载人数和伺服器架构的综合比较分析(从开资料和技术推估):
  • 寄存器(内部访问)
  • WordPress靶场攻略
  • 微服务》》Kubernetes (K8S) 集群配置网络》》Calico
  • 山西晋城一网红徒步野游线路据传发生驴友坠崖,当地已宣布封路
  • 前四月国家铁路发送货物12.99亿吨,同比增长3.6%
  • 周国辉谈花开岭现象 :年轻的公益人正在用行动点亮希望
  • 央媒聚焦文明交流互鉴中的“上博现象” :跨越山海,抒写自信
  • 国家统计局:4月全国规模以上工业增加值同比增长6.1%
  • 复旦一校友捐赠1亿元,却不留名