2016-02-08 22 views
5

Bir kanvasın boyutu (genişlik ve yükseklik) değiştirilebilir, ancak kanvasın stil boyutu dinamik olarak değiştirilemez.Bir kanvasın stil boyutunu JavaScript ile dinamik olarak nasıl değiştirebilirim?

canvas = document.getElementById('test_fabric'); 
ctx = this.canvas.getContext('2d'); 
canvas.style.width = 1000; // does not work. 
canvas.style.height = 260; // does not work. 
canvas.width = 100; // works. 
canvas.height = 100; // works. 

Hem canvas.width ve iyi iş canvas.height, ancak her iki canvas.style.width ve canvas.style.height çalışmaz.

Benim durumumda, tuvalin stil boyutu yalnızca bir css dosyası veya tuvalin satır içi stili ile değiştirilebilir.

canvas#test_fabric { 
    width:400px; 
    height:400px; 
    background:gold; 
} 

veya

<div><canvas id="test_fabric" width="200" height="200" 
style="width:200px; height:200px"></canvas></div> 

Not: satır içi stil var olduğunda css dosyası etkisiz hale gelir.

Bir kanvasın stil boyutunu JavaScript ile dinamik olarak değiştirmenin yolu nedir?

Şimdiden teşekkürler!

+0

yazık ayar yüksekliği ve genişliği için CSS yöntemi kullanmak jquery kullanmış, demek: http://stackoverflow.com/questions/13779429/canvas-inline-height-and-width- öznitelikler ile override-css-styles-is-bu- – Gavriel

+1

CSS uzunluk birimleri, örneğin, "px" belirterek denediniz mi? canvas.style.width = "1000px" ' – nnnnnn

+0

" canvas.setAttribute ('width', '500'); kullanmayı denerim. " ve "canvas.setAttribute ('height', '500');", tuval etiketi stil olmadan tanımlanırken ve tuval etiketini stil ile tanımlarken Chrome bir ileti rapor eder: "[Sadece Rapor] Reddedildi Aşağıdaki İçerik Güvenliği İlkesi yönergesini ihlal ettiği için satır içi stil uygular: "style-src 'self" ".Safe-inline" anahtar sözcüğü, bir hash (' sha256-8qEYHk4WwsvJKgLquQfLnw2DRoaMh4sWGNj24adrRLQ = ') veya bir nonce (' nonce-. .. ') satır içi yürütmeyi etkinleştirmek için gereklidir. " – Calvin

cevap

5

Stil özelliklerinin genişliği ve yüksekliği, değerlerin ölçülmesini gerektirir, html özniteliklerinin genişliği ve yüksekliği gerektirmez. Yani, açıkça kodunuzda px, em or % vb ayarlamak gerekir: birim olmadan

canvas = document.getElementById('test_fabric'); 
ctx = canvas.getContext('2d'); 
canvas.style.width = '1000px'; // explicitly setting its unit 'px' 
canvas.style.height = '260px'; 

style.width/yükseklik css için geçersiz bir kuraldır.

+0

Cevabınız için teşekkürler! Bhojendra Nepal. – Calvin

+0

@Calvin Rica ederim! –

3

i

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     $("#test_fabric").css({"border-color": "#C1E0FF", 
       "border-width":"1px", 
       "border-style":"solid","height":"500px","width":"500px"}); 
     }); 
    </script> 
    <div class="col-md-12"> 
     <div><canvas id="test_fabric" width="200" height="200"></canvas></div> 
    </div> 
+0

abhay vyas: Jquery'yi yolun gibi kullanmaya çalıştım ve işe yaradığını gördüm. Teşekkür ederim! – Calvin

+0

Eğer kumaş.js'yi kullanırsanız, şunu yapabilirsiniz: canvas.setDimensions ({width: 800, height: 200}, {backstoreOnly: true}); canvas.setDimensions ({width: '800px', height: '200px'}, {cssOnly: true}); – Calvin

+1

, "width" ve "height" değerini css olarak ayarlar, yalnızca tuval resmini genişletir. Bu tuval hala 500x500 px gerilmiş bir 200x200 px alanı olmalı – Saba

İlgili konular