Tuesday, 3 January 2012

[Updated] K14 - Pro Menu (với hiệu ứng prodown)

Lấy ý tưởng từ việc thực hiện demo cho bài viết Tạo Menu Thanh menu ngang có sổ dọc xuống mình dự định sẽ updated thủ thuật lên bằng việc tạo các giao diện khác nhau cho menu khi xem ở các trang khác nhau, ví dụ như các trang label. Nhưng sau đó mình nhớ đến kênh14 cũng có menu như vậy (chỉ khác là không có dropdown) mà giao diện lại đẹp nữa, nên mình quyết định Rip menu này. Và ở bài này menu sẽ không có hiệu ứng dropdown, mình dự định sẽ thêm hiệu ứng dropdown trong thời gian tới.


Xem DEMO

Hình ảnh minh họa :

Updated: Đã cập nhật hiệu ứng sổ dọc cho menu, các bạn có thể xem ở bên dưới

Do làm biếng design giao diện cho nó, nên mình lấy hình nên bên kênh 14 về rồi fix lại để giới thiệu cho mọi người. Và sau đây là 1 số tính năng của nó :
- Tự động thay đổi giao diện của menu cho các trang định sẵn.
- có hiệu ứng trang hiện hành (current) trên menu.
- có 6 kiểu giao diện cho các lựa chọn để thay đổi.

Sau đây là các bước thực hiện :
- Tạo 1 widget HTML/javascript ở nơi muốn đặt menu (tốt nhất là trên header của blog), sau đó dán đoạn code bên dưới vào :
<style type="text/css">
#promenu ul li a:hover {text-decoration:none;}
#promenu {
background-repeat: repeat-x;
background-image: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMtQMKNae1V0Xu0VVCM9PqRtjrTcRC9syIv9E5VvqXq1DZdVBiRejG6IjbJoCTSpmu4lov2YI9PGC4c5jzdrDFW6wCATFzKMkMu9YkCRd5RRM9LN_h1-ZP00xNnzS2mH4tcaIaV0OG6N3/s400/1-6-bg.png);
width: 100%;
height: 32px;
}
.menu {
list-style: none;
width: 100%;
margin: auto!important;
}
.menu li {
float: left;
text-align: center;
padding:0!important;
}
.menu li a {
color: white;
}
.menu .active, .menu li:hover {
background-position: 0 -34px;
float: left;
}
.menu .active span, .menu span:hover {
background-position: 100% -34px;
float: left;
line-height: 30px;
height: 30px;
}
.menu li a span {
font: 12px/31px Tahoma;
font-weight: 700;
display: block;
text-align: center;
padding: 0 8px 0 9px;
}
.menusep {
background-position: 0 0;
height: 32px;
line-height: 32px;
width: 2px;
}
</style>

<script type="text/javascript">
//<![CDATA[
var style1=["0px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnIAgMQevxRS2J_JcXy62VW817SImNOFsnUM5_BYzzDPQGhkwcTggSd5epmrqpVdGgnpZ9cvxpmkgi7E5LMxFrihu0RUrQbRJSV-w5du5yqO4foi_FrKYMIdjjgTZuTs-QNC3xc_y8PgD/s318/style1-sp.png"];
var style2=["-40px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpqaxG3cDNW4Xxo4ipCNmx9myrkWrfxwZlMnuQSOKq5ZS0BKhhPoTrBVoIckOWVieai1StuNOHu7ZGxBfsPjP0TBFG4TdLLwjiF3b6Peex-7Q3YvK0kImzsKt5sdLXRjxrEK77irc2b_5R/s318/style2-sp.png"];
var style3=["-80px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6KHHuSKGvJ37PmYf3MQXs0C-BkZ1yyBegxaWE4WrxL06ZZvHI5SoD0oU-bZ8-s5RQ0ODHFyA_ZLzZ1qhOy0cApUZvuUgUAQLFcq3gzJAxymhXDhuH3u318_AsRxLEawx-dLYkuCuOHwik/s318/style3-sp.png"];
var style4=["-120px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpHxbGPWRXzv-CPrRJ09vBGX57rZDANmlEHnXhi1c9An0QKugiLOIBjjBSqjxDd91PXhs-o0ztaIV50Z5lTiMTds6KfPow1S_XDRGGOsvzXYVvceuKq3TYJcYxal1GmrVbcJiPxYYQMkJJ/s318/style4-sp.png"];
var style5=["-160px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCgX7iH8L-11TqeyQr6Sa4XCbslyARXlRQ4EWCkiRGi042BMqY69iIjJmrhHf5l6xhlJ-q7CWeYrkkmdwpnG3lfkjx3m3VPY1afAme2BBjL3oaeJoNpjaPaLTSztAYd2vf2BibOdz-3Z9B/s318/style5-sp.png"];
var style6=["-200px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI7lxLuXUqdRJ8GqUjbYBPS_gQkyG2OV9BdMt2M0J4XCxvjdA_AtAKO4f7Ci9bA7gLYyF9sPUzKb1oZVWS2MF5eOhzjRMYtvmx4JUAaukor8ZpwzpBI-FHhEp9ZKvLxyOuDKLcNGvcRxqg/s318/style6-sp.png"];

var m0=["http://demo.fandung.com","Home","home_id"];
var m1=["link_menu1","Menu1","m_id1"];
var m2=["link_menu2","Menu2","m_id2"];
var m3=["link_menu3","Menu3","m_id3"];
var m4=["link_menu4","Menu4","m_id4"];
var m5=["link_menu5","Menu5","m_id5"];
var m6=["link_menu6","Menu6","m_id6"];

var ttmenu = [m0,m1,m2,m3,m4,m5,m6];

var n=ttmenu.length;
var list_menu=[];
var list_active=[];
var c_menu='';
var m_homepage='http://demo.fandung.com';
var h_cond=m_homepage+'/search';

var active_cond = location.href;
var home_cond=active_cond.split("?")[0];

var bg_pos='';
var sp_img='';

if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else {bg_pos=style1[0];sp_img=style1[1];}

var mcss = document.createElement('style');
mcss.type = 'text/css';
mcss.innerHTML = '#promenu {background-position: 0 '+bg_pos+'} .menu li:hover, .menu .active, .menu .active span, .menusep, .menu span:hover {background-image: url('+sp_img+')}';
document.body.appendChild(mcss);

c_menu +='<div id="promenu"><ul class="menu">';

for (var i=0;i<n;i++) {

if ((home_cond==m_homepage)||(home_cond==h_cond)) {list_active[0]='class="active"';}
else if (active_cond.indexOf(ttmenu[i][0])!=-1) {list_active[i]='class="active"';} else {list_active[i]='';}

list_menu[i]='<li><a href="'+ttmenu[i][0]+'" '+list_active[i]+' id="'+ttmenu[i][2]+'"><span>'+ttmenu[i][1]+'</span></a></li>';
c_menu +=list_menu[i];
if (i<n-1) {c_menu +='<li class="menusep"> </li>';}
}
c_menu +='</ul></div>';
document.write(c_menu);

//]]>
</script>

Một vài hướng dẫn :
- Việc đầu tiên là thay http://demo.fandung.com thành tên miền của blog bạn, nhớ là không có dấu (/) theo sau tên miền.
- Để thêm menu, bớt menu, thay đổi tên hiển thị của menu, thay đổi link liên kết của menu,... các bạn chỉnh sửa ở đoạn code như bên dưới :
...
...
var m0=["http://demo.fandung.com","Home","home_id"];
var m1=["link_menu1","Menu1","m_id1"];
var m2=["link_menu2","Menu2","m_id2"];
var m3=["link_menu3","Menu3","m_id3"];
var m4=["link_menu4","Menu4","m_id4"];
var m5=["link_menu5","Menu5","m_id5"];
var m6=["link_menu6","Menu6","m_id6"];

var ttmenu = [m0,m1,m2,m3,m4,m5,m6];
...
...
- http://demo.fandung.com thay bằng địa chỉ trang chủ của blog bạn
- link_menu1, link_menu2, ... là đia chỉ liên kết của các menu.
- Menu1, Menu2, ... là tên hiển thị của các menu.
- nếu muốn thêm nhiều menu nữa thì các bạn thêm code tương tự như bên dưới :
...
...
var m0=["http://demo.fandung.com","Home","home_id"];
var m1=["link_menu1","Menu1","m_id1"];
var m2=["link_menu2","Menu2","m_id2"];
var m3=["link_menu3","Menu3","m_id3"];
var m4=["link_menu4","Menu4","m_id4"];
var m5=["link_menu5","Menu5","m_id5"];
var m6=["link_menu6","Menu6","m_id6"];
var m7=["link_menu7","Menu7","m_id7"];
var m8=["link_menu8","Menu8","m_id8"];


var ttmenu = [m0,m1,m2,m3,m4,m5,m6,m7,m8];
...
...
- để tùy chọn style cho menu ở mỗi trang, các bạn chỉnh sửa ở đoạn code bên dưới :
...
...
if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else {bg_pos=style1[0];sp_img=style1[1];}
...
...
- ttmenu[1][0], ttmenu[2][0], ..., ttmenu[6][0] ; đây là các phần tử trong mảng 2 chiều ttmenu, tương ứng với địa chỉ liên kết của các menu : Menu1, Menu2, ..., Menu6
- ở trên menu0, tức là menu HOME mình cho style mặc định là style1. cùng style với các trang liên kết không có trong menu (ví dụ các trang archive hoặc trang bài viết, ...) , hoặc các liên kết không được chọn style để hiển thị.
- code trên sẽ được hình dung như bên dưới :
Menu0 ------ style1
Menu1 ------ style2
Menu2 ------ style3
Menu3 ------ style4
Menu4 ------ style5
Menu5 ------ style6
Menu6 ------ style2
Trang khác ------ style1
- Nếu muốn thay đổi style cho các trang, các bạn chỉ cần đổi tên style1, style2,... thành các style khác là được. tức là các vị trí trong code bên dưới :
...
...
if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else {bg_pos=style1[0];sp_img=style1[1];}
...
...

- Nếu như có nhiều menu thì các bạn cứ thêm code như bên dưới để chọn style cho nó :
...
...
if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[7][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[8][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}

else {bg_pos=style1[0];sp_img=style1[1];}
...
...
- lưu ý : ttmenu[7][0], và ttmenu[8][0] là liên kết của các Menu7, và Menu8.
- nếu muốn chỉ 1 trang nào đó có giao diện đặc biệt khác với các trang còn lại (ở đây mình ví dụ là trang Menu1) thì đoạn code ở trên sẽ chỉ còn như bên dưới :
...
...
if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else {bg_pos=style1[0];sp_img=style1[1];}
...
...
- Đoạn code trên có nghĩa là chỉ có trang Menu1 là có giao diện riêng biệt là Style2, còn các trang khác sẽ có giao diện Style1.

Như vậy mình hướng dẫn đã xong. các bạn cứ test thử, nếu có trục trặc gì mình sẽ fix lại bài viết và cập nhật thêm hướng dẫn.

----- UPDATED -----
K14 - Promenu (với hiệu ứng sổ dọc)
- ở bản update này, mình sẽ cập nhật thêm tính năng thêm submenu cho menu chính. Tính năng này mình kết hợp từ bài viết "Tạo menu nằm ngang với hiệu ứng sổ dọc".
- Để thực hiện việc cập nhật này, các bạn phải xem lại bài viết Tạo Menu Thanh menu ngang có sổ dọc xuống

Xem DEMO

Hình ảnh minh họa :

- Sau đây là code mẫu của thủ thuật đã updated, các bạn thực hiện theo hướng dẫn của bài này và bài Tạo Menu Thanh menu ngang có sổ dọc xuống để có thể chỉnh sửa lại từ code mẫu :
<script src="http://fandung.googlecode.com/svn/trunk/js/dropdown2.js" type="text/javascript"></script>

<style type="text/css">
#promenu ul li a:hover {text-decoration:none;}
#promenu {
background-repeat: repeat-x;
background-image: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMtQMKNae1V0Xu0VVCM9PqRtjrTcRC9syIv9E5VvqXq1DZdVBiRejG6IjbJoCTSpmu4lov2YI9PGC4c5jzdrDFW6wCATFzKMkMu9YkCRd5RRM9LN_h1-ZP00xNnzS2mH4tcaIaV0OG6N3/s400/1-6-bg.png);
width: 100%;
height: 32px;
}
.menu {
list-style: none;
width: 100%;
margin: auto!important;
}
.menu li {
float: left;
text-align: center;
padding:0!important;
}
.menu li a {
color: white;
height:30px;
display:block;
}
.menu .active, .menu li:hover {
background-position: 0 -34px;
float: left;
}

.menu .active span, .menu span:hover {
background-position: 100% -34px;
float: left;
line-height: 30px;
height: 30px;
}

.menu li a span {
font: 12px/31px Tahoma;
font-weight: 700;
display: block;
text-align: center;
padding: 0 8px 0 9px;
}
.menusep {
background-position: 0 0;
height: 32px;
line-height: 32px;
width: 2px;
}
.promenu_sub {
background-repeat: repeat-x;
background-image: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj731bbmuh6kLLcHtXs7wCHLXll6J85MVrKy2UIGXWl-hWs6CaF0zlytyImDWnpCxvoKaWj4N4ZKv4-RnBp8C34a_HQ3IeKynBqZfdpSU5RoZx9I1yaViez99njVj0zAXL8t5SqdTtPCVe/s240/1-6-bg_sub2.png);
margin-top:1px;
padding:1px;
color: #fff;;
margin: 1 1px;
padding: 7px 12px;
font-weight:bold;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
cursor:pointer;
border-top:1px solid #ededed;
}
</style>

<script type="text/javascript">
//<![CDATA[
var style1=["0px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnIAgMQevxRS2J_JcXy62VW817SImNOFsnUM5_BYzzDPQGhkwcTggSd5epmrqpVdGgnpZ9cvxpmkgi7E5LMxFrihu0RUrQbRJSV-w5du5yqO4foi_FrKYMIdjjgTZuTs-QNC3xc_y8PgD/s318/style1-sp.png"];

var style2=["-40px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpqaxG3cDNW4Xxo4ipCNmx9myrkWrfxwZlMnuQSOKq5ZS0BKhhPoTrBVoIckOWVieai1StuNOHu7ZGxBfsPjP0TBFG4TdLLwjiF3b6Peex-7Q3YvK0kImzsKt5sdLXRjxrEK77irc2b_5R/s318/style2-sp.png"];

var style3=["-80px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6KHHuSKGvJ37PmYf3MQXs0C-BkZ1yyBegxaWE4WrxL06ZZvHI5SoD0oU-bZ8-s5RQ0ODHFyA_ZLzZ1qhOy0cApUZvuUgUAQLFcq3gzJAxymhXDhuH3u318_AsRxLEawx-dLYkuCuOHwik/s318/style3-sp.png"];

var style4=["-120px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpHxbGPWRXzv-CPrRJ09vBGX57rZDANmlEHnXhi1c9An0QKugiLOIBjjBSqjxDd91PXhs-o0ztaIV50Z5lTiMTds6KfPow1S_XDRGGOsvzXYVvceuKq3TYJcYxal1GmrVbcJiPxYYQMkJJ/s318/style4-sp.png"];

var style5=["-160px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCgX7iH8L-11TqeyQr6Sa4XCbslyARXlRQ4EWCkiRGi042BMqY69iIjJmrhHf5l6xhlJ-q7CWeYrkkmdwpnG3lfkjx3m3VPY1afAme2BBjL3oaeJoNpjaPaLTSztAYd2vf2BibOdz-3Z9B/s318/style5-sp.png"];

var style6=["-200px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI7lxLuXUqdRJ8GqUjbYBPS_gQkyG2OV9BdMt2M0J4XCxvjdA_AtAKO4f7Ci9bA7gLYyF9sPUzKb1oZVWS2MF5eOhzjRMYtvmx4JUAaukor8ZpwzpBI-FHhEp9ZKvLxyOuDKLcNGvcRxqg/s318/style6-sp.png"];

var m0=["http://demo.fandung.com","Home","home_id"];
var m1=["/search/label/Label1","Label1","id1"];
var m2=["/search/label/Label2","Label2","id2"];
var m3=["/search/label/Label3","Label3","id3"];
var m4=["/search/label/Label4","Label4","id4"];
var m5=["/search/label/Label5","Label5","id5"];
var m6=["/search/label/Label6","Label6","id6"];
var m7=["/search/label/Label7","Label7","id7"];
var m8=["/search/label/Label8","Label8","id8"];
var m9=["/search/label/Label9","Label9","id9"];

var ttmenu = [m0,m1,m2,m3,m4,m5,m6,m7,m8,m9];
var n=ttmenu.length;
var list_menu=[];
var list_active=[];
var c_menu='';
var m_homepage='http://demo.fandung.com/';
var h_cond=m_homepage+'search';

var active_cond = location.href;
var home_cond=active_cond.split("?")[0];

var bg_pos='';
var sp_img='';

if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[7][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else {bg_pos=style1[0];sp_img=style1[1];}

var mcss = document.createElement('style');
mcss.type = 'text/css';
mcss.innerHTML = '#promenu, .promenu_sub {background-position: 0 '+bg_pos+'} .menu li:hover, .menu .active, .menu .active span, .menusep, .menu span:hover {background-image: url('+sp_img+')}';
document.body.appendChild(mcss);

// submenu
function otab(){document.write('<table border="0" bordercolor="#999" style="background-color: #FFF" cellspacing="0" cellpadding="0">');}

function submn(submn_link,submn_text){ document.write('<tr><td onmouseover="this.style.background=\'url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMtQMKNae1V0Xu0VVCM9PqRtjrTcRC9syIv9E5VvqXq1DZdVBiRejG6IjbJoCTSpmu4lov2YI9PGC4c5jzdrDFW6wCATFzKMkMu9YkCRd5RRM9LN_h1-ZP00xNnzS2mH4tcaIaV0OG6N3/s400/1-6-bg.png) repeat-x 0 '+bg_pos+'\'" onmouseout="this.style.background=\'url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj731bbmuh6kLLcHtXs7wCHLXll6J85MVrKy2UIGXWl-hWs6CaF0zlytyImDWnpCxvoKaWj4N4ZKv4-RnBp8C34a_HQ3IeKynBqZfdpSU5RoZx9I1yaViez99njVj0zAXL8t5SqdTtPCVe/s240/1-6-bg_sub2.png) repeat-x 0 '+bg_pos+'\'" class="promenu_sub" onclick="window.location.href=\''+submn_link+'\'">'+submn_text+'</td></tr>');}

function ctab(){document.write('<\/table>');}

function otab(child_id){document.write('<table id="' + child_id +'" border="0" bordercolor="#999" style="background-color: #FFF" cellspacing="0" cellpadding="0">');}

//submenu

c_menu +='<div id="promenu"><ul class="menu">';

for (var i=0;i<n;i++) {

if ((home_cond==m_homepage)||(home_cond==h_cond)) {list_active[0]='class="active"';}
else if (active_cond.indexOf(ttmenu[i][0])!=-1) {list_active[i]='class="active"';} else {list_active[i]='';}

list_menu[i]='<li><a href="'+ttmenu[i][0]+'" '+list_active[i]+' id="'+ttmenu[i][2]+'"><span>'+ttmenu[i][1]+'</span></a></li>';
c_menu +=list_menu[i];
if (i<n-1) {c_menu +='<li class="menusep"> </li>';}
}
c_menu +='</ul></div>';
document.write(c_menu);

//]]>
</script>

<script type="text/javascript">
otab("id1_child");
submn('link_submenu1.1','Submenu 1.1');
submn('link_submenu1.2','Submenu 1.2');
ctab();
at_attach("id1", "id1_child", "hover", "y", "pointer");

otab("id2_child");
submn('link_submenu2.1','Submenu 2.1');
ctab();
at_attach("id2", "id2_child", "hover", "y", "pointer");

otab("id3_child");
submn('link_submenu3.1','Submenu 3.1');
ctab();
at_attach("id3", "id3_child", "hover", "y", "pointer");

otab("id4_child");
submn('link_submenu4.1','Submenu 4.1');
submn('link_submenu4.2','Submenu 4.2');
submn('link_submenu4.3','Submenu 4.3');
submn('link_submenu4.4','Submenu 4.4');
submn('link_submenu4.5','Submenu 4.5');
submn('link_submenu4.6','Submenu 4.6');
ctab();
at_attach("id4", "id4_child", "hover", "y", "pointer");

otab("id5_child");
submn('link_submenu5.1','Submenu 5.1');
submn('link_submenu5.2','Submenu 5.2');
ctab();
at_attach("id5", "id5_child", "hover", "y", "pointer");

otab("id6_child");
submn('link_submenu6.1','Submenu 6.1');
ctab();
at_attach("id6", "id6_child", "hover", "y", "pointer");

otab("id7_child");
submn('link_submenu7.1','Submenu 7.1');
submn('link_submenu7.2','Submenu 7.2');
submn('link_submenu7.3','Submenu 7.3');
ctab();
at_attach("id7", "id7_child", "hover", "y", "pointer");

otab("id8_child");
submn('link_submenu8.1','Submenu 8.1');
submn('link_submenu8.2','Submenu 8.2');
submn('link_submenu8.3','Submenu 8.3');
submn('link_submenu8.4','Submenu 8.4');
submn('link_submenu8.5','Submenu 8.5');
submn('link_submenu8.6','Submenu 8.6');
submn('link_submenu8.7','Submenu 8.7');
ctab();
at_attach("id8", "id8_child", "hover", "y", "pointer");
</script>
- bản updated vẫn chưa hoàn thiện ở phần hiện hiệu ứng thay đổi style cho menu ở các trang submenu, mình sẽ fix sớm khi có thể.

Saturday, 31 December 2011

Truy cập Blogspot vô tư khỏi sợ bị chặn

Dùng Open DNS: Open DNS là một DNS Server trung gian, bổ sung thêm các bộ lọc web và giúp bạn tăng cường tốc độ lướt web. Ngoài ra, nhờ qua DNS trung gian này nên bạn sẽ không còn bị chặn nữa. Để sử dụng các máy chủ OpenDNS, bạn sẽ phải thay đổi một chút trong thiết lập máy tính. Nếu đang sử dụng Windows XP, đầu tiên bạn chọn Control Panel --> Network and Internet Connections --> Network Connections, kích chuột phải vào kết nối mạng trong cửa sổ Network Connections, chọn Properties. Hộp thoại như hình dưới xuất hiện


Chọn Internet Protocol (TCP/IP) và kích vào Properties


.

Thursday, 29 December 2011

Chèn Chabox Gtalk vào BlogSpot.

Nếu site bạn rất nhiều bạn bè có tài khoản Google, tại sao không thử chèn thêm một ChatBox để tăng tình năng trò chuyện kết bạn cho Blog. Việc đơn giản phải làm là bạn chỉ cần nhúng một iframe của Google cho sẵn.





Xem DEMO


Các bạn coppy và cài đặt nhé. Và nhớ chỉnh lại CSS. của mình.


<style>
    #chat{position:fixed; top:0px; left:1px;}
    .bt{background:url('http://cdn1.iconfinder.com/data/icons/androiddevicons/dialog.png') no-repeat; width: 48px; height: 48px;}
    #cbody{border-radius: 3px 10px 0px #444;}
</style>
<div id="chat">
<div class="bt" onclick="toggle()" ></div>
<p id="cbody" style="display:none;">
    <iframe height="350" frameborder="0" width="300" src="http://talkgadget.google.com/talkgadget/client?fid=gtalk0&amp;relay=http%3A%2F%2Fwww.google.com%2Fig%2Fifpc_relay"></iframe>
</p>
</div>
<script>
    var $_ = function(x){return document.getElementById(x);}
   
    function toggle(){
    var ck = $_("cbody").style.display;
        if(ck != "none"){
            $_("cbody").style.display = "none";
        }
        if(ck != "block"){
            $_("cbody").style.display = "block";
        }
    }
</script>


Chúc bạn thành công !

Jquery Slider Tin Tức - News Slider


Hẳn nhiều bạn cần slide này... mình đã phát triển phiên bản thumbail cho site phim. Nhưng gà CSS quá nên đắp chiếu, lấy silder của trang tin tức này cho các bạn dùng.



Nói về jquery thì mình cũng chả rành lắm, đến từ jquery viết còn hay nhầm thì các bạn chắc cũng đoán được. Phần slider rip của gostep.info, các bạn có thể vào đó xem.

Xem DEMO

Mình cũng hơi buồn ngủ, các bạn setup luôn nhé.


CSS (Cái này cũng gà lắm, mọi người tự căn chỉnh nhé !)

<style>
ul#ticker {
    font: "Helvetica,Arial";
    height: 26px;
    overflow: hidden;
    text-align: right;
    color: red;
    font-size: 12px;
    line-height: 28px;
    background: #444;
}
ul#ticker strong,ul#ticker strong a {
    color: green;
    font-size: 10px;
    padding-right: 5px;
    text-transform: uppercase;
}
#ticker a {
    text-decoration: none;
}
ul#ticker a {
    color: white;
    text-decoration: none;
}
ul, li {
    list-style: none outside none;
}
ul#ticker .meta-comments a,.meta-sep,.meta-date{
    color: #777777;
}
</style>


Javascript

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="http://anhnc.googlecode.com/svn/trunk/p/news.js"></script>
<script src="/feeds/posts/default?max-results=12&amp;orderby=published&amp;alt=json-in-script&amp;callback=news"></script>


Phần numberposts (12) có thể unlimit nhé ;))

Chúc các bạn thành công !

Monday, 26 December 2011

Dropbox - Một dịch vụ hosting miễn phí và chất lượng

dropbox
Nếu đã từng áp dụng một số thủ thuật có sử dụng các file javascript trên blogspot thì chắc hẳn bạn phải cần đến một dịch vụ file hosting. Mình thường dùng Google Code để lưu trữ các file .js, thế nhưng vào một ngày xấu trời thì tài khoản Google Code của mình đã bị block do quá lạm dụng (vì thực chất đây là dịch vụ chỉ dành cho các nhà phát triển web). Ngoài ra, host ở Google Sites cũng không thể sử dụng trên custom domain.
.

Sunday, 25 December 2011

Quà tặng âm nhạc cho BlogSpot

Hehe, gần tết rồi.. thêm không khí cho cho Blog của bạn chút nhỉ. Hôm nay giới thiệu với các bạn một Plugin mới. Quà tặng âm nhạc, điều không tưởng phải không, chỉ có ở các 4rum. Nhờ có load feed comment của anh Dũng, mình mới dám nghĩ đến tạo ra cái gì đó mới lại từ tiện ịch này.


Lâu nay ẩn danh cũng vì đang làm đồ án, rảnh tay mới code được.



Mình cũng không rành lắm CSS, vậy nên mình chỉ viết js thôi. Các bạn code theo phong cách riêng của mình nhé, mới làm hiện bài hát đầu tiên. Có thêm thời gian mới tạo được thêm 2 cái nút tiến lùi, chắc cũng trước tết thôi. ^^! Chờ nhé.

Nhaccuatui.com

Mp3.zing.vn

Nhacso.net

Music.soha.vn

Nhac.vui.vn

Zippshare và *.mp3
Tha hồ chọn lựa skin ;))

Để sử dụng tiện ích, các bạn tạo một trang mới hoặc một bài mới. Tạo một widget HTML mới, dán code sau vào.

CSS

<style type="text/css">
#tomusic{border:1px dashed #444; padding: 5px; width: 680px;}
#avmusic img{padding: 1px; width: 120px;}
#avmusic a{position: relative; left:0px; bottom:-px;}
#anc_chuc{width:90%; height: 95px; float: right;}
.process{
    background: url("http://dl.dropbox.com/u/52283085/47/sr.gif") no-repeat scroll right top transparent;
    color: #EDE7C2;
    display: block;
    float: left;
    font-size: 13px;
    height: 33px;
    margin-left: -13px !important;
    margin-top: 80px;
    padding-right: 9px;
    position: absolute;
    text-shadow: 1px 1px 1px #131212;
    z-index: 100;
}
.process a{text-decoration:none; color: #888888;}
.process span {
    background: url("http://dl.dropbox.com/u/52283085/47/gc.png") no-repeat scroll 0 0 transparent !important;
    float: left;
    height: 33px;
    padding: 5px 0 0 8px;
}
</style>


JavaScript

<script type="text/javascript">
var cm_desc = 50; // Để 50 chắc là đủ (sô ký tự hiển thị)
var homepage = "domain";
postID = "id_bai_qua_tang_am_nhac";

var cm_ava = new Array();
cm_ava['openid'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAf4MXeubZtWZ0Vy9hST5dDG4YmkHEPw5jTsV1vfKJoeqoWOAx-7Uk8gXHQ6sHDp7-UmXAWJ1dW-XgTzNikSVNKoXLHxnTJ5E9qQbjrab2bm_AVl9Isp9PP8U02A2o9dod48RJvUQoHXFr/";
cm_ava['livej'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTt-iOraDmkfNFp2kncGdv65B0BMO9cpb1diZro0KHACBB2cPM6lyhpMEBXOZw9iy9W0xNAqL_bmqkdOFYsWjgU8iQJuG_fC8WmucFJCScvApqzn91TCb8nCnHjyri2zak22-WJqLnbZcr/";
cm_ava['wp'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLhVMVqIGq1HfBx26ON6YCmekb2MxWvVqdy22H1lZ-r9KCntXYl2rkJJ4J9FOZaOMJMovTD9K53v_wyDyWbhun-BbrWUm27jQUy7xcKuOIIT0Ga_yHRBKGoaXZQ_S8we1SfYoLs-dWWMz6/";
cm_ava['typepad'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisMp6xftisVBMl1PzHv7z480viwUKVtEHUrPGTwACZ25NcGDydFFMyEbGAsbP4V3SEisCulsbZugDA5iBHDfzEvyEddQNCF-i-TvrpLdGVFoi15DqppCuFCB8M72EJZi20oaiKgs0go12v/";
cm_ava['aim'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0iMLpTbt1iCZyXLGPYs0wPbmPzW5nOSeDy9CrY1k5TqzwjEeE861fvqNmu_3IkPExMdRwJhmveJYwdF5LpdW6of5S_miJcs7JW6KlXRNfxm5ZTR1-GsYELtWK7VL0H1JljrDNYHzLc7I6/";
cm_ava['url'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFGz0k_gJ9tNWiin2zZe0qYmbJauNtvoxsFF1ro7qaAIBV-OmGO7oroMj7wVAy82Y_Hv46PQWhESEbH_G9PwvIMAaiRnENCqm5tYV97gHY2Xu9qNQHGYyUBXQKF-ZtmVXRV2-DOJdyjBNv/";
cm_ava['anon'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDJ795gb4W5Fo8umxoIHTcT2YfqhZDTvWnypZmhMEpBBBo8bRL07LHjFtMaXlkR9QKmJ6x3UPUKwyhUfJRB0Owe-B5WZtL4wxYbs-hmB_V4VPk62eNPwDaAKMwGs7Piin2ENws66uN7DWe/";

</script>
<script src="http://anhnc.googlecode.com/svn/trunk/p/qtan.js" type="text/javascript"></script>
<script>
M.p(M.r());
</script>

File js này các bạn hãy edit lại nhé. Mình làm cho nó giống cấu trúc site mình thôi.

http://anhnc.googlecode.com/svn/trunk/p/qtan.js

Cấu trúc gửi bài hát như sau:

[m]link bài hát|nguoi_nhan|Lời muốn nói[/m]

Chúc mọi người thành công !

Nhạc XUÂN



[id]Nhạc Xuân Tuyển Chọn;http://www.nhaccuatui.com/nghe?L=VEgc7SSVLk47|Tết;http://www.nhaccuatui.com/nghe?L=xZkcVaHWATl7|Khúc Nhạc Mừng Xuân;http://www.nhaccuatui.com/nghe?L=LTFAKAapUHSo[/id]