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

莱芜网站seo国外独立站网站

莱芜网站seo,国外独立站网站,做火锅加盟哪个网站好,厦门网站制作套餐背景说明 鼠标移动到产品服务上时,出现标红的下拉框。 使用纯css的方案实现最简单,但是没什么技术含量,弃之;使用第三方组件库,样式定制麻烦弃之。因此,我们使用vue3直接在页面创建一个dom作为下拉框吧。…

背景说明

鼠标移动到产品服务上时,出现标红的下拉框。

使用纯css的方案实现最简单,但是没什么技术含量,弃之;使用第三方组件库,样式定制麻烦弃之。因此,我们使用vue3直接在页面创建一个dom作为下拉框吧。

技术方案

先写一个下拉框组件

首先,我们先写一个组件,用来展示下拉框内容。组件名称起为 :Select.vue

<template><div class="select-wrap"><span>福利商城</span><span>Saas平台</span><span>活动定制</span></div>
</template>

渲染组件

我们要将这个组件渲染在网页上,操作应该是这样的:

当鼠标移动到产品服务时,将下拉框组件作为一个组件实例渲染在页面的合适位置。

vue3中,渲染一个Vonde,核心逻辑如下:

import { createVNode, h, render, VNode } from 'vue'
import component from "./component.vue"
//1、创造包裹虚拟节点的div元素
const container = document.createElement('div');
//2、创造虚拟节点
vm = createVNode(component)
//3、将虚拟节点创造成真实DOM
render (vm, container)
//4、将渲染的结果放到body下
document.body.appendChild(container.firstElementChild)  

要知道组件渲染的位置,我们必须知道父组件(也就是产品服务的dom位置),我们通过ref来获取父组件的dom信息。

// App.vue
<div ref="select"><span class="name">产品服务</span> 
</div>
<script setup >import { ref } from "vue"const select = ref()
</script>

当鼠标移到产品服务元素上时,渲染下拉框,我们添加个函数

// App.vue
<div ref="select"><span class="name">产品服务</span> 
</div>
<script setup >
import { ref } from "vue"
import Select from "./Select.vue"
const select = ref()
function createDom(){//1、创造包裹虚拟节点的div元素const container = document.createElement('div');//2、创造虚拟节点let vm = createVNode(Select)//3、将虚拟节点创造成真实DOMrender (vm, container)//4、将渲染的结果放到body下document.body.appendChild(container.firstElementChild) 
}
</script>

然后,添加下位置判断

function createDom(){const left = select.value.offsetLeft + "px"const width = select.value.getBoundingClientRect().left + "px"const props = {width,left,}//1、创造包裹虚拟节点的div元素const container = document.createElement('div');//2、创造虚拟节点let vm = createVNode(Select,props)//3、将虚拟节点创造成真实DOMrender (vm, container)//4、将渲染的结果放到body下document.body.appendChild(container.firstElementChild) 
}

其中,prop是传递给Select组件的距离参数,在组件内设置即可。

销毁组件

销毁组件,我们可以使用render渲染一个空对象即可

render (vm, container)

如果需要子组件来销毁自身,我们可以使用父子传值

<template><div class="select-wrap" @mouseleave="beforeUnload"><span>福利商城</span><span>Saas平台</span><span>活动定制</span></div>
</template>
<script   setup>
const emit = defineEmits(['destroy'])
function beforeUnload(){emit('destroy')
}
</script>
```js父组件里,我们需要在props中添加一个onDestroy函数,注意:onDestroy是驼峰式写法```js
function createDom(){const left = select.value.offsetLeft + "px"const width = select.value.getBoundingClientRect().left + "px"const props = {width,left,onDestroy: () => {render(null, container)},}//1、创造包裹虚拟节点的div元素const container = document.createElement('div');//2、创造虚拟节点let vm = createVNode(Select,props)//3、将虚拟节点创造成真实DOMrender (vm, container)//4、将渲染的结果放到body下document.body.appendChild(container.firstElementChild) 
}

这样,就实现了下拉框组件

http://www.dtcms.com/wzjs/492433.html

相关文章:

  • 想开个影视网站 那有做的济南seo公司报价
  • 找一个网站做搜索引擎分析搜索引擎营销特点
  • 网站建设公司的成本有哪些方面成品人和精品人的区别在哪
  • 中纪委网站作风建设在路上网络营销师证书含金量
  • 网站404页面怎么做品牌如何做推广
  • 邢台网站建设服务商杭州百度百家号seo优化排名
  • 开源网站后台管理系统搜索引擎营销的特点是什么
  • 网站建设服务介绍seo综合查询是什么
  • 沈阳网站建设策划百度百科词条
  • 做网站荣耀体验服官网北京中文seo
  • 国内大型的网站建设搜索引擎付费推广
  • 企业营销型企业网站建设aso优化技巧大aso技巧
  • 网站开发的几个步骤今日热搜头条
  • 个人网站设计毕业论文总结第三方网络营销平台有哪些
  • 上海市城乡建设和交通委员会网站可以免费推广的网站
  • 淮安品牌网站建设磁力吧最佳搜索引擎
  • 郑州网站建设网络推广郑州千锋教育培训机构怎么样
  • iis不能新建网站附近有没有学电脑培训的
  • 福田蒙派克s广州网站优化价格
  • 做模具行业的网站百度搜索排名怎么做
  • 如何建立公司邮箱关键词搜索排名优化
  • 如何做自己网站的访问记录seo服务
  • 绵阳网站建设维护seo网站推广seo
  • wordpress通过标题调用相关文章青岛自动seo
  • 龙港做网页网站制作seo策略分析
  • 网站建网站建设seo帮帮您百度收录比较好的网站
  • 网站开发的性能测试文档如何写深圳网站提升排名
  • 济南做网站的公司上海seo优化外包公司
  • 济南做网站建设全国疫情高峰感染进度
  • 做网站优化选阿里巴巴还是百度网络seo关键词优化技巧