Quantcast
Channel: Javascript –梅問題.教學網
Viewing all 25 articles
Browse latest View live

jQuery教學-浮動式固定上選單

$
0
0
梅問題-jQuery教學-浮動式固定滑動選單
  每當在瀏覽網頁時,由於網頁內容很長,就會不斷的向下滾動,比較貼心的網站,會提供Top鈕,讓使用者可以快速置頂,再去瀏覽其它主題的內容,除此之外也有些網站,當頁面滾動超過一定的範圍後,上面的選單就會固定在上方,讓使用者可以不用滾動與置頂,就能透過上方的選單,快速的跳到其它主題中,除此之外這種固定式選單,也可加深網友對網站的印象,而這個看似很酷的浮動式固定選單,其實作法相當的簡單喔!梅干花了點時間將它簡化,讓各位可以無痛的套用,現在就一塊來看看。
CSS樣式:
放在<head>.....</head>之間:
#top-bar{
	 width:100%;
	 height:50px;
	 background:#32b3bf;
	 position:fixed;
	 top:-65px;
	 
	 /* CSS3 陰影*/
	-webkit-box-shadow: 0px 8px 15px #333;
	-moz-box-shadow: 0px 8px 15px #333;
	box-shadow: 0px 8px 15px #333;	 
}

Javascript:
放在<head>.....</head>之間:
這邊梅干是設定當滾動超過100像素時,上面選單就滑出,若要再多一點的話,可自行修改this_Top中的數值,若要改變上選單高度時,再修改top:後方的數值即可。
<script type='text/javascript' src="jquery-1.9.1.min.js"></script>
<script type='text/javascript'>
$(function(){
 $(window).load(function(){
  $(window).bind('scroll resize', function(){
  var $this = $(this);
  var $this_Top=$this.scrollTop();

  //當高度小於100時,關閉區塊
  if($this_Top < 100){
   $('#top-bar').stop().animate({top:"-65px"});
   }
    if($this_Top > 100){
    $('#top-bar').stop().animate({top:"0px"});
    }
  }).scroll();
 });
});
</script>

HTML:
放在<body>.....</body>之間:
<div id="top-bar"></div>

[ 範例預覽 ] | [ 範例下載 ]

jQuery教學-簡單好用的視差滾動特效 Parallax Effect

$
0
0
梅問題-jQuery簡單好用的視差滾動特效
  若各位有在注意Firefox OS的朋友,應該會發現到,在台灣的官網中,有一個相當特別的效果,當滾動畫面時,感覺畫面上疊了一層圖層,可在某一個區塊中,把背景固定住,然後內容不斷的更換,當這個單元介紹完後,再向下滾動捲軸時,下個單元的內容則會向上推,把上一個單元的內容給覆蓋上去,是一個相當特別的視覺新感受,而這個酷炫的特效也有專有名稱,就叫作「視差滾動」特效,只需透過CSS、jQuery套件,就可快速的實現出此效果,而這種效果相當適合拿來介紹產品時使用,且這種視差滾動特效的模組也相當多,梅干則挑選了一個較簡單的,來為各位介紹一下囉!讓你也可快速使用此特效。
視差滾動 jQuery Parallax Effect:
外掛名稱:Parallax Effect
外掛版本:1.1.3
外掛下載:本站下載(梅干簡化過) | 官方下載

Step1
將用到的js外掛放到head標籤之間。
梅問題-jQuery簡單好用的視差滾動特效
Step2
將要滾動的DIV區塊,加到body標籤之間。
梅問題-jQuery簡單好用的視差滾動特效
Step3
設定css樣式外,再分別設定div滾動區塊的水平位置、速度。
梅問題-jQuery簡單好用的視差滾動特效
Step4
這樣就完成囉! 當預覽時就會發現到,一種很特別的視覺效果,就像是在滾動圖層一樣。
梅問題-jQuery簡單好用的視差滾動特效
[範例預覽] | [Firefox OS視差滾動特效]

jQuery套件《Mu Image Resize》圖片自動縮放與裁切居中

$
0
0
梅問題-jQuery套件-《Mu Image Resize》 圖片自動縮圖與裁切居中
  很早之前梅干曾想過,將圖片縮到指定的大小後,再設定顯示範圍,再把抓取圖片中間的區域位置,當時光寫完圖片自動縮圖的機制後,就讓梅干死了不少的腦細胞,再加上梅干的數理不好,除了數字算半天外,再來就是程式的邏輯架構一直鬼擋牆,好在身旁有位高手男丁的協助下,才讓梅干的圖片縮圖順利完成,但心中還是一直掛念著裁切的部分,而那一天卻在網路上,無意間的發現到MRMU STUDIO的網誌中,自製分享了一隻縮圖裁切的jQuery外掛,讓使用者可以自行的設定的顯示區塊範圍,程式就會自動縮放圖片到指定範圍中,由於該外掛需在script中作設定,所以梅干稍稍的加工一下,讓它除了可透過script中來設定外,也可直接在img的標籤中來作設定,讓使用上更加的方便,因此有需要的朋友,不妨參考看看囉!!
Mu Image Resize 縮圖裁切外掛:
套件名稱:Mu Image Resize 縮圖裁切外掛
套件語言:jQuery
作者網站:http://www.mrmu.com.tw/2012/05/07/jquery-mu-image-resize/
套件下載:本站下載(梅干加料版) | 作者網站下載

下載完畢,除了引用jQuery與mu.image.resize.js檔後,使用方法有二種:
方法一、在Script中設定:
$('.resize).muImageResize({width: 150, height:150}); //當這樣設定時,所有resize下的圖片都會縮成150×150

說明:
resize:圖片的類別名稱
width:150:圖片的寬度
height:150:圖片的高度


方法二、在img標籤中設定:
1.Script中插入$('.c_resize').muImageResize();
2.<img src="圖片檔名" class="c_resize" data-w="300" data-h="300"> //使用此方法,可自行設定每一張圖片的大小

說明:
c_resize:圖片的類別名稱
data-w="300":圖片的寬度
data-h="300":圖片的高度
梅問題-jQuery套件-《Mu Image Resize》 圖片自動縮圖與裁切居中
設定好後,圖片就會依照指定的尺寸,縮到指定的範圍中。
梅問題-jQuery套件-《Mu Image Resize》 圖片自動縮圖與裁切居中
[範例預覽]

jQuery教學-記憶型滑動式展開選單,換頁重整選單不收合

$
0
0
梅問題-jQuery教學-記憶效果滑動式選單
  一直以來有不少朋友,遇到這樣子的狀況,當透過jQuery製作出來的,滑動式展開選單,點選了其中的大項後,選單會自動展開,並且切到該類別的頁面外,但這時就會發現到,選單立即就回到原始的縮合狀態,其實這並不是jQuery的問題,而是瀏覽器動態變數的生命週期機制,因此若想要讓選單不收合時,就得透過cookie小餅乾,來將變數暫存在使用者的電腦中,這時就可完成換頁選單可繼續保留,原先所點選的設定值了,至於怎麼作現在就一塊來看看吧!
使用的素材:
1.jquery.js
2.jquery.cookie.js

CSS樣式:
放在<head>.....</head>之間:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#menu {
	width: 155px;
	background-color: #bce0de;
}
#menu dt {
	cursor: pointer;
}
#menu dd, #menu  ul {
	margin: 0;
	padding: 0;
}
#menu ul li {
	list-style: none;
}
#menu ul li a {
	text-decoration: none;
	color: #660;
}
#menu ul li a:hover {
	text-decoration: underline;
}

Javascript:
放在<head>.....</head>之間:
?View Code JAVASCRIPT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.cookie.js"></script>
<script>
$(function(){
	var _menu_id = $.cookie('menu_id');	
	$("#menu dt").click(function(){		
		//將選單索引值寫入cookie
		var _index = $("#menu dt").index(this);		
		$.cookie("menu_id", _index);		
 
		var _this = $(this);
		var _ans = $(this).next();
 
		if(_ans.is(":visible")){
			_ans.slideUp();
		}else{
			$("#menu dd").slideUp();
			_ans.slideDown();
		}
	}).next().slideUp();
 
	//當cookie值不等於空時,就展開選單
	if($.cookie("menu_id")!=null){
		$("#menu dd").eq(_menu_id).slideDown();	
	}
 
	//清除cookie
	$("#c-cookie").click(function(){	
		$.cookie("menu_id", null);
	});
 
});
</script>

HTML:
放在<body>.....</body>之間:
?View Code JAVASCRIPT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
<dl id="menu">
<dt>選單一</dt>
    <dd>
        <ul>
            <li><a href="#">次選單一</a></li>
        </ul>
    </dd>
 
<dt>選單二</dt>
    <dd>
        <ul>
            <li><a href="#">次選單一</a></li>
            <li><a href="#">次選單二</a></li>
            <li><a href="#">次選單三</a></li>
        </ul>
    </dd>	
 
 <dt>選單三</dt>
    <dd>
        <ul>
            <li><a href="#">次選單一</a></li>
            <li><a href="#">次選單二</a></li>
            <li><a href="#">次選單三</a></li>
        </ul>
    </dd>
</dl>

結果預覽:
梅問題-jQuery教學-記憶效果滑動式選單

當點了選單後,網頁已更換選單也不會縮回去,甚至重新整理頁面也是。
梅問題-jQuery教學-記憶效果滑動式選單

即便重整頁面,選單也會正常的開啟剛所點選的項目。
梅問題-jQuery教學-記憶效果滑動式選單
[範例預覽] [範例下載]

jQuery套件《Waypoints滾動套件》滾動式翻頁效果

$
0
0
梅問題-jQuery教學《Waypoints滾動套件》滾動式翻頁效果
  有在觀注樂兔米的朋友,應該會發現到,此次的改版中,除了加入了許多CSS3的動態特效外,還加入滾動特效,就是當滾到固定的區塊中,裡面的元素才會一一的顯示,與延遲載入有點雷同,其實這個效果只是利用了jQuery中的一個套件Waypoints滾動事件,該套件會自動的偵測,目前畫面所在的區塊位置,並依序的顯示所設定的特效,且這隻Waypoints套件用法也相當容易,只要指定好區塊後,立即就會依所需的顯示效果啦!至於要怎麼用,現在就一塊來看看吧!
jQuery Waypoints套件:
外掛元件:Waypoints
外掛版本:v2.0.3
套件網址:http://imakewebthings.com/waypoints/
※需載入jQuery1.8+以上

引用Jquery+jQuery Waypoints:
放在</body>上:
1 2
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/2.0.3/waypoints.min.js"></script>

使用Waypoints:
在waypoints下,加入以下語法。
<script type="text/javascript">
$(document).ready(function() {
   $('物件的class或id名稱').waypoint(function(){
   加入特效的效果;
   },{位移量});
});
</script>

梅問題-jQuery教學《Waypoints滾動套件》滾動式翻頁效果
這時當畫面滑到顯示的範圍時,就會自動啟用所設定的效果啦!
梅問題-jQuery教學《Waypoints滾動套件》滾動式翻頁效果
[範例預覽] [範例下載]

《Picturefill 自適應圖片》隨著裝置提供不同大小的圖檔(JS版)

$
0
0
梅問題-《Picturefill 自適應圖片》隨著裝置提供不同大小的圖檔(JS版)
  一直以來無論使用任何一套的RWD Framework,都會支援圖片自適應的功能,但這些圖片自適應,充其量只是修改圖片的比例大小,但檔案依舊,所以這對於行動族群來說,一點幫助也沒,讀取的圖檔與一般的桌機是一樣的,雖然之前梅干有分享過,第三方的解決辦法,但不知是否使用的人太多,而吹熄燈號了,所以只好自己當自強啦!而梅干也一直不斷尋找相當的解決辦法,最近發現一套JS版的,它則是透過html5的picture的標籤,來實現在不同的裝置的解析,載入相對應的圖檔大小,如此一來在3G吃不飽,4G又不穩的情況下,對於使用者來說真是一大福音,而目前這個方法是用JS來進行切換,因此在製作圖檔時,就多存幾個檔案即可解決,至於怎麼用現在就一塊來看看吧!
Picturefill:
套件名稱:Picturefill
套件網址:http://scottjehl.github.io/picturefill/

Javascript:
放在</body>前:
<script>
//要套用的HTML元素
document.createElement( "picture" );
</script>
<script src="picturefill.min.js"></script>

HTML:
放在<body>....</body>間:
<picture>
 <!-- 當解析度大於900像素時,載入此圖-->
  <source srcset="images/extralarge.jpg" media="(min-width: 900px)">
 <!-- 當解析度大於800像素時,載入此圖-->
  <source srcset="images/large.jpg" media="(min-width: 800px)">
 <!-- 當解析度大於400像素時,載入此圖-->
  <source srcset="images/medium.jpg" media="(min-width: 400px)">
  <img srcset="images/small.jpg" alt="">
</picture>

梅問題-《Picturefill 自適應圖片》隨著裝置提供不同大小的圖檔(JS版)
馬上來實測一下,這時就會依照不同的裝置大小,分別載入不同的圖檔大小,如此一來圖片自適應才有達到此效果,這是JS版改天再來分享PHP自動產生的方法。
梅問題-《Picturefill 自適應圖片》隨著裝置提供不同大小的圖檔(JS版)
[範例預覽] [範例下載]

jQuery套件―3款「Before/After使用前後」特效大合集

$
0
0
梅問題-3款Before/After使用前後特效立即下載與套用
  一直不斷有朋友問到,在梅問題教學網中的,使用前與使用後的特效是怎麼作的,其實這個特效是梅干很早之前,請好友男丁大大幫忙寫的,而這特效現在網路上已有不少現成的套件可使用,且用方法也相當的簡單,只要將Javascript載入到網頁中,再依照套件所需的HTML結構,立即就會有此效果,而梅干也整理了一下目前網路上,3款還不錯的使用前後的套件與大家分享,且下載完畢解壓後,立即套用即可,因此有需要的朋友,也一塊來看看吧!!
TwentyTwenty:
這款梅干還推薦的,無論是套用還是標籤結構都很單純。
梅問題-3款Before/After使用前後特效立即下載與套用
[範例預覽] [範例下載]
BEFORE AND AFTER SLIDER WITH JQUERY:
這個與剛不同的是,中間的控制鈕有三種模式,但這個標籤結構比上一個來的複雜一些。
梅問題-3款Before/After使用前後特效立即下載與套用
[範例預覽]
Drag a Slider Over Before/After the images with jQuery Plugin:
這一個下方多了前後的連結,當點了連結後,畫面會快速的切換,無需再拖拉。
梅問題-3款Before/After使用前後特效立即下載與套用
[範例預覽] [範例下載]
  這三款使用前後的特效,使用都相當的簡單,同時結構也很單純,並且在預覽的頁面中,都有詳細的說明資訊,只要依照網頁中的步驟作,立即就可讓網站有使用前後的效果,相當的簡單喔!因此有需要的朋友,也趕快來下載囉!

jQuery套件《Quicksand》畫面酷炫重新排序篩選項目

$
0
0
梅問題-jQuery套件《Quicksand》重新排序篩選項目
  最近梅干接的網頁專案中,遇到一個相當有趣的功能,就是上方有所有的分類項目,當使用者點了某一類別後,畫面就會自動篩選,並重新排列,如此一下來就無需換頁,而本來梅干打算自己動手寫,但上網谷哥一下後,發現網路上已有不少的相關套件可用,在研究了幾款的篩選套件後,發現Quicksand最為簡單,除了有類別排序外,還加入了CSS3滾動效果,讓在篩選項目重新排列時,畫面更有變化性,而梅干從官網下載範例後,也作了點小修正,讓原先只有二筆的分類項目,更改為無限,因此可任意的新增所需的項目,且無需更改js立即就使用,因此有需項目篩選的朋友,不妨也可參考看看囉!
Quicksand:
網站名稱:Quicksand
官方網站:http://razorjack.net/quicksand/
範例下載:官方網站 | 本站下載
範例預覽:官方網站 | 本站預覽

Step1
首先,先將javascript一一的載入到網頁中。
梅問題-jQuery套件《Quicksand》重新排序篩選項目
Step2
接著是HTML的結構,而結構也很單純,上方是分類選單,同時data-value則是分類搜尋名稱,下方是篩選的項目,篩選規則是透過class來設定,因此要與上方的篩選項目的data-value一致即可。
梅問題-jQuery套件《Quicksand》重新排序篩選項目
Step3
這樣就完成了。
梅問題-jQuery套件《Quicksand》重新排序篩選項目
Step4
當點上方的分類選項時,下方立即會進行篩選與排序,同時還會有css3的動態效果,畫面感覺相當的酷,因此有需要的朋友,也趕快來下載囉!
梅問題-jQuery套件《Quicksand》重新排序篩選項目

jQeury外掛「Infinite Scroll」滾動無限載入網頁內容

$
0
0
梅問題-jQeury外掛「Infinite Scroll」滾動無限載入網頁內容
  前陣子有不少網站吹起了瀑布流版型,讓網頁看起來相當的豐富,且排序再不用擔心區塊長短腳的問題,同時當向下滾動頁面時,到底部就會不斷的載入,除了用於分頁外,也可將這自動載入用在一般的單一頁面說,比方說有二篇關聯式文章時,就可透過此方式,將可相似的文章給載入進來,就有點像是延伸文章的概念,其實這只要引用jQuery的Infinite Scroll套件,立即就可做到,甚至還可變換網址,這樣才有助於SEO的優化,至於這隻外掛要怎麼作呢?方法很簡單,現在就一塊來看看吧!
Infinite Scroll:
外掛名稱:Infinite Scroll
外掛版本:1.5.100504
外掛網址:http://www.infinite-scroll.com/infinite-scroll-jquery-plugin/

Step1
進入外掛網站,點下方的連結,進入下載畫面。
梅問題-jQeury外掛「Infinite Scroll」滾動無限載入網頁內容
Step2
點右下Download ZIP就可下載全部的範例,但一般只需下載jquery.infinitescrollaq.jsjquery.infinitescroll.min.js(min為壓縮過的js)。
梅問題-jQeury外掛「Infinite Scroll」滾動無限載入網頁內容
Step3
下載完畢後,分別將jQuery.js與剛所下載的jquery.infinitescrollaq.js放在你的專案下,並將它們引用到網頁中。
?View Code JAVASCRIPT
1 2
<script src="jquery-1.6.1.js"></script>
<script src="jquery.infinitescroll.js"></script>

Step4
基本HTML網頁結構。
1 2 3 4 5
<div id="content">
內容區塊
</div>
........
<a id="next" href="index2.html">next page</a><!-- 放在最底部 -->

Step4
接著分別只要設定載入的區塊名稱(itemSelector),以及下一頁籤(navSelector),以及格式(dataType),這樣就大功告成啦!而官網中有詳盡的設定屬性,如有需可至官網中查看,其本上只要以下這些就可正常的使用啦!
?View Code JAVASCRIPT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
<script>
		$('#content').infinitescroll('binding','unbind');
		$('#content').data('infinitescroll', null);
		$(window).unbind('.infscr');
 
		$('#content').infinitescroll({
		navSelector : "#next:last",
		nextSelector : "a#next:last",
		itemSelector : "#content",
		dataType : 'html'
		});
 
		//網址切換
		$(function () {
		    var cont_h = $('.main').height();
		    var pathname = window.location.href;
		    var pathhost  = location.hostname;
 
	    $(document).scroll(function () {
	          var top = window.pageYOffset;
	          	if(top<cont_h){
	          		window.history.pushState('', '', pathname);
 
	          	}else{
	          		var nexturl = $('#next').attr("href").replace("http://","").replace(pathhost,"");
	          		window.history.pushState('', '', nexturl);
	          	}
	    	});
		});
	</script>

Step5
立馬來預覽一下,這時看到紅色框框表示為動態載入的第二頁,同時上方的網址也會更著改變。
梅問題-jQeury外掛「Infinite Scroll」滾動無限載入網頁內容
Step6
當要載入多個標籤id時,可在itemSelector :用,來作加選,比方要動態載入二個div,就可div1,div2這樣就可載入二個不同的div區塊,是不是超ez的呀!由於這使用ajax的技術,因此當要預覽結果時,需放在webserver上才能預覽喔!當了解了它的用法後,就可任意的應用各平台下,無論是Wordpress、Opencart、Joomla...皆可,因此有需要的朋友,不妨也可參考看看囉!
梅問題-jQeury外掛「Infinite Scroll」滾動無限載入網頁內容
[範例預覽] [範例下載]

jQuery外掛-360度旋轉產品照片展示

$
0
0
梅問題-jQuery外掛-360度旋轉產品照片展示
  以前相當流行利用Flash來製作360度的產品展示,讓使用者可以直接按住滑鼠,拖拉產品就可看到360度的產品照片,讓使用者可以在虛擬的頁面中,了解到實體產品的各角度的變化,但自從老賈開始打Flash後,現在Flash已消聲匿跡,因此目前比較好的作法,就是透過jQuery的方式來製作,而最近正好有朋友,想製作360度的產品展示功能,所以梅干就尋找了一下,發現到一款相當簡易且好用的360度產品展示的外掛,且套用還相當的簡單,因此有需要的朋友,也趕快來看看囉!
準備素材:
當要開始製作時,要先將360度的產品照片拍好。
梅問題-jQuery外掛-360度旋轉產品照片展示
Step1
首先,將css放到<head>....</head>間。
<link rel="stylesheet" type="text/css" href="css/pic360.css"/>

Step2
首先,將js放到到</body>前。
<script src="js/jquery-1.4.4.js"></script>
<script src="js/pic360-1.0.0.js"></script>

Step3
當要使用時,將div的類別名稱加入PIC360,接著把要360度的產品照,一一的加到ul li中。
<div class="PIC360">
  <ul>
   <li><img width="700" height="466" src="images/01.jpg" /></li>
   <li><img width="700" height="466" src="images/02.jpg" /></li>
   .............
  </ul>
</div>

Step4
當完成後,只要滑鼠游標,在區域內由左向右滑動時,產品照片就會跟著旋轉,而這邊梅干只是簡易拍攝,當要顯示跟細膩時,可用專用的拍攝器,以及張數愈多效果愈好,是不是很簡單呀!有需要的朋友,不妨也可參考看看囉!
梅問題-jQuery外掛-360度旋轉產品照片展示
[範例預覽] [範例下載]

Google Closure Compiler壓縮器將Javascript最佳化廋身

$
0
0
梅問題-Google Closure Compiler壓縮器將Javascript最佳化廋身
  當今天把網頁製作好上線時,都會將網頁中的css、js壓縮過,再放到正式的環境中,而以javascript來說,最常使用的壓縮器,就是Yahoo所推出的YUI,除了Yahoo YUI壓縮器外,Google也有一套Javascript的壓縮器Closure Compiler,除了可將Javascript進行壓縮外,還會進行優化與檢測程式中,是否有出錯或問題,並協助改善程式碼,減少bug的發生,而Closure Tools除了有線上版外,也可安裝在自己的主機中,現在就一塊來看看,Google這個Closure Tools的壓縮器。
Closure Compiler Service UI
網站名稱:Closure Compiler Service UI
連結網址:http://closure-compiler.appspot.com/

Step1
進入頁面後,有二種方式可將javascript載入,上方是透過線上方式,下方是直接將javascript貼入。
梅問題-Google Closure Compiler壓縮器將Javascript最佳化廋身
Step2
輸入好後,再按Complier鈕。
梅問題-Google Closure Compiler壓縮器將Javascript最佳化廋身
Step3
壓縮後的碼會在右邊,同時在上方可看到,整個少了一半。
梅問題-Google Closure Compiler壓縮器將Javascript最佳化廋身
Step4
並且可點上方的頁籤,看是否有錯誤或警告,沒問題的話,就可按上方的default.js,將壓縮好的檔案下載回來。
梅問題-Google Closure Compiler壓縮器將Javascript最佳化廋身
Step5
當壓縮後,從本來的8KB立馬變成4KB啦!足足小一倍,同時也能正常的運作。
梅問題-Google Closure Compiler壓縮器將Javascript最佳化廋身

jQuery教學-RWD自適應導覽列多層級下拉選單

$
0
0
梅問題-jQuery教學-RWD自適應導覽列多層級下拉選單
  雖然Bootstrap相當的方便好用,且內建的特效也可滿足所有網頁的需求,由其是導覽選單,當桌機版時,則會變成橫向排列,當到行動版時,就會變成條列狀,同時還支援二層級的下拉選單,當第三層的子選單就無法呈現,同時大類選單也會變成按鈕形式,所以梅干最近花了點時間,與好友男丁一同開發了一個導覽列的下拉選單,同時支援到第三層選單,並且當有子層時,則右邊會產生一個符號,點了之後展開,當點前方的分類名稱,當有連結時,就以連結方式展開,同時梅干還加了RWD自適應的效果,讓電腦、平板、手機皆能使用,因此有需要的朋友,現在也一塊來看看囉!
Step1
選單的html結構。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
<div class="nav">
	<a href="#" id="nav-btn">menu</a>
	<ul class="menu">
		<li><a href="http://www.minwt.com/category/dc"><i class="icon-camera"></i> 相機攝影</a>
		    <ul class="sub-menu">
		        <li><a href="http://www.minwt.com/category/dc/基本概念">基本概念</a></li>
		        <li><a href="http://www.minwt.com/category/dc/productphoto">商品攝影</a></li>
		        <li><a href="http://www.minwt.com/category/dc/equipment">攝影器材</a>
					 <ul class="sub-menu">
					 	<li><a href="http://www.minwt.com/category/dc/器材操控">器材操控</a></li>
					 	<li><a href="http://www.minwt.com/category/dc/diy-dc">器材DIY</a></li>
					 </ul>
		        </li>
		        <li><a href="http://www.minwt.com/category/dc/影像軟體">影像軟體</a></li>						
		        <li><a href="http://www.minwt.com/category/dc/書籍課程活動" >資源活動</a></li>
		        <li class="end"><a href="http://www.minwt.com/category/dc/basicconcept">其它綜合</a></li>
		    </ul>
		</li>
		<li><a href="http://www.minwt.com/category/ps"><i class="icon-photoshop"></i> Photoshop</a>
		    <ul class="sub-menu">
		        <li><a href="http://www.minwt.com/category/ps/ps-photo-fix">攝影後製</a></li>
		        <li><a href="http://www.minwt.com/category/ps/ps-plugin-tools">外掛工具</a></li>
		        <li><a href="http://www.minwt.com/category/ps/ps-effect">特效合成</a></li>
		        <li><a href="http://www.minwt.com/category/ps/ps-clearbg">去背技法</a></li>
		        <li><a href="http://www.minwt.com/category/ps/ps-web">網頁動畫</a></li>
		        <li><a href="http://www.minwt.com/category/ps/ps-trouble">相關問題</a></li>
		        <li class="end"><a href="http://www.minwt.com/category/ps/ps-other">其它綜合</a></li>
		    </ul>
		</li>
		<li><a href="http://www.minwt.com/category/mobile"><i class="icon-mobile"></i> 智慧型裝置</a>
		    <ul class="sub-menu">
		        <li><a href="http://www.minwt.com/category/android">Android</a></li>
		        <li><a href="http://www.minwt.com/category/ios">iPhone</a>
					<ul class="sub-menu">
						<li><a href="http://www.minwt.com/category/ios/ios-iphone-using">火速上手</a></li>
				        <li><a href="http://www.minwt.com/category/ios/ios-iphone-app">應用程式</a></li>
				        <li><a href="http://www.minwt.com/category/ios/ios-product">週邊配件</a></li>
				        <li><a href="http://www.minwt.com/category/ios/ios-iphone-jb-iphone">JB教學應用</a></li>
				        <li><a href="http://www.minwt.com/category/ios/ios-iphone-developer">應用程式開發</a></li>
				        <li><a href="http://www.minwt.com/category/ios/ios-iphone-other">其它綜合</a></li>
					</ul>
		        </li>
		        <li><a href="http://www.minwt.com/category/ipad">iPad</a></li>
		        <li class="end"><a href="http://www.minwt.com/category/blackberry">BlackBerry</a></li>
		    </ul>
		</li>
 
	</ul>
</div>

Step2
當完成後,就會看到整個選單的層級與結構。
梅問題-jQuery教學-RWD自適應導覽列多層級下拉選單
Step3
接著加入CSS的樣式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
	ul, ul li{
			list-style-type: none;
			margin:0;
			padding: 0;
		}
		a{
			text-decoration: none;
			line-height: 2em;
			font-size: 1.2em;
			color: #333;
		}
 
		.nav{
			overflow: auto;
		}
		/*第一層選單*/
		.nav>ul>li{ 
			padding-left: 15px;
			line-height: 3.3em;
			border-bottom: solid 1px #333;
		}
 
		/*第二層選單*/
		.nav>ul>li>ul>li{
			padding-left: 15px;
			border-bottom: solid 1px #333;
 
		}.nav>ul>li>ul>li:first-child{
			border-top: solid 1px #333;
		}
		.nav>ul>li>ul>li:last-child{
			border: 0;
		}
 
		/*第三層選單*/
		.nav>ul>li>ul>li>ul>li{
			padding-left: 15px;
			border-bottom: solid 1px #333;
		}
		.nav>ul>li>ul>li>ul>li:first-child{
			border-top: solid 1px #333;
		}
		.nav>ul>li>ul>li>ul>li:last-child{
			border: 0;
		}
 
		.menu-plus{
			display: block;
			background: #333;
			color: #fff !important;
			padding: 2px 15px;
			margin-top: 5px;
			border-radius: 30px;
			float: right;
		}
 
	@media (min-width: 768px) {
			#nav-btn,.sub-menu{
				display: none;
			}
			.nav>.menu {
				display: block !important;
			}
			/*第一層選單*/
			.nav>ul>li{ 
				float: left;
				margin-left:15px;
				padding-left: 15px;
				line-height: 3.3em;
				border-bottom: solid 1px #333;
			}
	}
	@media (max-width: 768px) {
			.nav>ul,.sub-menu{
				display: none;
			}
	}

Step4
套用到樣式後,只會留下主選單,子選單與次選單則被隱藏起來。
梅問題-jQuery教學-RWD自適應導覽列多層級下拉選單
Step5
最後再把javascript的效果加入。
?View Code JAVASCRIPT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
	$(function(){
		var href = $(".nav>div>ul>li:has(ul)>a").attr('href');
		$(".nav>ul>li:has(ul)>a").after('<a href="'+href+'"" class="menu-plus">+</a>');//第二層
		$(".nav>ul>li>ul>li:has(ul)>a").after('<a href="'+href+'"" class="menu-plus">+</a>');//第三層
 
		$(".nav>#nav-btn").click(function() {
	        $(".nav>ul").slideToggle();
	        return false;
	    });
 
		$('.menu>li>.menu-plus').on('click', function(){
		 	 $(this).text(function(i, v) {
	        	return v === '-' ? '+' : '-';
	    	})
		 	$(this).next('.sub-menu').slideToggle();
		 	return false;
		 });
 
		$('.sub-menu>li>a').on('click', function(){
		 	 $(this).text(function(i, v) {
	        	return v === '-' ? '+' : '-';
	    	})
		 	$(this).next('.sub-menu').slideToggle();
		 	return false;
		 });
	})
</script>

Step6
當有子選單時,選單後方會出現+號,點選之後則會展開,若點前方的分類名稱,就會開啟該分類,這樣是不是方便好用很多,當然這也可以整併到Bootstrap中使用啦!
梅問題-jQuery教學-RWD自適應導覽列多層級下拉選單
[範例預覽] [範例下載]

jQeury外掛「scroll-scope」鎖定DIV區塊滾動範圍

$
0
0
梅問題-jQeury外掛「scroll-scope」鎖定DIV區塊滾動範圍
  最近在幫好友,設計手機版網頁時,卻發現一個小問題,當選單滑出,再展開子選單,這時捲軸則會出現,在開始滾動選單,當選單滾到底部分時,就會自動跳開,換成底層的區塊進行滾動,本來想說這會是個案嗎?就上網看了幾個網站,發現也有一樣的狀況,除了使用jQuery Mobile或iScroll則沒有出現此問題,但iScroll功能相當的強大,因此只是單純的滾動區塊,所以就沒考慮使用iScroll,而另外找到一套既簡易又好套用的外掛Scroll-Scope,不但手機可用,桌機版也適用,因此身為網設的你,也趕快來看看囉!
Scroll-Scope
外掛名稱:scroll-scope.js
外掛版本:0.1.0.
外掛網址:http://eiskis.net/scroll-scope/

Step1
進到外掛網站後,先將先外掛給下載回來,並放到專案的目錄下。
梅問題-jQeury外掛「scroll-scope」鎖定DIV區塊滾動範圍
Step2
當要鎖定時,只要在此區塊的DIV標籤內加入data-scroll-scope
梅問題-jQeury外掛「scroll-scope」鎖定DIV區塊滾動範圍
Step3
接著在</body>前,分別將jQuery與scroll-scop的js載入到網頁中,再加入$(document).scrollScope();這時只要網頁中有出現 data-scroll-scope就會自動套用此功能。
梅問題-jQeury外掛「scroll-scope」鎖定DIV區塊滾動範圍
Step4
除此之外,若是動態產生的區塊。
梅問題-jQeury外掛「scroll-scope」鎖定DIV區塊滾動範圍
Step5
這時比較特別的是,需手動的方式,將scroll-scope加入,因為這是動態產生的,所以它有提供一個參數force, 這樣就可使用了。
梅問題-jQeury外掛「scroll-scope」鎖定DIV區塊滾動範圍
Step6
立即來預覽看看,左上第一個是沒套用,可看到當滾動區塊時,滾到底時,就會跳開,變成外面的區塊捲軸,進行滾動。
梅問題-jQeury外掛「scroll-scope」鎖定DIV區塊滾動範圍
Step7
當二、三是已套用了scroll-scope,因此當滾動區塊捲軸時,當滾動到時,會自動停住,不會跳開而去滾動外層的捲軸。
梅問題-jQeury外掛「scroll-scope」鎖定DIV區塊滾動範圍
[範例預覽] [範例下載]

「Lazy Load CSS」非同步載入CSS,當網頁使用雲端字型更順暢

$
0
0
梅問題-Lazy Load CSS非同步載入CSS,當網頁使用雲端字型更順暢
  自從CSS3支援字型載入後,讓網頁從此不再只有新細體,同時就目前免費的雲端字型,只有Google與Adobe這二間公司,但Adobe則是有流量的限制,雖然說Google不但完全不限制,甚至也不用綁定網域與註冊為會員,大家都能盡情的享用Google所提供的雲端字型,看起來相當的不錯,但有使用過的朋友,應該會發現到,當載入Google的端字型時,一開始畫面會全白,當字型載入完成後,才會一次出現。   會造成這樣的原因,最主要在於Google是以自家的頻寬優勢,讓使用者直接一次載入完整的字型檔,因此當在載入的過程中,畫面會呈現全白的狀態,直到將字型載入完成,這對於使用者來說,會誤以網站是不是掛了而跳出,因此今日要分享一個CSS非同步載入的方式,來解決雲端字型載入的問題,讓一開始是以預設的字型,像是新細明或微軟中黑,當字型載入完畢後,再一併的套入到網頁中,如此一來就不會像造成先前的問題。
以往當網頁要套用CSS時,都會將css以link的方式,寫在網頁的head間。
梅問題-Lazy Load CSS延遲載入CSS,當網頁使用雲端字型更順暢
這時會看到,一開始畫面是全白,直到雲端字型全部載入完畢後,畫面才會一次顯示出來。
梅問題-Lazy Load CSS延遲載入CSS,當網頁使用雲端字型更順暢
因此這時將下方的語法加入後,當要載入CSS時,將css放到a.href,當有多組多,就自行建立多個,最後再z.parentNode.insertBefore依序的加入即可。
<script>
    var cb = function() {
        var a = document.createElement('link');
        a.rel = 'stylesheet';
        a.href = 'fonts/general-j/mplus_webfonts.css';

        var b = document.createElement('link');
        b.rel = 'stylesheet';
        b.href = 'fonts/basic_latin/mplus_webfonts.css';

        var z = document.getElementsByTagName('head')[0];
        z.parentNode.insertBefore(a,z);
        z.parentNode.insertBefore(b,z);
    };
        var raf = requestAnimationFrame || mozRequestAnimationFrame ||
        webkitRequestAnimationFrame || msRequestAnimationFrame;
    if (raf) raf(cb);
    else window.addEventListener('load', cb);
</script>
梅問題-Lazy Load CSS延遲載入CSS,當網頁使用雲端字型更順暢
完成後,立馬來看一下,一開始會先顯示預設的字型,當字型檔全部下載完成後,再套入並顯示。
梅問題-Lazy Load CSS延遲載入CSS,當網頁使用雲端字型更順暢
[範例預覽-同步載入] [範例預覽-非同步載入]

jQuery取得各裝置視窗實際顯示的寬度、高度

$
0
0
梅問題-jQuery取得各裝置視窗的寬、高
  現在的裝置愈來愈多樣化,光是手機從3吋一直到7吋間不等,更別說是平板或電腦,因此當在設計RWD自適應網頁時,當有區塊跑位或沒套用到,這時就得靠各位設計師的眼力,去辨視出目前裝置的視窗尺寸,或是上網去查詢各裝置的尺寸,但各位是否有發現到,當網路上查到的是裝置的顯示尺寸,而非真實的網頁的呈現像素,有時還得自己除2或除1.5、1.6後,才能得到實際的顯示尺寸。   想必這這應該是不少的痛,當在電腦上時,還有偵測工具可查看,若是手機或平板,就不像電腦版的瀏覽器,因此沒有當前的顯示尺寸,就比較難以修正,其實要取得各裝置的顯示尺寸並不困難,只需透過簡單的jQuery,立即就可將各裝置的顯示尺寸給秀出來啦!因此身為網設的朋友,也趕快來看看啦!
首先在body中間,加一個div,並將id並命名為show,接著引用jQuery套件後,再加入下方的語法。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.js"></script>
<script>
$(function(){
  var w = $(window).width();
  var h = $(window).height();
  $("#show").html(w+":"+h);
});
</script>

完成後,立即就可看到,各裝置的顯示尺寸啦!雖然iPhone6大家對它的印象應該是760,但實際的顯示尺寸是375像素,就連梅干手邊最小的Sony手機,也有320。
梅問題-jQuery取得各裝置視窗的寬、高
當轉成橫向後,絕對不是剛的數值顛倒過來而已,如此一來當下回跑版時,就更方便找出是那個顯示的尺寸沒設定到啦!
梅問題-jQuery取得各裝置視窗的寬、高
[範例預覽]

「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像

$
0
0
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
  自從Apple推出Retina的高解析螢幕後,讓手機與筆電,在瀏覽照片時,讓影像變得更細膩,因此也讓許多品牌紛紛的跟進,而這看似美意,但也苦了網頁設計師,由於螢幕的密度提高,這也讓圖片原本的圖片在Retina高解析的螢幕下,會出現鋸齒, 雖然說目前新的網頁格式SVG可解決,但這也只限於向量圖示。   因此當網頁中的圖片,也要顯示高解析的影像時,就得準備二倍大影像尺寸,才能讓影像在Retina的高解析螢幕顯示清析的影像,由於目前影像尺寸是二倍大,但在顯示時需除以2,才能讓圖像1:1顯示,因此這時可用Retina.js這外掛來完成,透過Retina.js來偵測並自動切換高解析的影像,讓網頁圖片全面支援Retina的螢幕。
從下圖可看到,在Retina高解析的螢幕下,顯示影的尺寸為100像素,但在每一個像素中,則會再作分割,讓影像看起來更加的細緻。
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
Retina.js
網站名稱:Retina graphics for your website
連結網址:http://imulus.github.io/retinajs/

進入Retina.js網站後,點一下Download鈕。
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
下載解壓縮後,分別會看到以下的檔案,這時只需將retina.min.js放到專案中即可。
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
這時圖片需準備二張,一張為原始尺寸大小,另一張要是二倍大的尺寸大小。
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
接著先把retina.min.js引用到網頁中,接著再啟用它,當要使用時,只要在img標籤中,當要使用高解析的影像時,再data-rjs的自訂屬性中,加入二倍大的尺寸檔案。
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
當螢幕為Retina就會自動切換成二倍大的影像尺寸。
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
一般的螢幕,就會顯示原來1倍的影像,但無論一倍還是二倍,在顯示的大小是一樣大的。
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
除了透過img標籤外,也可用CSS來作控制,但這時就得透過背景的形式來顯示。
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
分別可看到,無論是透過img標籤,還是透過CSS皆可正常顯示,只不過透過CSS的方式,需指定區塊的大小,而Apple官網就是採用CSS的方式來進行控制的。
梅問題-「Retina.js」網頁圖片支援Retina螢幕,並自動切換高解影像
[範例預覽] [範例下載]

Bootstrap滾動頁籤加入hash動態變換網址,更有助於SEO

$
0
0
  Bootstrap內建許多互動的網頁特效,其中滾動頁籤也是一個相當實用的功能,由其是在單一頁面時,呈現商品的資訊、特色、規格...等,當使用者滾動畫面到指定的區域範圍時,上方的導覽列,立即就會顯示目前的所在位置,有點像是網站麵包屑的概念,同時再搭配jQuery套件的scrollto,就可實現點撃滾動畫面的特效,而在上次的講座中,有學員問到,是否能滾到某區域範圍時,除了導覽列會亮起來外,再來就是網址列也會更著一起變動,如此一來將有助於SEO,而這在很早之前,梅干曾幫朋友製作過,結果竟然忘了分享,因此梅干就花了點時間,整理了一下範例,讓在滾動畫面時,網址列會隨著區域範圍,立即的改變網址,因此有需要的朋友,也一塊來看看囉!

jQeury外掛「imagesLoaded」解決瀑布流圖片未載入完造成區塊覆蓋問題

$
0
0
前幾天有與大家分享Bootstrap+Masonry瀑布流的套件,讓Bootstrap內建的網格系統,也支援瀑布流的排版,這對於區塊內的元素長短不一時,相當的方便好用,同時瀑布流的欄位數,還是由Bootstrap來作控制,雖然說瀑布流解決了長短不一的問題,但也衍生出另一個問題,那就是當區塊內有圖片時,當圖片還沒載入完成時,區塊就會開始上向疊,而造成區塊覆蓋的問題,因此這時可透過另一隻外掛imagesLoaded,而imagesLoaded最主要的是功用就在於,當圖片載入完成後,再去觸發Masonry瀑布流的套件開始動作,如此一來就可解決圖片覆蓋的問題,至於這隻外掛要怎麼使用呢?以及要如何與Masonry瀑布流的套件整合在一塊,現在就一塊來看看吧!

將Google地圖嵌入網頁,滾動滑鼠第三鍵鎖定不縮放

$
0
0
Google地圖的圖資相當的完整,同時還可將地圖嵌入到網站中,因此有不少店家,會將店家的地圖內嵌到自家的網站中,讓消費者方便找到地址,而現在的滑鼠都有第三鍵的功能,因此當滾動第三鍵時,除了可以滾動網頁畫面外,也可快速的縮放地圖,但有店家將地圖放太大,上下沒什麼太多的空白的畫面時,無論是桌機還是手機,就會陷入地圖的縮放深淵中,怎麼也跳脫不出來。

Yahoo!滾動式廣告手法大公開!滾動出現,不滾時n秒自動消失

$
0
0
最近是否有發現到yahoo的聯播網廣告,當滾動畫想時,下方就出現廣告鈕,或是廣告BAR,當畫面靜止時,那廣告Banner就會自動的消失,直接使用者再度滾動畫時,則會再顯示出來,這樣的手法相當的特別,除了能吸引瀏覽者的觀注外,同時又能降低畫面的干擾,有別於以往都是採浮動式的固定廣告框,除了干擾閱讀外,也會相當的佔畫面。因此當梅干看到Yahoo此次的廣告展示手法時,立即吸引梅干的好奇,就隨手試寫看看,不知不覺中就已完成,而梅干也將作法分享出來,因此有需要的朋友,不妨也可參考看看囉!
Viewing all 25 articles
Browse latest View live