我正在尝试制作一个具有简单3x3
网格布局的页面:页眉顶部,页脚底部,两个侧边栏和主显示。一切正常,直到我添加应填充主显示div的SVG元素:
<div class="main">
<svg viewBox="0 0 500 500"></svg>
</div>
Run Code Online (Sandbox Code Playgroud)
此时,整个网格布局变得混乱,浏览器删除了标题,将页面扩展到了height: 100%
我声明的页面之下,等等。
我可以很容易地“固定”这通过设定我的SVG max-height
和max-width
任意小(低于〜60%在Firefox 62.0.3;在Safari 12.0,<90%)。但这并不是真正的解决方法,因为它留下了明显的差距(在Firefox中是一个巨大的差距)。我更喜欢调整SVG的大小100%
以填充网格中的空间。我肯定错过了什么。我究竟做错了什么?
编辑:添加我想要的(我的一个版本)的屏幕快照。
您所看到的样式表如下。唯一的两个图像之间的区别是在变化max-width
和max-height
从10%
到100%
。
<div class="main">
<svg viewBox="0 0 500 500"></svg>
</div>
Run Code Online (Sandbox Code Playgroud)
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
display: grid;
border-style: solid; // to show that body renders improperly
border-color: red;
grid-template-columns: 3fr 9fr 2fr;
grid-template-rows: 1fr 10fr 1fr;
width: 100vw; …
Run Code Online (Sandbox Code Playgroud)我最近一直在试验 TypeScript,我正在尝试实现一些基本的 monad。我已经有了一个功能合理的 Maybe(至少使用与下面的任何一种方法相同的方法),但是由于与类型相关的原因,我不太明白任何一种。
我的更高级类型的打字策略是从这篇文章中借用的:https ://medium.com/@gcanti/higher-kinded-types-in-typescript-static-and-fantasy-land-d41c361d0dbe 。我知道有些库已经拥有所有这些 monad 和其他 FP 好东西,但是像这样实现它们是我尝试更深入地学习 TypeScript 的方式。
declare module './HKT' {
interface TypeIDtoHKT2<E, A> {
Either: Either<E, A>;
}
}
export const TypeID = 'Either';
export type TypeID = typeof TypeID;
export class Left<E> {
readonly _F!: TypeID;
readonly _A!: E;
readonly _tag: 'Left' = 'Left';
constructor(readonly left: E) {}
static of<E, A>(e: E): Either<E, A> {
return new Left(e);
}
map<A, B>(f: (a: A) => B): Either<E, B> {
return this;
} …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 d3.csv() 方法导入 .csv 文件。这是我的代码:
d3.csv("data.csv", function(data) {
console.log(data);
})
Run Code Online (Sandbox Code Playgroud)
我认为我会得到一个包含对象的数组,每个对象代表 .csv 文件的一行(其中有 50 个)。但我实际上得到的是一系列独立的对象。也就是说,该函数已将 50 个对象记录到我的控制台,而不是一个包含 50 个对象的数组。我是否误解了这个方法?如果是这样,我怎样才能得到这样的数组?
这可能是一件简单的事情,但我正在编写一个我想要返回记录的函数,并且其中几个字段需要做一些可能会失败的事情,所以现在结果记录看起来像这样(假设它的类型别名为MyRecord
)。
{ field1 : Maybe a
, field2 : Maybe a
, field3 : Maybe a
}
Run Code Online (Sandbox Code Playgroud)
然而,这并不能准确地代表所发生事情的“真实”含义。该函数的基本目标是验证和重新格式化一些数据。所以我想说,如果我有一个MyRecord
,我有三个字段值得a
's。如果我没有这些字段,我想知道我没有MyRecord
. 从逻辑上讲,我想返回一个Maybe MyRecord
,但对于我的一生,这是逃避我的新手到榆树的能力。
目前,我正在一次创建记录,但由于明显的原因,这不起作用:
{ field1 = maybeProducingFunction1
, field2 = maybeProducingFunction2
, field3 = maybeProducingFunction3
}
Run Code Online (Sandbox Code Playgroud)
如何创建此记录,以便如果这些函数中的任何一个产生Nothing
,则整个记录是Nothing
?