2015-12-24 6 views
16

सीएसएस चयन पर विचार किया है मैं यहाँ है:अपनी विशेषता के आधार पर एक तत्व का चयन जब वह अपने नाम पर एक बृहदान्त्र

http://jsfiddle.net/dx8w6b64/

/* This works: 
#myChart .ct-series-b .ct-bar { 
*/ 


/* This does not (chromium, glnxa64) */ 
['ct\:series-name'='second'] .ct-bar { 
    /* Colour of your points */ 
    stroke: black; 
    /* Size of your points */ 
    stroke-width: 20px; 
    /* Make your points appear as squares */ 
    stroke-linecap: round; 
} 

इस का उपयोग करते हुए एक नमूना चार्ट है https://gionkunz.github.io/chartist-js/

मैं कर रहा हूँ सीटी-बार तत्वों का चयन करने की कोशिश कर रहा है:

enter image description here

कॉलन चयनकर्ता को फेंकने लगते हैं। मैंने विभिन्न बचने के दृष्टिकोणों की कोशिश की है: \ 3 ए के बाद एक स्थान के साथ, सिंगल और डबल कोट्स - कोई भाग्य नहीं।

+0

उद्धरणों में विशेषता को बिल्कुल मत डालें, यानी [सीटी \: श्रृंखला-नाम = 'दूसरा'] '(परीक्षण नहीं किया गया है लेकिन मैंने कल कहीं इस बारे में पढ़ा है) –

+0

यह थोड़ी सी अजीब है। '[सीटी \: श्रृंखला-नाम =" दूसरा "]' [यहां काम करता है] (https://jsfiddle.net/f75pc8jg/), लेकिन [यहां नहीं] (http://jsfiddle.net/zytLyyjo/)। डीओएम में, विशेषता 'ct: series-name = "second" 'के रूप में प्रदर्शित होती है, लेकिन जब आप वास्तविक HTML का निरीक्षण करते हैं, तो विशेषता' श्रृंखला-नाम =" दूसरा "' है (मेरे लिए कम से कम क्रोम कंसोल में)। –

+0

देखें http://stackoverflow.com/questions/24628932/do-css-namespace-attribute-selectors-work-with-xhtml-html-elements और http://stackoverflow.com/questions/24390558/css-attribute- नेमस्पेस-चयनकर्ता-इन-एसवीजी –

उत्तर

6

मैं चार्टिस्ट उपयोग नहीं किया है, लेकिन ct: नामस्थान उपसर्ग द्वारा पहचानने, यह एसवीजी मार्कअप के लिए एक विस्तार प्रतीत होता है। तो अब आप वास्तव में यहां HTML से काम नहीं कर रहे हैं; आप एक्सएमएल से काम कर रहे हैं, क्योंकि एसवीजी एक एक्सएमएल आधारित मार्कअप भाषा है।

कॉलन से बचने या अन्यथा विशेषता नाम के हिस्से के रूप में इसे निर्दिष्ट करने से काम नहीं होता है क्योंकि ct: अब नामस्थान का उपसर्ग (जो यह है) की तरह व्यवहार गुण का हिस्सा बन जाता है। एक नियमित HTML दस्तावेज़ में, ct:series-name जैसे एक विशेषता नाम में वास्तव में उपसर्ग शामिल होगा, क्योंकि नामस्थान उपसर्ग केवल HTML में विशेष अर्थ है, HTML में नहीं।

@namespace ct 'http://gionkunz.github.com/chartist-js/ct'; 

:

<svg class="ct-chart-bar" xmlns:ct="http://gionkunz.github.com/chartist-js/ct" width="100%" height="100%" style="width: 100%; height: 100%;"> 

आपको क्या करने की जरूरत है एक @namespace rule का उपयोग कर अपने सीएसएस में इस XML नामस्थान को प्रतिबिंबित है:

वैसे भी, वेब निरीक्षक को अपने svg स्टार्ट टैग के लिए निम्नलिखित एक्सएमएल से पता चलता और, कोलन से बचने के बजाय, namespace prefix:

[ct|series-name='second'] .ct-bar { 
    stroke: black; 
    stroke-width: 20px; 
    stroke-linecap: round; 
} 
इंगित करने के लिए एक पाइप का उपयोग करें

और it should work as expected

+0

ओह, मुझे लगता है कि यही कारण है कि \ n 'नामस्थान घोषणा जोड़ने के बाद भी काम नहीं करता है। – Harry

+2

या आसान, वाइल्डकार्ड नेमस्पेस (' * | attr') का उपयोग करें , नाम घोषित करने की कोई आवश्यकता नहीं है espaces। Http: // stackoverflow देखें।कॉम/ए/23047888/3702797 – Kaiido

+0

@ काइडो: यह मानते हुए कि विशेषता नाम उनके संबंधित नामस्थानों के लिए पर्याप्त अद्वितीय हैं, जिन्हें आपको वास्तव में नेमस्पेस नाम की आवश्यकता नहीं है (जिसे आप जानते हैं, नामस्थानों का पूरा बिंदु)। – BoltClock

3

आपको विशेषता का नाम उद्धृत नहीं करना चाहिए, अन्यथा आप कोलन से बच रहे हैं।

[ct\:series-name='second'] 

देखें https://msdn.microsoft.com/en-us/library/ms762307(v=vs.85).aspx

+0

मुझे यह भी याद रखना याद है। इस तरह: http://jsfiddle.net/whfactq2/? अभी भी काम नहीं दिख रहा है :( –

+0

मेरा बुरा, मैं आमतौर पर अपने उत्तरों का परीक्षण करता हूं, लेकिन मैं अपने फोन पर हूं, क्या आपने @ नेमस्पेस सिंटैक्स देखा है? Https://developer.mozilla.org/en-US/docs/वेब/सीएसएस/@ नेमस्पेस –

+0

कि एमएसडीएन दस्तावेज़ बहुत पुराना प्रतीत होता है - यह आईई को "माइक्रोसॉफ्ट® इंटरनेट एक्सप्लोरर" के रूप में संदर्भित करता है, जिसे अंतिम बार आईई 6 * के साथ इस्तेमाल किया जाने से पहले इसे "विंडोज़ इंटरनेट एक्सप्लोरर" 2006 में आईई 7 के साथ। @ नेमस्पेस को हाल ही में पेश किया गया था और कार्यान्वित किया गया था - आईई के साथ पहले इसे संस्करण 9 में संस्करण 9 में लागू करने के साथ-साथ एप्लिकेशन/एक्सएचटीएमएल + एक्सएमएल – BoltClock

3

यह नाम स्थान चयनकर्ता की तरह लगता है काम करेगा केवल जब नाम स्थान नीचे प्रारूप में सीएसएस के भीतर ही परिभाषित किया गया है: Selectors Spec से

@namespace <namespace-prefix>? [ <string> | <uri> ]; 

: जोर मेरा

विशेषता का नाम एक विशेषता चयनकर्ता को सीएसएस योग्य नाम के रूप में दिया जाता है: नामस्थान उपसर्ग जिसे पहले घोषित किया गया है नामस्थान विभाजक "लंबवत बार" (|) द्वारा अलग किए गए विशेषता नाम पर प्रीपेड किया जा सकता है।

एक विशेषता नाम के साथ एक विशेषता चयनकर्ता जिसमें नामस्थान उपसर्ग शामिल है जिसे पहले घोषित नहीं किया गया है, एक अमान्य चयनकर्ता है।

एक बार जब हम सीएसएस में ct के लिए नाम स्थान परिभाषा जोड़ने के लिए, नाम स्थान आधारित चयनकर्ता के रूप में उम्मीद काम करता है। नामस्थान का यूआरआई <svg> टैग से लिया गया था जो उत्पन्न हुआ था।

var data = { 
 
    labels: ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10'], 
 
    series: [{ 
 
    name: 'first', 
 
    data: [1, 2, 4, 8, 6, -2, -1, -4, -6, -2] 
 
    }, { 
 
    name: 'second', 
 
    data: [3, 4, 2, 6, 3, 2, 1, 4, 6, 2] 
 
    }] 
 
}; 
 

 
var options = { 
 
    high: 10, 
 
    low: -10, 
 
    onlyInteger: true 
 
}; 
 

 
new Chartist.Bar('.ct-chart', data, options);
@namespace ct url(http://gionkunz.github.com/chartist-js/ct); 
 
[ct|series-name="second"] .ct-bar { 
 
    stroke: black !important; /* without important it doesn't seem to work in snippet but works in fiddle */ 
 
    stroke-width: 20px; 
 
    stroke-linecap: round; 
 
}
<script src="https://cdn.jsdelivr.net/chartist.js/latest/chartist.min.js"></script> 
 
<link href="https://cdn.jsdelivr.net/chartist.js/latest/chartist.min.css" rel="stylesheet" /> 
 
<div id="myChart" class="ct-chart" style="height:400px"></div>

Fiddle Demo


नोट: चयनकर्ता नीचे के बाद भी नाम स्थान परिभाषा जोड़ा जाता है काम नहीं करता। इसका कारण बोल्टक्लॉक द्वाराhis answer में प्रदान किया गया है।

[ct\:series-name="second"] .ct-bar {} 
संबंधित मुद्दे

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