圖片取代文字圖片超連結桌機可行但手機會無法點選之問題

<a>總統府</a>

a{
height:1px;
overflow:hidden;
padding:30px 0 0 0;
background:url(image/icon.jpg);
}

以上設定在桌機呈現上 a是可以點選的,滑鼠移上去整個padding的區塊也會是有hover效果、也可以點擊的。但是換成行動裝置(手機、平板),點選icon會沒有反應。也就是在行動裝置上hover的範圍只有height:1px;不含padding的範圍。

改成以下在手機上就可以點

a{
height:31px;
overflow:hidden;
text-indent:-1000px;
background:url(image/icon.jpg);
}

就是還是要用縮排的方式隱藏文字。

postion:fixed;表頭設定fixed且希望無論視窗大小都置中的作法

小正正網站有實作範例,先看範例:上下左右都置中的區塊。簡單說明實作方法(因為我要處理的主要是左右置中,上下置中的理論相同就不重複。

  1. 由於fixed的定位是認瀏覽器,而不認父元素的position,所以先使用left:50%的方式。讓定位點定在瀏覽器的中間(也就是不管螢幕放到縮小,物件都會固定在瀏覽器的中間。
  2. 然後再使用margin-left,設定負值拉回。因為如果畫面都要置中,一定都會將要置中的物件設定一個寬度,例如1000px,那這個時候只要向左拉回500px即可。
  3. 因為我要處理的header我希望他寬度可以延伸,所以我設定的時候把總寬設定成2000px,因此往左要拉回1000px。

小正正有提供positioniseverything的網站,很值得參考喔!

處理float造成父元素無法撐開的方法

有三種方法,這三種方法暫時不管IE的適用性,以firefox、google等較遵循W3C的瀏覽器來看。

  1. overflow:
    優點是一行就可以解決。缺點是如果版面上有的元素的定位希望超出版面之外的時候,就會被隱藏
  2. float:
    父元素設定寬度搭配float,缺點是父元素以外的東西要在加clear或用別的方式避免掉父元素float造成問題
  3. after:
    設定方法如下(參考文章http://www.positioniseverything.net/easyclearing.html/),此處clearfix為父元素的class

      .clearfix:after {
        content: ".";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
        }
    缺點是比較囉嗦,但是如果定位要定在框框以外不會被隱藏,也能夠避免父元素設float造成的更多問題。

如何處理Flash圖層會蓋過div的問題

問題描述:Flash不管放哪,即使div的z-index比較大,Flash還是會蓋過div

原因:官方解釋 A Flash movie in a layer on a DHTML page containing several layers may display above all the layers,  regardless of the stacking order (”z-index”) of those layers.
但是,只有設定z-index是沒有用的。網路上有很多種方法,我是用這個方法處理

  1. 要加上<param name=’wmode’ value=’transparent’>,這個是讓flash可以有透明背景的屬性,加了這個之後,z-index也才會生效,不然會永遠蓋再最上面。
  2. 在embed標籤內加上wmode=”transparent”,這個是針對使用embed標籤的瀏覽器(例如IE),效果跟上面一樣,只是用的標籤不同。
  3. 然後用div把flash包住之後,設定z-index,要設定小一點
  4. 把要壓在flash之上的設定z-index,設定大一點。
  5. 還是不行就加上position:absolute;