我雖然不知道原因
但是網路上查到的資訊是這樣告訴我的,如果有錯,麻煩可以回文告訴我一下
img 這個 tag,如果你要把圖片來源 src = "xxxx.png" 寫在CSS裡,是沒有辦法的,應該說,寫了沒有用。雖然 Dreamwave 的 intelligent senses 還是會引導你在 CSS 的程式片段中幫你引導出 Src 的程式類似這樣:src:url(img/close-button.png);可是,實際執行,圖片就是不會出來。
解法一:
在 CSS 中不要用 src 屬性,而改用 background-image 屬性,當然,您也想到了,這樣很怪,且,這樣圖片會多出一個外框,無法消掉.......,這樣不算解決方案。
解法二:
不要寫在 CSS 當中,直接寫在 HTML 裡<img class = "ImgStyle" src="img/button.png" ></img>,這樣就解決了,只是,這個無法放到CSS當中,不知道的人,可能得花好久的時間才找得出原因呢。
我喜歡設計,我喜歡創造,我喜歡美 不論軟體設計,不論介面設計,不論產品規劃設計,我都很有興趣 一直希望能能用這份專長,好好發揮在職場上。讓我做的快樂。 不論寫程式,或是做美工,我都很喜歡,希望我可以有機會雙線。兩種都很擅長。
2012年11月4日 星期日
CSS的註解是 /* xxxx */ 而不是 別弄錯呀
因為Dreamwave CS6 有對程式碼做 色彩區分
所以我相信他所以當我用 <!-- xxxx --> 來加註解的時候,該段程式碼確實變成灰色,但是.......
實際上,他不是變成註解,導致整個CSS片段都被當成錯誤的而跳過
意外的多花費了我一個上午的時間找出為什麼我的 DIV 都突然無法正常呈現大小。
後來查很久才知道,原來是註解寫法寫錯了(昏)
所以我相信他所以當我用 <!-- xxxx --> 來加註解的時候,該段程式碼確實變成灰色,但是.......
實際上,他不是變成註解,導致整個CSS片段都被當成錯誤的而跳過
意外的多花費了我一個上午的時間找出為什麼我的 DIV 都突然無法正常呈現大小。
後來查很久才知道,原來是註解寫法寫錯了(昏)
2012年11月2日 星期五
MouseDown之後的MouseMove時(拖動),控制滑鼠游標注意事項
底下這段程式碼最下方body內有四行被遮住的,可以逐一打開其中一個來感受一下,當你滑鼠游標滑入該物件裡面時,滑鼠游標會變成十字移動圖示,但是當你按著滑鼠移動,就會有不同了,在div跟table會顯示為輸入文字的符號,而在button跟img則顯示為移動的十字符號。怎麼回事?這是因為,前兩者是可包容其他物件的區塊物件,用來排版的,而後兩者是不可包容其他物件在其中的功能物件,系統預設按著滑鼠移動叫做拖動,而針對上述兩種類型的物件都預設了滑鼠的圖示,而且無法改(目前我還不會)。
所以如果要拖動物件,而且拖動的對象是個區塊物件,譬如拖動視窗,那會做不出效果來,建議可以放個功能物件在區塊物件上,就像是放個標題列一樣意思,讓使用者在功能物件上按下滑鼠,才觸發移動,並對區塊物件做移動,這樣就行了。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Mouse Move</title>
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<!-- Script 區段 -->
<script>
$(document).ready(function(e)
{
$(".TheObj").mousemove(function(e)
{
$(".TheObj").text( "mouse moving" );
$(".TheObj").css( "cursor", "move" );
});
})
</script>
<!-- CSS 區段 -->
<style type="text/css">
.TheObj
{
width:600px;
height:400px;
border:solid;
cursor:pointer;
}
</style>
</head>
<!-- Body 區段 -->
<body>
<!-- <div class = "TheObj"></div> -->
<!-- <table class = "TheObj"></table> -->
<!-- <button class = "TheObj"></button> -->
<!-- <img class = "TheObj"></img> -->
</body>
</html>
2012年11月1日 星期四
iframe是無法處理事件的
iframe是無法處理事件的,首先,你在Tag裡頭,想輸入<iframe onClick = "aFunc()",如果你在Dreamwave 或 Visual Studio 這類有 intelligent senses(忘記是不是這樣拼了)的提示功能的開發工具,你會發現他的提示當中,並沒有onXXXXX,也就是他不處理事件。而且如果想透過JQuery的方式來加入事件跟函式的關連,你會發現,intelligent senses有提示你Enevt可用,但是寫了之後,沒有作用。
你可以用底下的程式碼執行在瀏覽器看看,在body內,有遮掉三行,分別為div, span, iframe,你可以個別打開看看,會發現只有iframe沒有作用。所以,盡量不要在你的架構上「需要去處理iframe」的Event,不然,就不要用iframe了,把該頁面直接寫在這個HTML或PHP就好了。
當然,Google一下,你也會找到解法,比方從iframe內部的頁面傳事件到Parent來,或用AddListener之類的方式,但是有比較困難,暫時還是先避開就好吧。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery (document).ready 教學</title>
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<!-- CSS 區段 -->
<script language="javascript">
$(document).ready(function(e)
{
$("body").click(function(e)
{
alert('Mouse Click body.')
$(".OutScreen").text( "Click body" );
});
$(".button").click(function(e)
{
alert('Mouse Click button.')
$(".OutScreen").text( "Click button" );
});
$(".OutScreen").click(function(e)
{
alert('Mouse Click Screen.')
$(".OutScreen").text( "Click Screen" );
});
});
</script>
<!-- CSS 區段 -->
<style type="text/css">
.OutScreen
{
width:600px;
height:400px;
border:solid;
background:#FF6;
}
</style>
</head>
<body>
這個網頁展示的是在 Body 主體上,放了一個按鈕,跟一個來比較的物件,可發現,iframe是無法處理事件的<br>
<!--<iframe class="OutScreen" >xxxxx</iframe>-->
<!--<span class="OutScreen" >xxxxx</span>-->
<!--<div class="OutScreen" >xxxxx</div>-->
<button class = "button">按鈕</button> <br>
</body>
</html>
FireFox與JavaScript的不相容:MousePosition與MouseEvent
- 先看Event吧
$(".DivDialogTitle").click(function (e) { DivClick(event); });
這種JQuery的寫法,可以把某個TAG物件的Click事件跟某個指定的函式關連在一起,可正常運作,沒有問題。
$(".DivDialogTitle").mousedown(function (e) { DivMouseDown(event); });
但是想把Mouse的事件跟某個指定的函式關連在一起,抱歉,FireFox辦不到(以後會不會更新成可支援,不曉得)
該怎麼做?得回到最原始的HTML語法在Tag中把事件跟函式綁定
<div onmouseup = "DivMouseUp(Event)" >
是的,改成這樣就行了
-------------------------------------------------------------------------------------------
- 再看滑鼠位置吧
事件函式假設如下
function DivMouseDown(e)
{
// 如果 e 是 null (有時候吧,意外發生),就把 e 設定為 window 的 event
if ( !e )
{
e = window.event;
}
var IeMousePosition = e.X;
var FireFoxMousePosition = e.PageX;
}
如上頭所列,想取得Mouse的位置,如果是IE或Chrome或Safari或Opera,你可以這麼用:e.X。如果是FireFox,那你得用e.PageX。
2012年10月31日 星期三
HTML與JQuery處理Event事件的注意事項(二)
延續上一篇,我們來看一下解法,很簡單,只要把註冊函式的內容用$(document).ready(function()包起來就好了,請看下面程式碼的修改,你會發現,現在不論用Script 前區段或Script 後區段都正常了。這是因為$(document).ready(function()是告訴瀏覽器,當整份文件讀取好了之後,才來執行我的Ready()函式,這樣就不會有JQuery想取用,但是該ID物件尚未產生的情形。所以放哪裡都無所謂了。可以自己把<script>放到後段去試看看。
有個觀念要弄清楚,<script>原本的用意,是在HTML需要程式動態產生內容地方,用來做出動態內容,或特殊效果,但是發展至今,JQuery是讓你方便透過ID或CLASS來取用HTML的元件(把一切都物件化了),然而衍生出了「取用的ID的物件尚未產生」的問題,也用了Ready()函式來解決,但是記得,這樣會讓HTML載入之後,就立刻執行Ready()的內容,所以這裡多半用來註冊函式與事件,或宣告函式,而不是直接去操作物件做什麼事情,除非你真的有這種需求,要在HTML載入之後,操作什麼物件。
<!-- Script 前區段 -->
$(document).ready(function()
{
var divClickCount = 0;
$(".btnCount").click(function(e)
{
$(".OutDiv").text( "Count = " + divClickCount );
divClickCount++;
});
});
<!-- CSS 區段 -->
<!-- Body 區段 -->
有個觀念要弄清楚,<script>原本的用意,是在HTML需要程式動態產生內容地方,用來做出動態內容,或特殊效果,但是發展至今,JQuery是讓你方便透過ID或CLASS來取用HTML的元件(把一切都物件化了),然而衍生出了「取用的ID的物件尚未產生」的問題,也用了Ready()函式來解決,但是記得,這樣會讓HTML載入之後,就立刻執行Ready()的內容,所以這裡多半用來註冊函式與事件,或宣告函式,而不是直接去操作物件做什麼事情,除非你真的有這種需求,要在HTML載入之後,操作什麼物件。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery (document).ready 教學</title>
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script>
$(document).ready(function()
{
var divClickCount = 0;
{
$(".OutDiv").text( "Count = " + divClickCount );
divClickCount++;
});
});
</script>
<style type="text/css">
.OutDiv
{
width:600px;
height:400px;
border:solid;
cursor:n-resize;
}
</style>
</head>
<body>
<div class = "OutDiv"></div>
<button class = "btnCount" >Counter</button>
</body>
</html>
HTML與JQuery處理Event事件的注意事項(一)
首先,我們先看一段用HTML處理Event的程式碼,將以下的程式碼貼到Dreamware或是文字編輯軟體,然後執行此HTML檔,在瀏覽器觀看其結果。然後把Script 前區段遮掉,改把Script 後區段打開,然後執行此HTML檔,在瀏覽器觀看其結果。會發現結果是一樣的,沒有任何差別,就是在按鈕Click之後,在DIV裡面顯示被按了幾下。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery (document).ready 教學</title>
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<!-- Script 前區段 -->
<script>
var divClickCount = 0;
function BtnClick()
{
$(".OutDiv").text( "Count = " + divClickCount );
divClickCount++;
}
</script>
<!-- CSS 區段 -->
<style type="text/css">
.OutDiv
{
width:600px;
height:400px;
border:solid;
cursor:n-resize;
}
</style>
</head>
<!-- Body 區段 -->
<body>
<div class = "OutDiv"></div>
<button class = "btnCount" onClick="BtnClick()" >Counter</button>
</body>
</html>
<!-- Script 區段 -->
<!--
<script>
var divClickCount = 0;
function BtnClick()
{
$(".OutDiv").text( "Count = " + divClickCount );
divClickCount++;
}
</script> -->
---------------------------------------------------------------------------------------------------------------
再來,我們改用JQuery來處理事件,改成在Script區段註冊Event函式,並完成函式內容。如以下程式碼,你會發現,這次執行之後,點按鈕不會在DIV顯示訊息了。如果把前區段遮掉,改把後區段打開,發現,就正常了。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery (document).ready 教學</title>
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script>
var divClickCount = 0;
{
$(".OutDiv").text( "Count = " + divClickCount );
divClickCount++;
});
</script>
<style type="text/css">
.OutDiv
{
width:600px;
height:400px;
border:solid;
cursor:n-resize;
}
</style>
</head>
<body>
<div class = "OutDiv"></div>
<button class = "btnCount" onClick="BtnClick()">Counter</button>
</body>
</html>
<!--
<script>
var divClickCount = 0;
{
$(".OutDiv").text( "Count = " + divClickCount );
divClickCount++;
});
</script>
-->
為什麼會這樣?這是因為,如果把Script寫在前面,則網頁載入時,會先載入Script這塊,但此時JQuery所要的ID元件根本就還沒產生,因為還沒執行到Body,所以才會異常。能有什麼解決的方式嗎?有,請看 HTML與JQuery處理Event事件的注意事項(二)
訂閱:
文章 (Atom)