我正在尝试使用D3 Tree Layout来创建各种各样的家谱,我注意到的一件事是,当我有很多子节点时,它会在屏幕上水平伸展.理想情况下,我希望这些节点有一个更垂直的布局,这样人们就不必在屏幕上滚动,只能继续向下看树.
这是我目前看到的:

现在它可能不是那么糟糕,但如果我说了20个孩子,它将跨越整个屏幕,这是我有点想避免的.
我已经看到了这样的问题这样,但是这并不能帮助我,因为我想一个特定的布局,而不是简单地调整大小...我有大的节点,他们开始彼此,如果我尝试动态调整树碰撞-萎缩这棵树对我没有好处.对于有超过一定数量的孩子的情况,我特别需要不同的布局.
这是我想象/希望的那种.请注意,root不会生成此格式,因为它只有4个子节点.理想情况下,我想要它,如果父母有5个或更多的孩子,它将导致下面的布局.如果根有5个子节点,则会导致这种布局,如果用户想要查看根的孙子节点(A,B,C ......节点),布局应该只是垂直伸展.如果有必要,我可以得到一个图表:

我找到了关于自定义儿童布局的半类似问题,他说他必须使用实际的d3js代码.我有点想避免这种情况,所以我希望能够找到d3js是否可行,因为它现在就是这样,如果是这样,怎么去呢?我不需要一个完整的答案,但是一段代码证明这是可能的,这将是非常有帮助的.
如果有必要,我可以上传一个JSFiddle供人们玩.
根据Express 文档,app.use和 Router 都实现了路由器接口,并且都可以作为中间件。
所以基本上你可以通过做来定义路线
app.use(function (req, res, next) {
next();
})
Run Code Online (Sandbox Code Playgroud)
或者你也可以做
var router = express.Router();
router.get('/', function (req, res, next) {
next();
})
app.use(router);
Run Code Online (Sandbox Code Playgroud)
我只是想知道我是否有理由在应用程序上使用路由器?我唯一能找到的使用一个或另一个是我需要与我的params. 只是好奇。
我正在尝试获取存储库中自某个日期以来未被触及的文件列表.
我试图利用git log --before="X months ago" --name-only然后比较该列表,git log --after="X months ago" --name-only但我不确定是否有更简单的方法?
那还是有办法获取每个文件的HEAD提交日期并过滤列表?我不确定最好的办法是什么.
loadedmetadata我想知道视频的事件侦听器和事件侦听器之间有什么区别canplay。根据MDN:
canplay 当有足够的数据可供媒体播放(至少播放几帧)时发送。这对应于 CAN_PLAY 就绪状态。
loadmetadata 媒体元数据已完成加载;所有属性现在都包含尽可能多的有用信息。
还有两个事件侦听器,包括loadeddata和loadedstart。
对于我的用例,我想等待video元素加载,以便我可以获取video.currentTime. 我的timeupdate函数使用此信息,但我相信视频未完全加载,因此它会引发一个小错误,即无法获取视频的当前时间。
等待视频加载或播放的最佳做法是什么?
所以我试图在我的网站上链接一个图像<img src="cat.png alt="cat"/>,因为某些原因它不起作用.后来我发现,当上传到我的服务器上的文件被标记为"cat.PNG"所以我认为输入和固定.但是,当我在localhost上测试我的网站时,它很好.为什么是这样?这是一些安全问题还是localhost在解析文件时更聪明?
我知道这是一个奇怪而随机的问题,但我很好奇.谢谢.
我在绘制从data.seattle.gov中提取的GeoJSON文件时遇到问题.具体来说,我正在使用可在此处找到的Shape文件.我将它转换为GeoJSON文件,我在下面提供了一个小样本.
通过使用D3,我希望得出西雅图应该是不同的区域(实际上我不完全确定它应该是什么,这就是为什么我画它...哈...)但由于某种原因尽管正确计算了路径,但它没有正确显示.
我在这里举办了我的例子.当我有时间设置它时,我会尝试用jsFiddle替换这个链接.问题是,GeoJSON文件非常大,所以我不认为jsFiddle是理想的.
我的代码很简单......我只是根据GeoJSON文件的功能添加路径.
var width = 1000,
height = 1000;
var svg = d3.select("body")
.append("svg")
.attr("width", width + "px")
.attr("height", height + "px");
var projection = d3.geo.mercator()
.scale(150)
.translate([width/2, height/2]);
var path = d3.geo.path()
.projection(projection);
var g = svg.append("g");
d3.json("geojson/data.geo.json", function(data) {
console.log(data);
g.selectAll("path")
.data(data.features)
.enter()
.append("path")
.attr("d", path)
.attr("stroke", "black")
.attr("stroke-width", "5px")
.attr("fill-opacity", 0);
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,我觉得它只显示其中一条路径而不是所有路径.起初我以为可能是因为有某种填充而且它们只是隐藏在彼此之上,但我将其设置fill-opacity为0,这也没有帮助.
以下是GeoJSON文件的一小部分示例.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[ …Run Code Online (Sandbox Code Playgroud) 我注意到有两种方法可以引用 SVG 图像。您可以使用标准<img>标签
<img src="picture.svg" alt="SVG Image"/>
Run Code Online (Sandbox Code Playgroud)
或者你可以使用<image>标签
<svg>
<image xlink:href="picture.svg" x="0" y="0" height="50px" width="50px"/>
</svg>
Run Code Online (Sandbox Code Playgroud)
对我来说,简单地使用该标签似乎更好<img>,因为您获得的alt属性使其更适合搜索,并且您还可以通过 CSS 应用样式。我在应用样式时遇到问题,因为 SVG<image>需要属性。
<image>我想知道您使用 SVG标签而不是标准标签是否有重要原因<img>?
目前我已经设置了Express3-Handlebars,我正在尝试获取当前 URL,提取 GET 查询,并将其传递到辅助函数中的车把模板。不过,我无法找到一种方法来将发送到车把助手的请求传递给我,因为我似乎只能访问路线中的当前 URL。
app.get('/somewhere', function(req, res) {
console.log(req.originalUrl); <-- prints the URL I am at such as somewhere?country=US
res.render('somewhere-home', {
somewhere-info: global.somewhere-info
globals: global.globals,
css:['/media/css/somewhere.css'
],
js:[
'/media/js/somewhere.js'
]
});
});
Run Code Online (Sandbox Code Playgroud)
我希望编写一个辅助函数,可以利用节点的url库并将 URL 传递给 Handlebars
helpers: {
currentURL: function() {
console.log(url.parse(req.originalUrl, true));
return url.parse(req.originalUrl, true);
},
Run Code Online (Sandbox Code Playgroud)
然后我可以在我的车把文件中以某种方式访问它。我希望我的模板能够智能地打印一些东西,但是如果我收到某个请求,则打印另一件事。所以像
{{#if currentURL.query == 'US' }}
<h1>Welcome to US!</h1>
{{else}}
<h1>Welcome to wherever the hell you are from!</h1>
{{/if}}
Run Code Online (Sandbox Code Playgroud)
不确定我是否以错误的方式处理这个问题。我在Express 的app.get文档中读到,您可以处理某些 GET 请求并根据它们渲染特定页面,但我真的只想更改车把模板文件中的一件小事情,所以我希望不必为每个请求创建多个车把模板我要处理的 GET …
我维护了一个存储库,可以在任何设备上为我的编辑器安装我需要的所有扩展——这对于 Sublime、Atom 和 Vim 来说相当简单,因为它们都有包管理器,允许我运行一个命令来安装一个列表包。
我查看了 VS Code 管理扩展,看起来有一种方法可以在文件中共享扩展建议,但听起来只是填充了建议。我也知道我可以一个一个地手动调用每个扩展并调用,code --install-extension [extension]但这似乎很乏味(我可以编写脚本并让它通过我自己的列表,但想知道是否有更好的方法)。
它们似乎都输出相同的结果并将字符串转换为数字.我不知道有什么区别吗?我似乎无法找到关于~~运算符的任何文档.
var hey = true
hey = +hey //hey = 1
var hey = true
hey = ~~hey //hey = 1
var num = "1231"
num = ~~num //num = 1231
var num = "1231"
num = +num //num = 1231
Run Code Online (Sandbox Code Playgroud)
我找到了一个区别,那就是~~总是会尝试输出一个数字,而有些情况只能返回NaN
num = "omfg"
num = ~~num //num = 0
num = "omfg"
num = +num //num = NaN
num = {}
num = ~~num //num = 0
num = {}
num = +num //num = NaN
Run Code Online (Sandbox Code Playgroud)
任何澄清都会很棒:)
我正在尝试从需要模块功能的地方获取原始文件名.我知道你可以使用__filename获取当前文件,但我想获取原始文件.
例如,我将拥有一个简单的模块
module.js
module.exports(function() {
return {
print : function(message) {
console.log(__filename + ' ' + message);
};
}
});
Run Code Online (Sandbox Code Playgroud)
app.js
var module = require('./module')();
module.print('hello');
Run Code Online (Sandbox Code Playgroud)
最终会发生什么,它会打印,module.js hello但我真的很想看app.js hello.
我正在探索获得它的方法,我知道你可以用它console.trace来查看堆栈的调用,但我不能解析它来做我想要的.
现在我已经通过使print函数接受另一个参数并且你只是__filename从内部传递来解决它,app.js但我想找到一个我不必这样做的解决方案.
所以,当我教别人如何重定向他们的页面时,我会想到这一点.我不太确定主要区别是什么......你有没有理由使用其中一个?我想如果你不是用PHP编码,你必须使用Javascript window.location来重定向,但是如果你用window.locationPHP header开发,你会用PHP吗?我觉得他们的功能非常相似,但也许我错过了一些东西.
我有一个非常简单的链接,显示为块,角落里有一个小绿星.
我想这样做,当你将鼠标悬停在链接上时,链接本身会略微透明,但:before伪选择器不会受到影响.
我看了一些关于这方面的问题,但由于某种原因,我无法让他们的解决方案起作用.这可能吗?我不确定我是否只是编写错误的CSS选择器.
编辑:理想情况下,我希望能够处理背景图像和背景颜色.