Raphael.js Почему размер моего холста не изменился при изменении размера окна браузера?

Я хотел бы изменить ширину области холста raphael в соответствии с изменением ширины окна браузера, но мой код не работал так, как я ожидал. Следующие коды показывают, что я пробовал:

Моя страница index.html:

<body>
  <div class="my-canvas">

    <script src="js/jquery-1.5.1.js"></script>
    <script src="js/raphael.js"></script>
    <script src="js/myWin.js"></script>
    <script src="js/myRaphaelApp.js"></script>
</body>

мой CSS определил начальный размер моего холста:

.my-canvas {

    width: 50%;
    height:800;

}

У меня есть myWin.js, который может получить ширину текущего окна браузера и прослушивать изменение размера окна браузера, вызывая функцию jQuery $(window).resize(...):

myWin.js

myWin = function(){


    var width=$('.my-canvas').width()*0.5;

    $(window).resize(function() {
        width=$('.my-canvas').width()*0.5; //update the width as browser window size is changing


    });



    return {
        getWidth: function(){
            $(window).resize();
            return width;
        }
        };
}();

Начните рендерить Рафаэля здесь:

myRaphaelApp.js

myRaphaelApp = function(){


    var width = myWin.getWidth(); //get the width of the current browser



    return {
        startRender: function(){


            paper = Raphael("graph", width, height); //width is not updated...
                        var c = paper.rect(10, 10, 50, 50);

        };
}();

Когда я запускаю свое приложение в окне браузера небольшого размера, рисуется круг, а холст raphael имеет ширину исходного окна браузера * 0,5, затем я максимизирую окно браузера, я ожидал, что ширина моего холста raphael будет увеличиваться как окно браузера увеличивается, но холст остается таким же, как первоначальный размер. Где я не прав?


person Leem    schedule 30.05.2011    source источник
comment
Код Raphael не имеет возможности отслеживать обновленные значения поддерживаемой вами переменной ширины. Когда вы инициализируете график, вы передаете только копию текущего значения ширины. После этого Raphael не будет взаимодействовать с вашим кодом, если только вы явно не обновите его в своем собственном обработчике resize().   -  person Pointy    schedule 30.05.2011


Ответы (2)


  1. Вы не закрываете свой тег <div class="my-canvas">.
  2. У вас нет единицы измерения в теге высоты CSS (например, px или em).
  3. Если ваша переменная width не является волшебной, вы не обновляете ширину любого элемента с помощью своего хука $(window).resize. Вы просто устанавливаете переменную ширины на половину ширины <div class="my-canvas">.
person coreyward    schedule 30.05.2011

Создайте свой документ следующим образом:

paper = Raphael("graph", "100%", "100%");
person John Fouhy    schedule 25.03.2013