टिप्पणीकर्ताओं द्वारा उल्लेख किया है, एक सीएसएस स्प्राइट उचित है यहां समाधान सौभाग्य से, there are many CSS sprites of flags freely available। This one बहुत अच्छा लग रहा है।
हमें पूर्व-निर्मित सीएसएस स्प्राइट को समायोजित करने के लिए ड्रॉपडाउन कोड को ट्विक करना होगा। मैं आगे बढ़ गया हूं और आपके लिए यह किया है। Here's a live demo.
languageswitcher.js
@@ -44,10 +44,11 @@
source.removeAttr("autocomplete");
var selected = source.find("option:selected");
var options = $("option", source);
- $("#country-select").append('<dl id="target" class="dropdown"></dl>')
- $("#target").append('<dt class="' + selected.val() + '"><a href="#"><span class="flag"></span><em>' + selected.text() + '</em></a></dt>')
- $("#target").append('<dd><ul></ul></dd>')
+ $("#country-select").append('<dl id="target" class="dropdown f16"></dl>')
+ $("#target").append('<dt><a href="#"><em class="flag ' + selected.val().toLowerCase() + '">' + selected.text() + '</em></a></dt>');
+ $("#target").append('<dd><ul></ul></dd>');
+ var $drop = $("#target dd ul");
options.each(function(){
- $("#target dd ul").append('<li class="' + $(this).val() + '"><a href="' + $(this).attr("title") + '"><span class="flag"></span><em>' + $(this).text() + '</em></a></li>');
+ $drop.append('<li><a href="' + $(this).attr("title") + '"><em class="flag ' + $(this).val().toLowerCase() + '">' + $(this).text() + '</em></a></li>');
});
}
languageswitcher.css
@@ -45,6 +45,8 @@
.dropdown dd { position: relative; }
+.dropdown ul { max-height:350px; overflow-y:auto; overflow-x:hidden; }
+
.dropdown a {
text-decoration: none;
outline: 0;
@@ -52,6 +54,7 @@
display: block;
width: 130px;
overflow: hidden;
+ white-space:nowrap;
}
.dropdown dt a {
@@ -107,23 +110,6 @@
padding: 2px 10px;
}
- .dropdown dd ul li a span,
- .dropdown dt a span {
- float: left;
- width: 16px;
- height: 11px;
- margin: 2px 6px 0 0;
- background-image: url(flags.png);
- background-repeat: no-repeat;
- cursor: pointer;
- }
-
- .us a span { background-position: 0 0 }
- .uk a span { background-position: -16px 0 }
- .fr a span { background-position: -32px 0 }
- .de a span { background-position: -48px 0 }
- .nl a span { background-position: -64px 0 }
-
.dropdown dd ul li a em,
.dropdown dt a em {
font-style: normal;
@@ -138,3 +124,5 @@
.dropdown dd ul li a:hover { background-color: rgba(255,255,255,.1); }
.dropdown dd ul li a:hover em { color: #fff; }
+
+.flag { padding-left:18px; }
मैं क्यू & डी हैक्स थे सीएसएस परिवर्तन, आप शायद उन्हें पॉलिश करने में कुछ समय बिताना चाहेंगे। मैंने languages विचलन सीएसएस से सभी ध्वज-विशिष्ट सामग्री को हटा दिया है क्योंकि हम flag16.css का उपयोग कर रहे हैं।
इसके अलावा, यदि देश कोड सीएसएस स्प्राइट में मौजूद नहीं है, तो दिखाया गया ध्वज http://www.veryicon.com/icon/16/Flag/Country%20Flags/African%20Union%20Flag.png अफ्रीकी संघ का ध्वज डिफ़ॉल्ट होगा क्योंकि यह स्प्राइट में पहली छवि है। डेमो में, मेरी उदाहरण सूची में से कई देशों में एक स्प्राइट छवि नहीं है। इसके लिए बाहर देखो।
भविष्य से
क्या आपने इसे Google किया? या पहले कुछ भी कोशिश करें? हम आपके लिए सभी काम नहीं करने जा रहे हैं :- – Neal
देखें [सही प्रश्न लिखना] (http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question .aspx) – gideon
शायद सभी झंडे डाउनलोड करने का प्रयास करें और अपने आकार को कम करने के लिए बैच छवि कनवर्टर का उपयोग करें? – Pepe