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

网站软件下载大全公司微网站怎么做的

网站软件下载大全,公司微网站怎么做的,深圳网站设计首选柚米,住房和城乡建设部网站三定选择器与数据绑定 一、核心概念:选择器与数据绑定二、选择器:精准定位DOM元素基础选择方法链式选择与层级关系属性选择器 三、数据绑定:连接数据与DOMdatum() 示例data() 示例数据绑定的高级用法 四、常见陷阱与解决方案问题1:dat…

选择器与数据绑定

    • 一、核心概念:选择器与数据绑定
    • 二、选择器:精准定位DOM元素
      • 基础选择方法
      • 链式选择与层级关系
      • 属性选择器
    • 三、数据绑定:连接数据与DOM
      • datum() 示例
      • data() 示例
      • 数据绑定的高级用法
    • 四、常见陷阱与解决方案
        • 问题1:data()处理字符串的特殊情况
        • 问题2:数据与元素数量不匹配
    • 五、实战代码
    • 小结
    • 下章预告:理解 Update Enter Exit


一、核心概念:选择器与数据绑定

D3.js的核心在于选择元素绑定数据,这是所有可视化操作的基础。本章将深入探讨这两个关键概念。


二、选择器:精准定位DOM元素

基础选择方法

// 选择单个元素
d3.select("body");          // 选择第一个body元素
d3.select("#chart");        // 选择id为chart的元素
d3.select(".item");         // 选择第一个class为item的元素// 选择多个元素
d3.selectAll("p");          // 选择所有p元素
d3.selectAll(".item");      // 选择所有class为item的元素

链式选择与层级关系

// 从body开始,逐步缩小选择范围
d3.select("body").select("#container")     // 选择body内的#container.selectAll(".bar");       // 选择#container内所有.bar元素

属性选择器

// 选择特定属性的元素
d3.select("[title='author']");  // 选择title属性为author的元素
d3.selectAll("[data-value]");   // 选择所有有data-value属性的元素

三、数据绑定:连接数据与DOM

两种绑定方式对比

方法描述适用场景
datum()将相同数据绑定到所有选中元素需要所有元素显示相同数据时
data()将数组元素分别绑定到对应的DOM元素常见的一对一数据绑定场景

datum() 示例

const message = "共享数据内容";
d3.selectAll("p").datum(message).text((d, i) => `段落${i+1}: ${d}`);

效果: 所有p元素显示相同内容,但带有不同的索引

data() 示例

const fruits = ["苹果", "香蕉", "橙子"];
d3.selectAll("li").data(fruits).text(d => d);

效果: 每个li元素分别显示不同的水果名称

数据绑定的高级用法

// 使用函数生成数据
d3.selectAll("circle").data(() => {const data = [];for (let i = 0; i < 10; i++) {data.push(Math.random() * 100);}return data;}).attr("r", d => d);

四、常见陷阱与解决方案

问题1:data()处理字符串的特殊情况
// 错误示范
d3.selectAll("span").data("Hello")  // 字符串会被拆分为字符数组.text(d => d);  // 每个span显示一个字母// 正确做法
d3.selectAll("span").data(["Hello"])  // 将字符串包装在数组中.text(d => d);
问题2:数据与元素数量不匹配
const data = [1, 2, 3];
const bars = d3.selectAll(".bar");// 处理不足的元素
bars.data(data).enter()  // 进入"缺失元素"选区.append("div").attr("class", "bar");// 处理多余的元素
bars.data(data).exit()  // 进入"多余元素"选区.remove();

五、实战代码

👇 代码示例:诗歌展示增强版

<!DOCTYPE html>
<html>
<head><script src="https://d3js.org/d3.v7.min.js"></script><style>.poem-line { padding: 8px;margin: 4px;transition: all 0.3s;}.highlight {background-color: #ffe0b2;transform: translateX(10px);}</style>
</head>
<body><div id="poem-container"></div><script>const poem = [{ text: "日照香炉生紫烟", author: "李白" },{ text: "遥看瀑布挂前川", year: "725年" },{ text: "飞流直下三千尺", comment: "夸张手法" },{ text: "疑是银河落九天", rating: 5 }];// 数据绑定与动态创建d3.select("#poem-container").selectAll(".poem-line").data(poem).enter().append("div").attr("class", "poem-line").html(d => `<strong>${d.text}</strong>${d.author ? `- ${d.author}` : ''}${d.year ? `(${d.year})` : ''}${d.comment ? `<small>${d.comment}</small>` : ''}`).on("mouseover", function() {d3.select(this).classed("highlight", true);}).on("mouseout", function() {d3.select(this).classed("highlight", false);});</script>
</body>
</html>

👇 运行效果:
在这里插入图片描述


小结

  1. 选择器是D3操作DOM的起点
    • select() 选择单个元素
    • selectAll() 选择多个元素
    • 支持链式调用和复杂选择
  2. 数据绑定是D3的核心
    • datum() 绑定相同数据到所有元素
    • data() 实现数据与元素的一一对应
    • 注意处理数据与元素数量不匹配的情况
  3. 交互增强让可视化更生动
    • 使用事件监听器(on())添加交互
    • 结合CSS过渡效果提升用户体验

下章预告:理解 Update Enter Exit

http://www.dtcms.com/a/574765.html

相关文章:

  • 公司的网站怎么运营成都网站建设类岗位
  • 优质农产品资源数据库小程序功能设计书
  • seo网站排名优化公司哪家好室内设计网课平台哪个好
  • 网站维护运营北京网站建设华网天下科技
  • 酒店网站做的比较好的网站建设 报告
  • 一般网站开发完周期杭州 定制网站
  • 社区网站建设难点广州企业网站建设哪家服务好
  • 网站seo完整的优化方案做网站最多的行业
  • 通智融合技术:融合AI与通信技术,推动万智互联生态建设
  • 什么网站做装修的如何用普通电脑做网站服务器
  • 种子汤唯梁朝伟做视频网站代驾软件开发公司
  • Linux系统压缩解压指令详解与实例
  • 温州网站 公司甘肃建设厅官方网站项目负责人
  • 广州网站优化方式我要浏览国外网站怎么做
  • 建设银行长清网站python 网站建设 拖拽式
  • 绘画篇(2)
  • Python 内置函数原理解析:map, filter, zip, enumerate
  • wordpress 删除用户安卓优化大师老版本下载
  • 外贸网站建站案例网站建设5000费用
  • 【城市热岛效应识别】二维高斯模型拟合 UHI
  • 网站优化试卷网站备案核
  • 万网网站备份公共货运平台
  • Linux开发-->驱动开发-->字符设备驱动框架
  • 广州网站建设哪家公司承德网站制作公司优选网十科技
  • 一小时做网站做下载类网站前景
  • 【28】OpenCV C++实战篇——统计每个通道像素值的数量,统计R/G/B通道内像素值在某范围内的 总数
  • 江门市网站建设公司emlog to wordpress
  • 网站建设及优化方案苏州宿迁工业园区
  • 一键将指定文件夹内所有文件设置为只读/取消只读
  • linux: centos 软件包管理 yum源