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

最近做国际网站怎么样广州seo快速排名

最近做国际网站怎么样,广州seo快速排名,wordpress 如何编辑页面,梵克雅宝官网四叶草手链项目场景: 提示:这里简述项目相关背景: 在项目中有时候需要显示一些动态效果,但是如果页面过长刷新页面的时候有些效果在没看到的时候就会执行,那么能滚动到那个区域的时候哪些动态效果就在没看到的时候就已经执行过…

项目场景:

提示:这里简述项目相关背景:

在项目中有时候需要显示一些动态效果,但是如果页面过长刷新页面的时候有些效果在没看到的时候就会执行,那么能滚动到那个区域的时候哪些动态效果就在没看到的时候就已经执行过了,那怎么才能让后滚动到可视区域的时候才执行呢?

在Vue 3中,要判断一个元素是否到达可视区域,你可以使用几种不同的方法。最常见和直接的方法是利用Intersection Observer API

Intersection Observer是一个非常强大的API,可以自动“观察”目标元素是否进入其祖先元素或顶级文档视口的可见区域。

到达可视区域的时候就会执行


分析:

提示:这里填写问题的分析:

 首先需要时vue3项目,另外,要在onMounted钩子函数中作操作

基本操作如下

1:使用Intersection Observer

<template><div ref="observerElement" class="observed-element">我是需要观察的元素</div>
</template><script setup>
import { ref, onMounted } from 'vue';const observerElement = ref(null);onMounted(() => {const options = {root: null, // 使用视口作为参照点rootMargin: '0px',threshold: 0.1 // 元素10%在视口内时触发回调};const callback = (entries, observer) => {entries.forEach(entry => {if (entry.isIntersecting) {console.log('元素进入了视口!');} else {console.log('元素离开了视口。');}});};const observer = new IntersectionObserver(callback, options);if (observerElement.value) {observer.observe(observerElement.value);}
});
</script>

 2:计算元素位置与视口的关系

如果你不希望使用Intersection Observer API,你可以通过计算元素的位置来判断它是否进入视口。这通常涉及到获取元素的位置和视口的高度。

<template><div ref="element" class="observed-element">我是需要观察的元素</div>
</template><script setup>
import { ref, onMounted } from 'vue';const element = ref(null);onMounted(() => {const checkVisibility = () => {if (!element.value) return;const rect = element.value.getBoundingClientRect();const isVisible = (rect.top >= 0 &&rect.left >= 0 &&rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&rect.right <= (window.innerWidth || document.documentElement.clientWidth));if (isVisible) {console.log('元素进入了视口!');} else {console.log('元素离开了视口。');}};checkVisibility(); // 初始检查一次// 添加滚动事件监听器以持续检查window.addEventListener('scroll', checkVisibility); // 添加窗口大小改变事件监听器以持续检查window.addEventListener('resize', checkVisibility); 
});
</script>

方案实例:

提示:这里填写该问题的具体解决方案:

在组件中使用这个方法直接在子组件中使用不需要再父组件中操作

如下:

父组件:

<!-- 使用子组件 --><bannerGreen:bannerInfo="bannerInfo"/>//引入子组件
import bannerGreen from '@/view/Home/components/bannerGreen.vue';

子组件

<template><div ref="observerElement" class="observed-element flexEv bannerBg padTB100 padLR65 colorW"><div class="flex" v-for="item in props.bannerInfo"><div class="borderR paddingR20 flexC"><i :class="item.icon" class="iconfont fontS40 fontW4 colorW hoverS"></i></div><div class="paddingL20"><div ref="numRef" class="fontS26 fontW6 marginB10 number inLb":data-target="item.textTop"></div> <div class="fontS26 fontW6 inLb">+</div><div class="fontS18 fontW5">{{item.textBottom}}</div></div></div></div>
</template><script lang="ts" setup>
import {reactive,toRefs,ref,Ref,PropType,onMounted,onBeforeUnmount,
} from "vue"
const props=defineProps({// bannerInfo:{type:Array},
})
// 自动将数值加到会后那个值的方法
const changeNum=()=>{// 获取元素const numbers = document.querySelectorAll('.number')console.log("",numbers)// 获取所有的dom,querySelectorAll为为数组numbers.forEach(item => {item.textContent = "0";const upDateNumber = () => {// 获取每个类名为number的data-target,即获取最大值 const target = Number(item.getAttribute('data-target'))// 获取当前div的数值const d = Number(item.textContent)// 设置数据增加的值,可以通过target除的数值确定怎么加数值的快慢const increment = target / 100// 当数字小于最大值时,执行下面的操作if (d < target) {// 向上取整item.textContent = `${Math.ceil(d + increment)}`// 1ms重新调用,不然它会在第一次运行完就结束setTimeout(upDateNumber, 10)} else {item.textContent = target+"";//textContent的值是 字符串 所以加个空字符}}upDateNumber()})
}
onMounted(()=>{console.log()})
// ================================到达可视区域的方法
const observerElement = ref(null);
onMounted(() => {const options = {root: null, // 使用视口作为参照点rootMargin: '0px',threshold: 0.1 // 元素10%在视口内时触发回调};const callback = (entries:any, observer:any) => {entries.forEach((entry:any) => {if (entry.isIntersecting) {console.log('元素进入了视口!');//到达可视区域 执行 数字自增的方法changeNum()} else {console.log('元素离开了视口。');}});};const observer = new IntersectionObserver(callback, options);if (observerElement.value) {observer.observe(observerElement.value);}
});
onBeforeUnmount(()=>{console.log()
})
const emit =defineEmits([""
])</script><style lang="less" scoped>
.bannerBg{background-color:#1d7b51 ;
}
.borderR{border-right: 1px solid #ffffff;
}
</style>

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

相关文章:

  • 重庆网站建设必选承越seo技术最新黑帽
  • 长宁区网站建设网页在线智能识图
  • 无限免费视频在线看seo关键词排名优化报价
  • 培训的网站建设北京seo推广系统
  • 全站仪如何建站深圳网络营销推广公司
  • 网站建设和维护的教程营销工具有哪些
  • wordpress如何更换主题免费seo推广公司
  • 抓取网站源码怎么做镜像培训总结
  • 为什么政府网站总是做的很垃圾永久免费二级域名申请
  • 网站自定义链接怎么做的名站在线
  • 互粉的网站是怎么做的如何优化关键词搜索排名
  • 自己做的网站可以百度推广吗优化设计七年级上册语文答案
  • 微信链接的微网站怎么做兰州seo推广
  • 帝国cms做网站软文标题大全
  • 做百度移动网站优最新国内你新闻
  • 招聘网站数据分析怎么做互联网广告平台排名
  • 哪些网站的做的好看的外贸seo软件
  • 做视频网站空间要多大游戏推广员是违法的吗
  • 青岛做网站优化公司怎样做网站推广啊
  • 创网站需要什么企业邮箱登录入口
  • 科技小论文500字范文seo根据什么具体优化
  • 唐山建设公司网站seo搜索引擎
  • 外国设计网站推荐如何自己建网站
  • 重庆做网站公司排名东莞新闻最新消息今天
  • 手机做网站的软件今日小说搜索风云榜
  • 网站的关于页面南京今日新闻头条
  • 宣传片拍摄手法及技巧网站推广优化公司
  • git怎么做隐私政策网站电脑优化大师哪个好
  • 网站建设和网站推广可以同一家做吗网站营销推广
  • 做铝锭的网站搜索引擎站长平台