2013-06-03 5 views
11

मैंने पाया कि जब CSS3 ज़ूम छोटे एसवीजी आइकन (9 पीएक्स: 9 पीएक्स ज़ूम के साथ: 1.5) पर लागू होता है, तो एसवीजी आइकन धुंधला हो सकता है। इस मामले में एक तेज और साफ आइकन पाने के लिए कोई विचार? अग्रिम में धन्यवाद।CSS3 लागू करते समय svg पर एंटी-एलाइजिंग बंद करें: तत्व पर ज़ूम करें?

एसवीजी:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" 
     x="0px" y="0px" width="9px" height="9px" viewBox="0 0 9 9" enable-background="new 0 0 9 9"> 
    <g> 
     <g fill="none" transform="translate(0.5, 0.5)"> 
      <g stroke="#000000" stroke-width="0.5" stroke-linecap="square" > 
       <line x1="2" y1="4" x2="6" y2="4"/> 
       <line x1="4" y1="2" x2="4" y2="6"/> 
      </g> 
      <g stroke="#909090" stroke-width="1" stroke-linecap="square" > 
       <rect x="0" y="0" width="8" height="8"/> 
      </g> 
     </g> 
    </g> 
</svg> 
+1

कौन सा ब्राउज़र? आकार बदलने या ज़ूम करने पर कुछ ब्राउज़र एसवीजी का पुनर्मूल्यांकन नहीं करते हैं। CSS3 ज़ूम क्या है? क्या आप बस ब्राउज़र के साथ ज़ूम इन करने का मतलब है? या गैर मानक आईई संपत्ति? –

+0

मेरे प्रश्न के आपके नोटिस के लिए धन्यवाद। यहां [CSS3 ज़ूम] (http://www.css3.com/css-zoom/) की कुछ जानकारी दी गई है। यह ज्यादातर आधुनिक ब्राउज़रों द्वारा व्यापक रूप से समर्थित है। मैं इसे क्रोम और सफारी आईओएस पर कोशिश कर रहा हूं। – bigbearzhu

+0

हां, यह गैर-मानक है। यह संभवतः बिना किसी गणना के प्रस्तुत किए गए तत्व को ज़ूम कर रहा है। क्या आपने इसके बजाय स्केल ट्रांसफॉर्म फ़ंक्शन का उपयोग करने का प्रयास किया है? या प्रारंभिक रूप से इसे प्रदर्शित करते समय मूल एसवीजी बड़ा और स्केलिंग कर सकते हैं? –

उत्तर

21

एक समाधान अपने आप को मिल गया। चाल जोड़ रही है:

shape-rendering="crispEdges" 

एसवीजी तत्वों के लिए।

Mozilla MDN से:

crispEdges इंगित करता है कि उपयोगकर्ता एजेंट प्रतिपादन की गति और ज्यामितीय परिशुद्धता से अधिक कलाकृति की साफ किनारों के बीच इसके विपरीत पर जोर करने का प्रयास करेगा। कुरकुरा किनारों को प्राप्त करने के लिए, उपयोगकर्ता एजेंट एंटी-एलाइजिंग को सभी लाइनों और वक्रों के लिए बंद कर सकता है या संभवतः केवल सीधे रेखाओं के लिए जो ऊर्ध्वाधर या क्षैतिज के करीब हैं। साथ ही, उपयोगकर्ता एजेंट डिवाइस पिक्सल के साथ किनारों को संरेखित करने के लिए लाइन स्थिति और रेखा चौड़ाई समायोजित कर सकता है।

jsFilddle पर अंतर देखें।

+1

कोई भी इस पर ब्राउज़र समर्थन पता है? इसका कोई संदर्भ नहीं मिल रहा है। –

+2

2016 तक, ब्राउज़र समर्थन यहां पाया जा सकता है http://caniuse.com/#feat=css-crisp-edges – Luciano

+0

जैसा लगता है उतना वादा करता है, सितंबर 2017 में 'crispEdges' के लिए समर्थन अभी भी फ़ायरफ़ॉक्स और सफारी तक सीमित है और नतीजा फ़ायरफ़ॉक्स में उप-अनुकूल रूप से कुछ और की तुलना में 'pixelated' जैसा दिखता है: https://codepen.io/Volker_E/pen/wrBJYb –

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