d3 style opacity
时间: 2023-08-25 07:08:07 浏览: 228
在d3中,可以使用.style("opacity", value)来设置元素透明度。其中,value是一个介于0和1之间的数字,表示透明度的程度。例如,.style("opacity", 0.5)表示将元素的透明度设置为50%。[1]在给d3生成的图形添加事件时,可以使用.on("mouseover", function(d) { tooltip.style("opacity", 1.0); })来设置鼠标悬停时的透明度,使用.on("mouseout", function(d) { tooltip.style("opacity", 0.0); })来设置鼠标移出时的透明度。[1]此外,在渲染柱状图时,可以使用.transition().duration(1000)来给柱状图添加动画效果,***
相关问题
<template> <el-carousel :interval="4000" type="card" height="200px"> <el-carousel-item v-for="item in 6" :key="item"> <h3 text="2xl" justify="center">{{ item }}</h3> </el-carousel-item> </el-carousel> </template> <style scoped> .el-carousel__item h3 { color: #475669; opacity: 0.75; line-height: 200px; margin: 0; text-align: center; } .el-carousel__item:nth-child(2n) { background-color: #99a9bf; } .el-carousel__item:nth-child(2n + 1) { background-color: #d3dce6; } </style>怎么把我的图片写进去
可以使用`<img>`标签将图片插入到`<el-carousel-item>`中。具体的代码如下所示:
```
<template>
<el-carousel :interval="4000" type="card" height="200px">
<el-carousel-item v-for="item in 6" :key="item">
<img :src="`/static/img/${item}.jpg`" alt="">
<h3 text="2xl" justify="center">{{ item }}</h3>
</el-carousel-item>
</el-carousel>
</template>
<style scoped>
.el-carousel__item h3 {
color: #475669;
opacity: 0.75;
line-height: 200px;
margin: 0;
text-align: center;
}
.el-carousel__item:nth-child(2n) {
background-color: #99a9bf;
}
.el-carousel__item:nth-child(2n + 1) {
background-color: #d3dce6;
}
</style>
```
在图片的`src`属性中,使用了模板字符串和字符串拼接的方式动态地加载图片。这里假设图片的名字是1.jpg、2.jpg、3.jpg等,放在静态资源目录的img文件夹中,因此使用了`/static/img/${item}.jpg`的形式来加载图片。
vue结合D3.js并实现D3.js官网的Indented Tree的效果
要实现D3.js官网的Indented Tree的效果,我们需要先安装D3.js和Vue,并创建一个Vue项目。
安装D3.js:
```bash
npm install d3
```
创建Vue项目:
```bash
vue create my-project
```
然后在Vue项目中引入D3.js:
```javascript
import * as d3 from 'd3';
```
接下来,我们可以在Vue组件中编写Indented Tree的代码。首先,我们需要定义数据。例如:
```javascript
data() {
return {
treeData: {
"name": "flare",
"children": [
{
"name": "analytics",
"children": [
{
"name": "cluster",
"children": [
{"name": "AgglomerativeCluster", "value": 3938},
{"name": "CommunityStructure", "value": 3812},
{"name": "HierarchicalCluster", "value": 6714},
{"name": "MergeEdge", "value": 743}
]
},
{
"name": "graph",
"children": [
{"name": "BetweennessCentrality", "value": 3534},
{"name": "LinkDistance", "value": 5731},
{"name": "MaxFlowMinCut", "value": 7840},
{"name": "ShortestPaths", "value": 5914},
{"name": "SpanningTree", "value": 3416}
]
}
]
},
{
"name": "animate",
"children": [
{"name": "Easing", "value": 17010},
{"name": "FunctionSequence", "value": 5842},
{
"name": "interpolate",
"children": [
{"name": "ArrayInterpolator", "value": 1983},
{"name": "ColorInterpolator", "value": 2047},
{"name": "DateInterpolator", "value": 1375},
{"name": "Interpolator", "value": 8746},
{"name": "MatrixInterpolator", "value": 2202},
{"name": "NumberInterpolator", "value": 1382},
{"name": "ObjectInterpolator", "value": 1629},
{"name": "PointInterpolator", "value": 1675},
{"name": "RectangleInterpolator", "value": 2042}
]
},
{"name": "ISchedulable", "value": 1041},
{"name": "Parallel", "value": 5176},
{"name": "Pause", "value": 449},
{"name": "Scheduler", "value": 5593},
{"name": "Sequence", "value": 5534},
{"name": "Transition", "value": 9201},
{"name": "Transitioner", "value": 19975},
{"name": "TransitionEvent", "value": 1116},
{"name": "Tween", "value": 6006}
]
}
]
}
}
}
```
然后,在Vue组件的`mounted`钩子函数中使用D3.js来创建Indented Tree:
```javascript
mounted() {
const width = 600;
const height = 400;
const margin = {top: 10, right: 120, bottom: 10, left: 40};
const dx = 10;
const dy = width / 6;
const diagonal = d3.linkHorizontal().x(d => d.y).y(d => d.x);
const tree = d3.tree().nodeSize([dx, dy]);
const root = d3.hierarchy(this.treeData);
root.x0 = dy / 2;
root.y0 = 0;
root.descendants().forEach((d, i) => {
d.id = i;
d._children = d.children;
if (d.depth && d.data.name.length !== 7) d.children = null;
});
const svg = d3.select(this.$refs.tree).append('svg')
.attr('viewBox', [-margin.left, -margin.top, width, dx])
.style('font', '10px sans-serif')
.style('user-select', 'none');
const gLink = svg.append('g')
.attr('fill', 'none')
.attr('stroke', '#ccc')
.attr('stroke-width', 1.5);
const gNode = svg.append('g')
.attr('cursor', 'pointer')
.attr('pointer-events', 'all');
function update(source) {
const duration = d3.event && d3.event.altKey ? 2500 : 250;
const nodes = root.descendants().reverse();
const links = root.links();
tree(root);
let left = root;
let right = root;
root.eachBefore(node => {
if (node.x < left.x) left = node;
if (node.x > right.x) right = node;
});
const height = right.x - left.x + margin.top + margin.bottom;
const transition = svg.transition()
.duration(duration)
.attr('viewBox', [-margin.left, left.x - margin.top, width, height])
.tween('resize', window.ResizeObserver ? null : () => () => svg.dispatch('toggle'));
const node = gNode.selectAll('g')
.data(nodes, d => d.id);
const nodeEnter = node.enter().append('g')
.attr('transform', d => `translate(${source.y0},${source.x0})`)
.attr('fill-opacity', 0)
.attr('stroke-opacity', 0)
.on('click', d => {
d.children = d.children ? null : d._children;
update(d);
});
nodeEnter.append('circle')
.attr('r', 2.5)
.attr('fill', d => d._children ? '#555' : '#999')
.attr('stroke-width', 10);
nodeEnter.append('text')
.attr('dy', '0.31em')
.attr('x', d => d._children ? -6 : 6)
.attr('text-anchor', d => d._children ? 'end' : 'start')
.text(d => d.data.name)
.clone(true).lower()
.attr('stroke-linejoin', 'round')
.attr('stroke-width', 3)
.attr('stroke', 'white');
const nodeUpdate = node.merge(nodeEnter).transition(transition)
.attr('transform', d => `translate(${d.y},${d.x})`)
.attr('fill-opacity', 1)
.attr('stroke-opacity', 1);
const nodeExit = node.exit().transition(transition).remove()
.attr('transform', d => `translate(${source.y},${source.x})`)
.attr('fill-opacity', 0)
.attr('stroke-opacity', 0);
nodeExit.select('circle').attr('r', 1e-6);
nodeExit.select('text').style('fill-opacity', 1e-6);
const link = gLink.selectAll('path')
.data(links, d => d.target.id);
const linkEnter = link.enter().append('path')
.attr('d', d => {
const o = {x: source.x0, y: source.y0};
return diagonal({source: o, target: o});
});
const linkUpdate = link.merge(linkEnter).transition(transition)
.attr('d', diagonal);
link.exit().transition(transition).remove()
.attr('d', d => {
const o = {x: source.x, y: source.y};
return diagonal({source: o, target: o});
});
root.eachBefore(d => {
d.x0 = d.x;
d.y0 = d.y;
});
}
update(root);
}
```
最后,在Vue组件的模板中添加一个`div`元素,用来渲染Indented Tree:
```html
<template>
<div ref="tree"></div>
</template>
```
这样,我们就可以在Vue项目中使用D3.js来实现Indented Tree的效果了。
阅读全文