2015-03-13 19 views
5

मैं सिर्फ जावास्क्रिप्ट लाइब्रेरी JointJs खोजता हूं और मैंने कागज और rects के साथ एक ग्राफ लागू किया।संयुक्तजेड पेपर उत्तरदायी कैसे बनाएं?

लेकिन जब मैं ब्राउज़र आकार को कम करता हूं तो मैं इसे उत्तरदायी नहीं बना सकता, मेरा ग्राफ सही तरीके से प्रदर्शित नहीं होता है।

मैं अपने पेपर को संयुक्त राष्ट्र के साथ कैसे उत्तरदायी बना सकता हूं?

उत्तर

3

मैं बूटस्ट्रैप जैसे उत्तरदायी लेआउट सीएसएस का उपयोग करने की अनुशंसा करता हूं, मैं व्यक्तिगत रूप से शुद्ध सीएसएस (http://purecss.io) की सिफारिश करता हूं और बाकी एक HTML पृष्ठ के लिए आधार लेआउट सेट करने के बाद बाकी आसान होता है जिसमें संयुक्त जेएस पेपर होता है।

उदाहरण के लिए मान लीजिए कि आपने एचटीएमएल बेस बनाया है और आपने विशेष रूप से "मॉडल कन्ववास" नामक एक डिवी कंटेनर बनाया है, यह div एक उत्तरदायी सीएसएस के साथ बनाया गया था (इस उदाहरण के लिए मैंने शुद्ध सीएसएस का उपयोग किया था)।

<div id="modelCanvas" style="height:100%;width:100%; overflow-y: auto; overflow-x: auto;background-image:url(../res/tiny_grid.png);background-repeat:repeat;">

अब अपने वेब साइट आप के जे एस भाग में, हम init

var graph = new joint.dia.Graph; 

var paper = new joint.dia.Paper({ 
el: $('#modelCanvas'), 
gridSize: 10, 
height: $('#modelCanvas').height(), 
width: $('#modelCanvas').width(), 
gridSize: 1, 
model: graph, 
}); 

आवश्यक JointJS कागज और ग्राफ को प्रारंभ करेंगे अब JointJS कागज उत्तरदायी है बेस्ट, एजी

+1

'$ ('# modelCanvas') चौड़ाई() की आवश्यकता होगी।' मेरे मामले में 0 के बराबर है। इसके लिए किसी की मदद करता है। – Neil

+2

सबसे अच्छा जवाब नहीं है क्योंकि यह वास्तव में उत्तरदायी नहीं है (यानी यह लैंडस्केप से पोर्ट्रेट तक फ़ेबल को बदलने में मदद नहीं करेगा) क्योंकि मीडिया ब्रेक पॉइंट बदलना प्रारंभिक लोड पेपर अपडेट नहीं करेगा। स्पूनमेइज़र का उत्तर बोले बेहतर है क्योंकि इसमें जावास्क्रिप्ट समर्थन शामिल है ताकि यह वास्तव में उत्तरदायी हो। – user1158023

7

आप प्रारंभ में पेपर को उसी आयाम के रूप में सेट कर सकते हैं क्योंकि इसमें शामिल है आईएनजी तत्व, लेकिन जब पेपर बनाया जाता है तो शुरुआत में इसकी गणना की जाती है। यदि आप अपने ब्राउज़र का आकार बदलते समय आकार बदलने के लिए पेपर बनाना चाहते हैं, तो आपको ईवेंट का आकार बदलने के लिए प्रतिक्रिया करने की आवश्यकता होगी।

सबसे पहले, आपको अपने कंटेनर पर छिपाने के लिए अतिप्रवाह सेट करना होगा, अन्यथा इसके आयाम अपने बच्चे को फिट करने के लिए फैले होंगे, और यदि आप ब्राउज़र को छोटा करते हैं तो यह कम नहीं होगा।

#modelCanvas { 
    overflow: hidden; 
} 

आप सुनिश्चित करें कि आपके #modelCanvas तत्व कुछ विधि द्वारा उपलब्ध स्थान को भरने के लिए विस्तृत होंगी, या तो स्थापित करने height: 100% (स्थितियों में, जहां कि काम करेंगे में) या flexbox या निरपेक्ष स्थिति का उपयोग कर बनाने के लिए होगा।

दूसरे, आप एक आकार बदलने ईवेंट हैंडलर

$(window).resize(function() { 
    var canvas = $('#modelCanvas'); 
    paper.setDimensions(canvas.width(), canvas.height()); 
}); 
+0

इस समाधान के साथ कभी-कभी विंडो को छोटे आकार में बदलते समय कोशिकाएं खो जाती हैं। खिड़की का आकार बदलने के दौरान भी सेल तत्व के लिए सेटडिमेन्शन का कोई तरीका है –

+0

आप आकार बदलने वाले ईवेंट हैंडलर में कुछ भी कर सकते हैं। आप पहले से मौजूद सभी विवरणों को शामिल करने के लिए दृश्य को बदलने के लिए 'paper.scale() '(और संभवतः' paper.setOrigin()') को भी कॉल कर सकते हैं, लेकिन आपको यह समझने की आवश्यकता होगी कि उनको पास करने के लिए कौन से तर्क हैं। – SpoonMeiser

संबंधित मुद्दे