代码之家  ›  专栏  ›  技术社区  ›  at.

拉斐尔帆布填充容器div

  •  21
  • at.  · 技术社区  · 14 年前

    我不需要指定拉斐尔画布的宽度和高度,而是需要它的大小是其容器的100%。所以我可以做一个Raphael(“container”,containerement.width,containerement.height)并设置onresize函数来重置这些值。但是,当我调整窗口或容器的大小时,内容变得非常紧张和忙乱,因为滚动条(如果它太小,我希望它)闪现或消失。

    这是把拉斐尔的画布和一个容器的全部尺寸绑在一起的正确方法吗?我还想提供选项,使拉斐尔画布“全屏”占据整个浏览器窗口。

    3 回复  |  直到 14 年前
        1
  •  27
  •   Adam Holmes    14 年前

    如果使用div,那么可以使用CSS将其设置为宽度和高度的100%。然后使用 Raphael("container", "100%", "100%")

    至于全屏显示,大多数浏览器都有这样的命令。因此,如果你真的是100%,那么当你按下命令按钮,例如(firefox中的F11),它将变成全屏。

        2
  •  2
  •   laffan gnat    12 年前

    Raphael("container", "100%", "100%"); 将画布填充到DIV容器的宽度/高度。这在Chrome和Safari中工作得很好。要让Firefox上线,你需要在css中给body和html 100%的宽度/高度,否则向量将被裁剪。

        3
  •  0
  •   Jerimio    11 年前

    这次有点晚了,但我会在这里发帖让其他人搜索。

        var h = $('container').height(); //get the container height into variable h       
        var w = $('container').width(); //get the container width into variable w
        //set your Raphael canvas to the variables
        var contpaper = Raphael("container", w, h); 
        var doit;
        //function to reload the page and/or do other adjustments
        function resizedw(){   
            document.location.reload()                
        }
        //call function 200 ms after resize is complete.
        $(window).resize(function(){clearTimeout(doit); 
            doit = setTimeout(function() {
            resizedw();
        }, 200)});
    

    此解决方案是跨浏览器和移动安全的,因此您可以使用它来结合响应式设计。通过以if语句的形式向javascript添加viewport width或height的注意事项,可以基于相同的变量定义所有形状。