小编swe*_*edo的帖子

SVG - How do I cut a <path> in half?

I need to cut an existing path (curve) at a specific point in javascript. For example, if I have the following path:

<path stroke-width="3"
      stroke="black"
      stroke-linecap="round"
      stroke-linejoin="round"
      id="line_test"
      d="M125,165 C125,165 125,164 125,164">
</path>
Run Code Online (Sandbox Code Playgroud)

From that, I could get the midpoint like so:

var line = document.getElementById("line_test");
var length = line.getTotalLength();
var midpoint = line.getPointAtLength(length/2);
Run Code Online (Sandbox Code Playgroud)

Once I get that midpoint, I want to remove the rest of the path completely. Is there a function that will allow me to get a …

javascript svg drawing

5
推荐指数
1
解决办法
1737
查看次数

SVG foreignObject和绝对定位

当我在一个内部的html对象上使用它时,我有绝对和相对定位的问题svg:foreignObject.

我已经让这个jsfiddle来证明我的问题.

div.wrapper应该与rectin中的位置相同svg:g,并且div中的段落应该如css中所述定位.

我在以下浏览器(Mac)中遇到问题:

  • Safari 6.0.3
  • Chrome 26.0.1410.63
  • Maxthon 4.0.3.6000.

它的工作方式与我在Firefox 19.0.2中的预期相同.

我的代码有问题吗?有谁知道如何解决这个问题?

UPDATE

我发现了这个bug,这可能就是问题所在.看起来webkit foreignObject问题跟踪器存在很多问题.

如果某人有一个解决方法,如何将段落放在div的角落,我将不胜感激.

html css svg

5
推荐指数
1
解决办法
4733
查看次数

初始化元素并只需单击一下即可开始拖动

mousedown我想在DOM中注入一个新元素并立即开始拖动它(即触发器dragstart),而不再单击新元素.

我在我的项目中经常使用d3.js.但我不知道是否可以dragstart使用d3 触发事件,所以我尝试使用jQuery:

$("circle#pen").trigger("dragstart");
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

这是一个jsFiddle的链接,我通过尝试创建一个"笔"来演示我的问题mousedown,如果用户拖动它绘制一条线.在dragend笔被移除,线条消失.但是必须初始化笔,然后可以通过新的点击来拖动它.这只是为了证明问题.

这是jQuery的一个相关问题,但没有很好的答案.

html javascript d3.js

5
推荐指数
1
解决办法
584
查看次数

如何在对象文字中使用promise

angular-translate版本2.0中,$ translate服务不再返回实际的翻译,而是一个承诺.我可以看到这是一个好主意,因为可能会有一些异步加载.但它让我困惑如何在我的情况下正确使用服务,因为我在对象文字中使用了$ translate服务,就像这样

$scope.myDefs = [
      ...
      {
            field: 'supplier',
            displayName: $translate('Supplier'),
            cellTemplate: "<div class=\"ngCellText\">...</div>"
      },
      ...
      {
            field: 'supplierSize',
            displayName: $translate('Size'),
            width: 100,
            cellClass: "center"
      }
      ...
];
Run Code Online (Sandbox Code Playgroud)

问题:如何在对象文字中使用promise?

它应该(根据文档)使用如下:

$translate('HEADLINE').then(function (headline) {
    $scope.headline = headline;
});
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular-translate

5
推荐指数
2
解决办法
2674
查看次数

AngularJS app中的svg clipPath,其中url采用hashbang模式

clipPath在AngularJS项目中使用了svg .这是对这个问题的后续问题.

假设我有一个像这样的svg:

<svg width="120" height="120"
     viewPort="0 0 120 120" version="1.1"
     xmlns="http://www.w3.org/2000/svg">

    <defs>
        <clipPath id="myClip">
            <rect x="10" y="10" width="60" height="60"></rect>
        </clipPath>
    </defs>

    <g clip-path="url(#myClip)">
        <circle cx="30" cy="30" r="20"/>
        <circle cx="70" cy="70" r="20"/>
    </g>

</svg>
Run Code Online (Sandbox Code Playgroud)

因为我使用的<base>元素我不能使用这样的相对路径

<g clip-path="url(#myClip)">
Run Code Online (Sandbox Code Playgroud)

所以我必须使用绝对URL +片段标识符,如下所示:

<g clip-path="url(http://example.com/mypage#myClip)">
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox,Safari和Chrome.但我有IE的以下问题:

  • IE9不支持我使用的html5mode,因此使用hashbangs并且绝对url变为http://example.com/!#/mypage#myClip且clipPath不起作用.

  • IE10 + IE11中,当我转到包含我的SVG的页面时,clipPath不起作用,但是如果我刷新页面就可以了.

任何想法如何解决IE问题?

javascript svg angularjs

5
推荐指数
1
解决办法
1108
查看次数

如何跟踪和调试悬挂的apache进程

我无法弄清楚我的PHP后端有问题。请求API(PHP代码返回json)时,我遇到了一些apache进程的间歇性“挂起”现象。

Apache永远不会传递文件(html,css,js等),只是触发问题的API调用数量有限。该请求在Chrome开发者工具的“网络”标签apachectl restart中处于待处理状态,即使我运行,重启后请求仍处于待处理状态。我看到httpd运行时所有进程都不会停止apachectl stop。我必须杀了他们killall -9 httpd

发生问题时,我必须停止Apache,杀死所有httpd进程,然后再次启动apache。如果我不重新启动,大多数API调用将挂起(可能是分配给挂起的子进程的调用)。

触发问题的API调用全部包括对MySQL的调用。

检查mysql服务器上的进程列表,连接已建立但处于SLEEP状态。

这个问题听起来像是代码问题还是配置问题?

错误日志(mysql和apache)未显示任何内容,所以我想我应该尝试stracedtruss在Mac上)apache进程。我怎么做?

-

环境:

  • OS X 10.10.2优胜美地
  • Apache / 2.4.9(Unix)-与os x一起安装
  • MySQL 5.6.22(Homebrew)-innodb,mysqli接口,非持久连接
  • PHP 5.6.5(自制)-php56,mcrypt,php56-mcrypt,php56-apcu,php56-xdebug

php mysql apache trace dtrace

5
推荐指数
0
解决办法
703
查看次数

D3js过滤器选择

我创建交互式气泡图财富500点的数据.我试图减少选择,但无法弄清楚为什么它不像我期望的那样工作.

var bubble = d3.layout.pack()
    ...

d3.json("js/data/fortune2009.json", function(json) {

    var node = svg.data([json]).selectAll("g.node")
        .data(bubble.nodes); // filter here?

    node.enter()
        .append("g")
        .attr("class", "node")
        .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });

    node.append("circle")
        .attr("r", function(d) { return d.r; })
        .attr("class", function(d) { return "q" + color(d.Profit) + "-9"; });

    node.filter(function(d) { return !d.children; })
        .append("text")
        .attr("dy", ".3em")
        .style("text-anchor", "middle")
        .text(function(d) { return d.Company.substring(0, d.r / 3); });
});
Run Code Online (Sandbox Code Playgroud)

JSON数据如下所示:

{
    "children":[
    {
        "Year" …
Run Code Online (Sandbox Code Playgroud)

javascript filtering d3.js circle-pack

4
推荐指数
2
解决办法
8687
查看次数

IE将蓝色边框添加到使用css渐变的div

我正在尝试制作一条灰色线条,这条线条渐渐变为透明.我创建了一个div,即1x100px,并添加了css渐变以产生淡入淡出效果.

它工作正常,除了在IE中,div得到一个蓝色边框,我不能摆脱它.

这是我的div的css

#left_header_border {
    position:absolute;
    bottom:-1px;
    left:-100px;
    width:100px;
    height:1px;  

    /* gradient */
    background-color: transparent;
    background-image: -moz-linear-gradient(left, transparent, #cccccc); /* FF3.6 */
    background-image: -o-linear-gradient(left, transparent, #cccccc); /* Opera 11.10+ */
    background-image: -webkit-gradient(linear,left bottom,right bottom,color-stop(0, transparent),color-stop(1, #cccccc)); /* Saf4+, Chrome */
    background-image: -webkit-linear-gradient(left,transparent, #cccccc); /* Chrome 10+, Saf5.1+ */
    background-image: linear-gradient(left, transparent, #cccccc);
              filter: progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorStr='transparent', EndColorStr='#cccccc'); /* IE6–IE9 */
}
Run Code Online (Sandbox Code Playgroud)

我试图检查div,并使其更高,渐变似乎工作,但颜色是蓝色,并添加边框.为什么?

css internet-explorer gradient linear-gradients

2
推荐指数
1
解决办法
1231
查看次数

使用React Hooks进行React Native onLayout

我想在每次渲染时测量React Native View的大小,并将其保存到状态。如果元素布局未更改,则效果不应运行。

使用可以使用onLayout的基于类的组件很容易。但是,在使用React Hooks的功能组件中我该怎么做?

我已经阅读了useLayoutEffect。如果那是要走的路,您有使用它的示例吗?

我制作了一个名为useDimensions的自定义钩子。这是我走了多远:

const useDimensions = () => {
  const ref = useRef(null);
  const [dimensions, setDimensions] = useState({});
  useLayoutEffect(
    () => {
      setDimensions(/* Get size of element here? How? */);
    },
    [ref.current],
  );
  return [ref, dimensions];
};
Run Code Online (Sandbox Code Playgroud)

然后,我使用钩子并将ref添加到要测量尺寸的视图中。

const [ref, dimensions] = useDimensions();

return (
  <View ref={ref}>
    ...
  </View>
);
Run Code Online (Sandbox Code Playgroud)

我尝试调试,ref.current但是没有找到有用的东西。我也在效果挂钩中尝试了measure()

ref.current.measure((size) => {
  setDimensions(size); // size is always 0
});
Run Code Online (Sandbox Code Playgroud)

react-native react-hooks

2
推荐指数
3
解决办法
726
查看次数

在javascript中保持CSS字符串中的换页符不变

如何避免在javascript字符串中解析换页符?

我有一个变量持有这个字符串

var css = 'content: "\f005"';
Run Code Online (Sandbox Code Playgroud)

但是当我使用它时,字符串不会保持不变.例如console.log(css)给出content: "005"

到目前为止,我的"解决方案"就是这个里尔黑客

decodeURIComponent(
    encodeURIComponent(css).replace(/%0C/g, "\\f")
);
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

用例(更新)

我正在构建一个Web小部件,我想要一个没有CSS文件依赖的JS库.因此,当我构建我的项目时,我读取缩小的css文件,并将其作为字符串注入JS文件.当JS lib在客户端初始化时,它会创建一个<style>元素并在那里注入css.

var style = document.createElement('style');
style.type = 'text/css';
var css = '...long css string...'; // form feed characters must be escaped
style.innerHTML = css;
document.getElementsByTagName('head')[0].appendChild(style);
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
141
查看次数