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

seo推广沧州公司电话搜狗排名优化工具

seo推广沧州公司电话,搜狗排名优化工具,企业关键词优化最新报价,建立网站每项内容可以设计成什么1.引言 在做数字大屏时#xff0c;图表能跟着浏览器的尺寸自动变化#xff0c;本文采用Vue3前端框架#xff0c;采用TypeScript语言#xff0c;封装了一个大屏自适应组件#xff0c;将需要显示的图表放入组件的插槽中#xff0c;就能实现自适应屏幕大小的效果。 2.实际…1.引言 在做数字大屏时图表能跟着浏览器的尺寸自动变化本文采用Vue3前端框架采用TypeScript语言封装了一个大屏自适应组件将需要显示的图表放入组件的插槽中就能实现自适应屏幕大小的效果。 2.实际效果 3.组件代码 /** * ScaleScreen.vue * author: zgr * createTime: 2023/9/22 */templatediv classscreen-wrapper refscreenWrapper :stylewrapperStyleslot/slot/div /templatescript langts setup import { CSSProperties, PropType } from vue import { useFullscreen } from vueuse/core const { toggle } useFullscreen()defineOptions({ name: ScaleScreen }) interface IState {originalWidth: string | numberoriginalHeight: string | numberwidth?: string | numberheight?: string | numberobserver: null | MutationObserver } type IAutoScale | boolean| {x?: booleany?: boolean}const props defineProps({width: {type: [String, Number] as PropTypestring | number,default: 1920},height: {type: [String, Number] as PropTypestring | number,default: 1080},fullScreen: {type: Boolean as PropTypeboolean,default: false},autoScale: {type: [Object, Boolean] as PropTypeIAutoScale,default: true},delay: {type: Number as PropTypenumber,default: 500},boxStyle: {type: Object as PropTypeCSSProperties,default: () ({})},wrapperStyle: {type: Object as PropTypeCSSProperties,default: () ({})},bodyOverflowHidden: {type: Boolean as PropTypeboolean,default: true} })const state reactiveIState({currentWidth: 0,currentHeight: 0,originalWidth: 0,originalHeight: 0,observer: null }) //ref const screenWrapper refHTMLElement()//全屏函数 const toggleFullscreen () {toggle() } //按键F11全屏退出全屏 const KeyDown (event: KeyboardEvent) {if (event.code F9) {toggleFullscreen()} }const listenKeyDown () {window.addEventListener(keydown, KeyDown, true) //监听按键事件 } const removeListenKeyDown () {window.removeEventListener(keydown, KeyDown, false) //监听按键事件 }let bodyOverflowHiddenStr: string /*** 防抖函数* param {Function} fn* param {number} delay* returns {() void}*/ const debounce (fn: Function, delay: number) {let timer: NodeJS.Timeoutreturn function (...args: any[]): void {if (timer) {clearTimeout(timer)}timer setTimeout(() {typeof fn function fn.apply(null, args)clearTimeout(timer)},delay 0 ? delay : 100)} } const initBodyStyle () {if (props.bodyOverflowHidden) {bodyOverflowHiddenStr document.body.style.overflowdocument.body.style.overflow hidden} } const initSize () {return new Promise((resolve) {// console.log(初始化样式);nextTick(() {// region 获取大屏真实尺寸if (props.width props.height) {state.currentWidth props.widthstate.currentHeight props.height} else {state.currentWidth screenWrapper.value?.clientWidthstate.currentHeight screenWrapper.value?.clientHeight}// endregion// region 获取画布尺寸if (!state.originalHeight || !state.originalWidth) {state.originalWidth window.screen.widthstate.originalHeight window.screen.height}// endregionresolve()})}) } const updateSize () {if (state.width state.height) {screenWrapper.value!.style.width ${state.width}pxscreenWrapper.value!.style.height ${state.height}px} else {screenWrapper.value!.style.width ${state.originalWidth}pxscreenWrapper.value!.style.height ${state.originalHeight}px} } const autoScale (scale: number) {if (!props.autoScale) returnconst domWidth screenWrapper.value!.clientWidthconst domHeight screenWrapper.value!.clientHeightconst currentWidth document.body.clientWidthconst currentHeight document.body.clientHeightscreenWrapper.value!.style.transform scale(${scale},${scale})let mx Math.max((currentWidth - domWidth * scale) / 2, 0)let my Math.max((currentHeight - domHeight * scale) / 2, 0)if (typeof props.autoScale object) {!props.autoScale.x (mx 0)!props.autoScale.y (my 0)}screenWrapper.value!.style.margin ${my}px ${mx}px } const updateScale () {// 获取真实视口尺寸const currentWidth document.body.clientWidthconst currentHeight document.body.clientHeight// 获取大屏最终的宽高const realWidth state.width || state.originalWidthconst realHeight state.height || state.originalHeight// 计算缩放比例const widthScale currentWidth / realWidthconst heightScale currentHeight / realHeight// 若要铺满全屏则按照各自比例缩放if (props.fullScreen) {screenWrapper.value!.style.transform scale(${widthScale},${heightScale})return false}// 按照宽高最小比例进行缩放const scale Math.min(widthScale, heightScale)autoScale(scale) }const onResize debounce(async () {await initSize()updateSize()updateScale() }, props.delay)const initMutationObserver () {const observer (state.observer new MutationObserver(() {onResize()}))observer.observe(screenWrapper.value!, {attributes: true,attributeFilter: [style],attributeOldValue: true}) } //设置数字大屏背景颜色为黑色 const setBgColor () {document.getElementsByTagName(body)[0].setAttribute(style, background: black) }onMounted(() {setBgColor()initBodyStyle()nextTick(async () {await initSize()updateSize()updateScale()window.addEventListener(resize, onResize)initMutationObserver()})listenKeyDown() })onBeforeUnmount(() {window.removeEventListener(resize, onResize)removeListenKeyDown()state.observer?.disconnect()if (props.bodyOverflowHidden) {document.body.style.overflow bodyOverflowHiddenStr} }) /scriptstyle scoped langscss .screen-wrapper {transition-property: all;transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);transition-duration: 500ms;position: relative;overflow: hidden;z-index: 100;transform-origin: left top; } /style4.感谢 1.GitHub - Alfred-Skyblue/v-scale-screen: Vue large screen adaptive component vue大屏自适应组件 2.koi-screen-plus: vue3版本数据大屏模板 3.DataV - Vue3 | DataV - Vue3
http://www.w-s-a.com/news/24483/

相关文章:

  • 网站seo优化要怎么做礼品公司怎么做网站
  • 做网页网站需要钱吗提供常州微信网站建设
  • 网站建设文化效果广东网站建设哪家有
  • 毕业设计做网站怎样做特别一点在线网页制作软件
  • html网站代码上海这边敲墙拆旧做啥网站的比较多
  • 微网站怎么用在线crm管理系统
  • 中国城乡建设部人力网站首页如何利用某个软件做一个网站
  • 个人承接网站建设wordpress editor
  • 建站主机 wordpress专业的菏泽网站建设公司
  • 网站响应时间 标准网站建设色调的
  • 网站开发的合同网站建设 设计
  • 网站开发设置网页端口申请免费个人网站空间
  • 制作广告网站的步骤云服务器做网站
  • ipv6可以做网站吗东莞网站建站推广
  • 注册功能的网站怎么做做网站容易还是编程容易
  • wordpress建立目录seo编辑培训
  • 网站怎么群发广州现在可以正常出入吗
  • 微信有网站开发吗多语种网站
  • 深圳网站设计 建设首选深圳市室内设计公司排名前50
  • 上海网站建设 觉策动力wordpress接口开发
  • 网站建设服务器的选择方案小型视频网站建设
  • 江宁做网站价格扬州立扬计算机培训网站建设怎么样
  • 手表网站背景开发新客户的十大渠道
  • 定制网站设计wordpress写的网站
  • p2p网站建设公司排名成都装饰公司
  • 网站被k怎么恢复wordpress缓存类
  • 做外贸有哪些网站平台最近文章 wordpress
  • joomla网站模板一个人做网站的swot
  • 南京建设网站需要多少钱深圳专业网站建设制作价格
  • 天河建网站装修公司线上推广方式