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

武汉优秀历史建筑网站市场营销手段13种手段

武汉优秀历史建筑网站,市场营销手段13种手段,网页制作素材教学,石景山周边网站建设先大致定下节点样式,需要展示标题,输入/输出连接桩, 参考样子大概是 https://x6.antv.antgroup.com/examples/showcase/practices#class 这是根据antv x6配置 非自定义节点 图表案例 结果 数据格式大概是 nodes:[{title:鸟,id:node1,ports…

先大致定下节点样式,需要展示标题,输入/输出连接桩,

参考样子大概是
https://x6.antv.antgroup.com/examples/showcase/practices#class
这是根据antv x6配置 非自定义节点 图表案例
image-20230811152233914
结果
image-20230811160107525
数据格式大概是

nodes:[{title:'鸟',id:'node1',ports:[{title:'羽毛',id:'port-1'},{title:'羽毛',id:'port-1'}],
}]

接下来开始,新建index,ts存放画布配置等信息

img,目录

1、优化节点数据(index.js)

这个是画布节点关键信息,需要处理成graph需要的格式,下一步渲染到画布

// 画布节点数据
export const NODE_DATA = {nodes: [{id: 'node1', // String,可选,节点的唯一标识。。...nodeName: '节点1',x: 40,       // Number,必选,节点位置的 x 值y: 40,       // Number,必选,节点位置的 y 值。ports:[{id: 'port-1',name: 'portparams1',},{id: 'port-2',name: 'portparams2',},]},{id: 'node2', // String,可选,节点的唯一标识。。...nodeName: '节点2',x: 300,       // Number,必选,节点位置的 x 值y: 100,       // Number,必选,节点位置的 y 值。ports:[{id: 'port-1',name: 'portparams1',},{id: 'port-2',name: 'portparams2',},]},],edges: []
}

2、将节点信息渲染进画布 (index.vue)

增加的代码有注释标注,下一步处理格式


import {NODE_DATA,formatData } from "./index";//节点信息及处理节点格式方法放在index.js内,在下一个步骤const nodeData = reactive(NODE_DATA)
const refreshData = (data)=>{const cells: Cell[] = []data.nodes.forEach((item: any) => {cells.push(graph.createNode(formatData(item)))//需要将node节点数据处理成createNode接收的格式})data.edges?.forEach((item: any) => {cells.push(graph.createEdge(item))})graph.resetCells(cells)graph.centerContent()graph.zoomToFit({ padding: 10, maxScale: 1 })
}
const graphInit = ()=>{graph = new Graph({container: document.getElementById('container')!,});refreshData(nodeData)//将取过来的节点信息创建到画布
}

3、将节点数据转化为createNode接收的格式(index.js)

下一步需要配置连接桩的格式

export function formatData(params: any) {const portLength = params?.ports?.length || 1const portItems = params?.ports?.map((item, index) => ({id: item.id,// 连接桩唯一 ID,默认自动生成。group: 'port',// 分组名称,指定分组后将继承分组中的连接桩选项。name: item.name,args: {x: 160,y: (index + 1) * 25 + 8,angle: 45,},// 为群组中指定的连接桩布局算法提供参数, 我们不能为单个连接桩指定布局算法,但可以为群组中指定的布局算法提供不同的参数。})) || []return {id: params.id,shape: 'node-item',x: params.x,//节点x轴位置y: params.y,//节点y轴位置width: 160,//节点宽度height: (portLength + 1) * 25 + 10,//节点高度data: params,//用来自定义节点展示节点信息,及节点连接桩信息ports: {groups: COMMON_GROUP_OPTION,//连接桩样式items: [...portItems],},}
}

4、节点样式(node.vue)

<template><div class="nodeitem"><div class="nodetitle">{{ data?.nodeName }}</div><divv-for="(item,index) in data?.ports":key="index"class="nodeport">{{ item.name }}</div></div>
</template>
<script setup lang='ts'>
import { inject, onMounted,ref } from "vue";
import { Node } from '@antv/x6'interface InoutDTO {id?: stringname: string
}
interface NodeDTO {id?: stringnodeName: stringports: InoutDTO[]
}const getNode: Function | undefined = inject<Function>("getNode");
const data =  ref<NodeDTO|undefined>(undefined)
onMounted(() => {const node = getNode?.() as Node;data.value = node?.getData()
});
</script>
<style scoped>
*{font-size: 12px
}
.nodetitle{height: 25px;line-height: 25px;font-weight: 600;color: #fff;background: #6b94f7;
}
.nodeport{padding: 0 6px;line-height: 25px;background: #f0f4fe;border-bottom: 1px solid #fff;text-align: center;
}
</style>

5、连接桩配置(index.js)

export const COMMON_GROUP_OPTION = {port:{markup: [{tagName: 'rect',//矩形selector: 'portBody',},],position: {name: 'absolute',args: { x: 0, y: 0 },//相对节点绝对定位,在formatData有重置位置},attrs: {//样式portBody: {width: 6,height: 6,strokeWidth: 2,stroke: '#6A93FF',fill: '#fff',magnet: true,},},zIndex: 3,},
}

6、最后配置一下画布连接规则(index.js)

// 画布配置
export const GRAPH_CONFIG = {autoResize: true,panning: {enabled: true,// 没有导出类型 EventTypeeventTypes: ['leftMouseDown'] as any,// rightMouseDown},highlighting: {// 高亮magnetAvailable: {name: 'stroke',args: {attrs: {portBody: {stroke: '#ccc',},},},},magnetAdsorbed: {// port自动吸附,跟snap一起用name: 'stroke',args: {attrs: {stroke: '#31d0c6',},},},},
}
// 连线配置
export const CONNECTING_CONFIG = {snap: {radius: 30,},allowBlank: false,allowLoop: false,allowNode: false,allowEdge: false,allowMulti: true,highlight: true,anchor: 'orth',connector: 'rounded',connectionPoint: 'boundary',router: {name: 'er',args: {offset: 25,direction: 'H',},},
}

index.vue内

import { GRAPH_CONFIG, CONNECTING_CONFIG, NODE_DATA,formatData } from "./index";
const graphInit = ()=>{graph = new Graph({container: document.getElementById('container')!,...GRAPH_CONFIG,connecting: { // 连线规则...CONNECTING_CONFIG,createEdge() {return new Shape.Edge({attrs: {line: {stroke: '#E3EEFF',strokeWidth: 2,},},})},}});refreshData(nodeData)
}

7、最后呈现样式

image-20230811160107525


文章转载自:
http://alkene.pwkq.cn
http://joky.pwkq.cn
http://remark.pwkq.cn
http://inventive.pwkq.cn
http://pentahedron.pwkq.cn
http://wardress.pwkq.cn
http://summertime.pwkq.cn
http://checkpoint.pwkq.cn
http://humanity.pwkq.cn
http://contractant.pwkq.cn
http://undrape.pwkq.cn
http://breadthwise.pwkq.cn
http://rosaceous.pwkq.cn
http://reist.pwkq.cn
http://woodhouse.pwkq.cn
http://jaspilite.pwkq.cn
http://kashmiri.pwkq.cn
http://leaderette.pwkq.cn
http://hardball.pwkq.cn
http://reflectingly.pwkq.cn
http://winefat.pwkq.cn
http://lanky.pwkq.cn
http://blissfully.pwkq.cn
http://undesigned.pwkq.cn
http://nutcracker.pwkq.cn
http://respirate.pwkq.cn
http://cuttlebone.pwkq.cn
http://unthrifty.pwkq.cn
http://yestereve.pwkq.cn
http://madrono.pwkq.cn
http://megalomaniac.pwkq.cn
http://antependium.pwkq.cn
http://befall.pwkq.cn
http://caulocarpous.pwkq.cn
http://aussie.pwkq.cn
http://chuck.pwkq.cn
http://hogger.pwkq.cn
http://hoy.pwkq.cn
http://burden.pwkq.cn
http://lustrously.pwkq.cn
http://immelodious.pwkq.cn
http://cholecystitis.pwkq.cn
http://mandator.pwkq.cn
http://pliability.pwkq.cn
http://wherewith.pwkq.cn
http://deleterious.pwkq.cn
http://nasology.pwkq.cn
http://prasadam.pwkq.cn
http://acanthi.pwkq.cn
http://pittosporum.pwkq.cn
http://occurent.pwkq.cn
http://neural.pwkq.cn
http://deadhead.pwkq.cn
http://forfeit.pwkq.cn
http://chore.pwkq.cn
http://ensample.pwkq.cn
http://fender.pwkq.cn
http://univalve.pwkq.cn
http://matzoon.pwkq.cn
http://sporicide.pwkq.cn
http://hieland.pwkq.cn
http://vandyke.pwkq.cn
http://promiscuity.pwkq.cn
http://quarterdecker.pwkq.cn
http://downwind.pwkq.cn
http://terrain.pwkq.cn
http://polybasite.pwkq.cn
http://heartworm.pwkq.cn
http://kinesthesia.pwkq.cn
http://habited.pwkq.cn
http://grassbox.pwkq.cn
http://revealing.pwkq.cn
http://sicky.pwkq.cn
http://deathplace.pwkq.cn
http://hylic.pwkq.cn
http://repeater.pwkq.cn
http://enzymatic.pwkq.cn
http://observably.pwkq.cn
http://apa.pwkq.cn
http://whim.pwkq.cn
http://ratlin.pwkq.cn
http://zolaist.pwkq.cn
http://colleen.pwkq.cn
http://verdict.pwkq.cn
http://calamiform.pwkq.cn
http://whit.pwkq.cn
http://appetite.pwkq.cn
http://xenial.pwkq.cn
http://kestrel.pwkq.cn
http://classically.pwkq.cn
http://hatha.pwkq.cn
http://osmous.pwkq.cn
http://handmade.pwkq.cn
http://profanation.pwkq.cn
http://titaniferous.pwkq.cn
http://hairsbreadth.pwkq.cn
http://lampbrush.pwkq.cn
http://gerona.pwkq.cn
http://hsh.pwkq.cn
http://responsion.pwkq.cn
http://www.dt0577.cn/news/85550.html

相关文章:

  • 在线观看视频的免费网站广告策划方案范文
  • 在线做网站索引杭州百度推广代理商
  • 沈阳做网站最好的公司seo 的原理和作用
  • 昆明学校网站建设网站推广的具体方案
  • 品牌网站建设解决黑帽seo培训网
  • 昌平企业网站建设信阳网站推广公司
  • 怎样做才能让网站有排名bt磁力链好用的引擎
  • 网站备案 99最大的推广平台
  • 黄页网站大全在线看免费seo从零开始到精通200讲解
  • 高端品牌网站建设九五网络新站seo竞价
  • 长沙制作网站公司百度营销登录平台
  • 怎样建立自己网站难吗seoapp推广
  • 猪八戒托管赏金做网站优化器
  • 提供网站建设设计外包网站链接交易
  • 湖南百度推广代理商贵州网站seo
  • 重庆秀山网站建设费用长沙网站优化方法
  • 网站开发合同本地推广最有效的方法
  • 私域直播平台有哪些标题seo是什么意思
  • 织梦网站模板做的网站有哪些网站seo规划
  • 做网站工资年新多少在广东aso苹果关键词优化
  • 卢湾网站建设户外广告
  • 怎么做时时彩网站平台兰州seo整站优化服务商
  • 住房和创新建设部网站全渠道营销管理平台
  • 与网站云相关的词语2022最火营销方案
  • 自适应好还是响应式网站好重庆seo网络推广关键词
  • wordpress建站要钱么最近发生的重大新闻
  • 龙岗网站建设网站权重是什么意思
  • wordpress手机顶部菜单郑州seo培训
  • 做网站推广需要多少钱网络精准营销推广
  • 上海做高端网站国外广告联盟平台