2013年1月29日 星期二

CSS TAB 頁籤 - PG出來面對系列

雖然我自認我是 程式設計師
Programmer pg = new Programmer();
但是老闆認為我是 泛型設計師
Programmer<美工> pg = new Programmer<美工>();
吸ㄟ死ㄟ死表示:呵呵呵




需求很簡單 一個 TAB 頁籤
條件是 自適寬度


常見的有兩種 1. ul li 2. div

<head>
    <style>
        /*消除 body 預設 margin padding*/
        body
        {
            margin: 0;
            padding: 0;
        }

        #divTab, #liTab
        {
            min-width: 300px;
        }

            #divTab div, #liTab li
            {
                width: 20%;
                float: left;
                background-color: #ccc;
                border: 1px solid #000;
                margin: 0;
                padding: 0;
            }
        /*消除 li 預設 margin padding*/
        #liTab
        {
            margin: 0;
            padding: 0;
        }

        .clear
        {
            clear: both;
            height: 100px;
        }
    </style>
</head>
<body>
    <div class="clear"></div>
    <div id="divTab">
        <div>A</div>
        <div>B</div>
        <div>C</div>
        <div>D</div>
        <div>E</div>
    </div>
    <div class="clear"></div>
    <ul id="liTab">
        <li>A</li>
        <li>B</li>
        <li>C</li>
        <li>D</li>
        <li>E</li>
    </ul>
</body>



但是這個結果令人不悅 1. 兩個 tab 中間的線是 2px 2. 最後一個 Tab 被擠下去



這是因為 border 1px 撐開了寬度 於是我們把 margin 改為 -1px

            #divTab div, #liTab li
            {
                width: 20%;
                float: left;
                background-color: #ccc;
                border: 1px solid #000;
                margin: -1px;
                padding: 0;
            }



現在好多了 就這樣發佈吧



但是牢版跟剋扈卻說 下面這個捲軸我不想看到



我直覺會想用 overflow: hidden; 但是我設了 min-width 這樣會使得小於最小寬度的時候 也沒有捲軸 這並不是我所要的


這時候回歸原點 為何會冒出這個捲軸 明明都把 margin -1 了
觀察一下 我就像華生突破了盲點 因為網頁 預設的起點是在左上角的 起點左方的內容不會顯示 但是右方則無限制
我看不到最左邊的 border (起點之外) 但是可以看到最右邊的 border
解決的方法很簡單 就讓這條 border 蒸發就好了


                #divTab div:last-child, #liTab li:last-child
                {
                    border-right-style: none;
                }

2013年1月22日 星期二

signalR 實驗紀錄簿 第六彈 之 signalR RC2 官方範例編譯方法完全攻略

其實早在 RC1 的時候 我就編譯失敗了 但是當時不求甚解不以為意

後來 RC2 出了 準備好好當個乖孩子 慢慢學範例

範例就大搖大擺放在官網首頁

載完只有輕巧的 10.3 MB

但是 立馬碰壁 瀟灑的拋出 一堆 錯誤跟警告



小弟什麼都信 就是不信邪 最後還是被我嘗試錯誤法擊破



首先是這個 怪怪的 katana 資料夾 裡面是空的 但是 方案總管裡面卻有專案 而且全都無法使用



基於 估狗無解我便無解 定律 搜尋關鍵字 signalr katana

第一個條目裡面 原作大大帥氣的表示 去看 readme



於是我就乖乖的看 readme 然後果然! 果然還是沒說 katana 是啥呀 -.-"



嘗試錯誤法 找過了一堆日本刀 之後發現了這個

原來之前看到的 OWIN 是 Open Web Interface for .NET 至於他是什麼 又能幹嘛 待神人解答

載點:http://katanaproject.codeplex.com/SourceControl/changeset/view/683c84d8c0ef



下載完發現異常輕巧 639 KB

這是假象 請執行 build.cmd 會跑一陣子 跑完之後 打開專案編譯過後 就暴肥成 98.6 MB



然後把這 98.6 MB 丟進 katana 資料夾 再編譯一次

登登登~ 你就成功拉 總計 32個專案 220 MB







        /** * 致终于来到这里的勇敢的人:
            你是被上帝选中的人,英勇的、不辞劳苦的、不眠不修的来修改
        我们这最棘手的代码的编程骑士。你,我们的救世主,人中之龙,
        我要对你说:永远不要放弃,永远不要对自己失望,永远不要逃走,辜负了自己。
        永远不要哭啼,永远不要说再见。永远不要说谎来伤害自己。 */

2013年1月16日 星期三

CSS Attribute Selector

身為毫無美感可言的 PG 比起 C# 更畏懼 CSS
因為怎麼弄都很醜
久而久之 CSS 只會弄弄顏色 改改大小
直到 J蛞蝓 問世 可以用 CSS Selector 來選元素 根本神技術
這時候就發現當年老師在教 CSS 我沒有在聽 現在很多時候繞了一圈選元素 根本多餘
別人我不知 小弟本身 就是 ID 跟 CLASS 打天下
選不到的 就給他 ID 跟 CLASS 有何不可
但是有時候 元素的差異是在 Attribute 以前我都是 if ($('#OOXX').attr('fooAttr') == ??)
直到我看了 wikipedia 我才大澈大悟 根本沒有善用 J蛞蝓 - 使用 CSS Selector 這個強大之處

以下引用自 http://zh.wikipedia.org/wiki/層疊樣式表

選擇器

於CSS裡現在共有5種基本選擇器(Basic Selectors)︰[1]
  • 元素名稱 —— elementname
  • class —— .elementname
  • id —— #elementname
  • 通用(所有) —— * ns|* *|*
  • 屬性 —— [attribute]
屬性裡共有7種,如下︰
代碼意思
[attribute]元素有attribute的屬性。
[attribute="value"]屬性attribute裡是value
[attribute~="value"]屬性attribute裡使用空白分開的字串裡其中一個是value
[attribute|="value"]屬性attribute裡是value或者以value-開頭的字串
[attribute^="value"]屬性attribute裡最前的是value
[attribute$="value"]屬性attribute裡最後的是value
[attribute*="value"]屬性attribute裡有value出現過至少一次

[編輯]組合選擇器

於CSS里現在共有4種組合選擇器(Combinators):
  • 下層元素 —— A B,選擇於下層的元素B 後代選擇器
  • 相鄰元素 —— A + B,選擇相鄰的元素B(不能被任何元素相隔)相鄰同胞選擇器
  • 同父層元素 —— A ~ B,選擇同父層的元素B
  • 子層元素 —— A > B,選擇下一層的元素B 子選擇器將樣式作用於元素的直接後代

[編輯]偽元素選擇器

偽元素是於CSS裡製造出來的假HTML元素。現在於CSS裡共有5種偽元素選擇器(Pseudo-elements)︰
  • :after 或 ::after
  • :before 或 ::before
  • :first-letter 或 ::first-letter
  • :first-line 或 ::first-line
  • ::selection

[編輯]偽類選擇器

偽類是選擇元素不同的狀態,如被按下或鼠標在元素上面。目前共有很多不同的偽類選擇器,如︰
  • :link —— 超連結未被存取
  • :visited —— 超連結被存取過
  • :hover —— 鼠標在元素上面
  • :active —— 鼠標在元素上按著
  • :focus —— 焦點在元素上
  • :target —— 元素被URL標記

2013年1月8日 星期二

signalR 實驗紀錄簿 第五彈 之 內神通外鬼之 webForm 通 winForm 改

有親愛的朋友留言指出



小弟素來親切善良只要心情好有求必應

話說我還真沒試試 到底 RC 版 webForm 通 winForm 改了啥 這就來瞧瞧



網頁的部分 跟先前第三彈第四彈提到的重點差不多

1.務必設定 RouteTable.Routes.MapHubs();

2.使用 Hub 的時候 多一層 server 跟 client

EX:


            conn.client.sayChat = function () {
                //TODO..
            }

            $('#Send').click(function () {
                conn.server.chat($('#Text1').val());
            });

winForm 的部分 也沒啥大變 之前的代碼可以繼續用 唯有傳遞的 JSON 格式變了 如圖

修改一下即可 wwwwwwwwwwwwwwwwwwwwww 有圖有真相





飯粒黨:http://www.mediafire.com/?jc0k1mbajr0a51g