2013-01-17 22 views
6

मैं वास्तव में उलझन में हूं कि सीएसएस ट्रांसफॉर्म का उपयोग करके तत्व को स्केल करने से दस्तावेज़ प्रवाह प्रभावित होता है।सीएसएस स्केल ट्रांसफॉर्म कैसे दस्तावेज़ प्रवाह को प्रभावित करता है?

Consider this jsbin या this codepen since jsbin seems to have gone down जहाँ मैं स्टाइलशीट

#scaled-contents { 
    height: 400px; 
    width: 400px; 
    background-color: blue; 
    color: red; 
    font-size: 3em; 
} 

#scaled { 
    transform: scale(0.25, 0.25); //browser prefixes... 
    width: 100px; 
    height: 100px 
} 

मैं इस एक भी 100x100 नीले वर्ग के लिए इसी तरह दिखाने के लिए उम्मीद करेंगे के साथ

p{slipsum text} 
#scaled 
    #scaled-content{some text} 
p{slipsum text} 

है। लेकिन इसे स्थानांतरित किया गया है और क्रोम पर भी निम्न पी तत्व को थोड़ा ओवरलैप करता है। इसके अलावा, devtools में #scaled के आयामों की जांच squat और लंबे के रूप में दिखाता है, प्रतीत होता है कि यह 100x100 बॉक्स से परे तोड़ रहा है।

अंत में, overflow: hidden; को #scaled में जोड़कर कुछ पागल हो जाता है।

क्या चल रहा है? सामग्री प्रवाह को कैसे प्रभावित किया जाना चाहिए?

+0

लिंक मर चुका है ... हम एक फिडल मिल सकता है? – Mooseman

+0

@Mooseman - ओह Dammit, यह कुछ मिनट पहले बस जीवित था, मैंने इसका इस्तेमाल किया। ठीक है, सबकुछ फिर से लिखना –

+0

@Mooseman - कोडेन के साथ अपडेट किया गया http://codepen.io/anon/full/twGzE –

उत्तर

9

सीएसएस ट्रांसफॉर्म दस्तावेज़ प्रवाह को प्रभावित नहीं करता है। डीओएम तत्व पृष्ठ प्रवाह के भीतर इसकी मूल स्थिति और आयामों पर कब्जा करेगा।

तो यदि आपके पास समान आकार के 3 वर्ग div है, तो पंक्ति में इनलाइन प्रदर्शित की गई है और एक -webkit-transform: पैमाने (2) को केंद्रीय वर्ग में लागू करें, यह वर्ग 200% बड़ा, पैमाने से स्केल करेगा इसकी मूल स्थिति का केंद्र, और दोनों अन्य वर्गों को ओवरलैप करें।

संदर्भ उदाहरण:

http://jsfiddle.net/ypnEk/

HTML:

<div class="square one"></div> 
<div class="square two"></div> 
<div class="square three"></div> 

सीएसएस:

.square{ 
    margin-top:50px; 
    width:50px; 
    height:50px; 
    display:inline-block; 
} 

.one{ 
    background:#222; 
} 

.two{ 
    background:#888; 
    -webkit-transform: scale(2); 
} 

.three{ 
    background:#ccc; 
} 
+0

मैं वास्तव में समझ नहीं पा रहा हूं कि मेरे उदाहरण में क्या हो रहा है। यदि मैं एक तत्व स्केल करता हूं और उस पर ऊंचाई/चौड़ाई निर्धारित करता हूं - क्या यह तत्व स्वयं को स्केल कर रहा है या सिर्फ इसकी सामग्री? और फिर सामान अन्य तत्वों के साथ ओवरलैप क्यों होगा? –

+2

आपके उदाहरण के साथ समस्या यह है: 1. युक्त तत्व 100px x 100px है, इसके अंदर 400px वर्ग है। इस प्रकार, ब्लू स्क्वायर उस युक्त बॉक्स से बह जाएगा। 2. आपके पास युक्त तत्व पर 25% स्केल उस बॉक्स की सभी सामग्री स्केल कर रहा है, लेकिन इसे कंटेनर के केंद्र से स्केल कर रहा है। इसलिए, चूंकि आपके पास 300px ऊर्ध्वाधर अतिप्रवाह के साथ 100px ऊंचाई का प्रभावी रूप से एक कंटेनर है, इसलिए नीला वर्ग अभी भी 100px युक्त तत्व के बाहर बैठेगा। आपके उदाहरण के लिए त्वरित फिक्स ऐड-रेफिक्स-ट्रांसफॉर्म-उत्पत्ति है: 0 0; शीर्ष बाएं कोने से नीचे पैमाने को मजबूर करने के लिए # scaled करने के लिए। – chrisgonzalez

+0

आह, 'ट्रांसफॉर्म-उत्पत्ति' वह कुंजी थी जिसे मैं याद कर रहा था। मैं यही चाहता था, अनुवाद नहीं करना –