1. 程式人生 > >web前端工程師工作中遇到難以解決的問題

web前端工程師工作中遇到難以解決的問題

1).margin-top,margin-bottom不能正常顯示時
一.有時會遇到外層中的子層使用margin-top不管用的情況;這裡我們需要在子層的前後加上一個
   div{height:0;overflow:hidden;}
例
CSS樣式表中:
#box {background-color:#eee;}
#box p {margin-top: 20px;margin-bottom: 20px;text-align:center;}
解決方法:在P標籤前後各加2個空的div:<divstyle="height:0;overflow:hidden"></div>
二.網頁中頭部,中部,底部的居底部有時給個margin-bottom:10px;不管用也是要給個清除屬性的.clear{clear:both;font-size:0;line-height:0;}在底部<div id="footer"></div>下加個<div></div>
2).div層中高度自適應問題
    網頁前端科技人員在設計網頁時不可能知道客戶在要他們自己的網站內容頁里加多少文字或圖片內容
    這時我們就不能規定div層的高度,為此應寫成min-height:200px;height:auto!important;height:
    200px;overflow:visible;這樣ie7,ff,ie6瀏覽器的高度自適應問題就解決了,這些在
    
http://www.xueshengshu.com/
網站中用到最多了。 3).div層中子層的居底部對齊問題 div中的定位問題有很多也很麻煩,但弄懂了就OK了,在一個大的div層中如何讓子層的內容居底部 對齊就涉及到了position定位問題; 例 div層#box{position:relative;border:1px solidred;width:600px;hegiht:400px;} div子層#box .wrap{position:absolute;bottom:0;border:1px dashedblue;width:200px;height: 100px},最近寫的網站中
http://www.msgc.net.cn/
就用到了 4).div層中清除clear屬性的一小部分應用 在div中一個大的層裡面有很多子層,若是加上邊框在ie7、ie6中或許會正常顯示,但是在ff中可能 只會成一條線了,此時在最外層的後面加上<div style="clear:both"></div>或者設 .wrapfix:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }後在每個浮動外框呼叫wrapfix;http://www.xueshengshu.com
學生書網裡用到最多了。 5).解決IE8下div移位、錯位等相容性問題 在<head>標籤後面的第一句話加上<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />就OK了 6).單行文字居中與字型樣式問題 在div中一個層中只有一行文字,要讓這層中的文字居中,可設line-height的高度和層的高度一樣,注意這一層中的文字不能換行,此外,設了line-height時再給定字型樣式font:bold 14px "宋體";這時要把font:bold 14px "宋體";放在line-height的前面,否則字型樣式不顯示文字也不居中;或者將font:bold 14px "宋體";改成font-size:16px;font-weight:bold;font-family:"宋體";就OK了。 7).滑鼠滑上去的特殊效果 往往為了達到顯眼的效果,我們會寫到一些好看的效果,方法一在樣式表中寫:ul li a{border:1px solid red;}ul li a:hoverimg{filter:alpha(opacity=40在ul標籤中呼叫即可方法二:在樣式表中寫上:.hover img{filter:alpha(opacity=40);}在div中呼叫onmouseover="this.className='hover'"onmouseout="this.className=this.classtype"即可 8).IE6中高度不對問題 今天在div中給定了高度為1px,其它瀏覽器顯示正常,可是ie6中顯示的高度就不對了,這時我給樣式表中加了個font-size:0px;line-height:0px;就好了 9).ul在外框裡margin-top不起作用的問題 在div大框子裡用了ul作導航的時候為了合ul層居中顯示,設ul的樣式表為margin-top:-15px不起作用了,此時應該將div大框設定高度後給個line-height與height一樣的高度,ul層就自動居中了。 例如http://www.hopes-home.cn/main.aspx 10).ff中margin-top有時不起作用的問題 今天頭暈腦漲的把這問題給解決了,這幾天寫標網都有累似問題,可是一直都是換個寫法解決的,今天的這個辦法也不只可行試試還是可以的,在一個div外框層中給個寬度例如,#div_wrap{width:280px;height:100%;} 其次在這個框子裡設一個.div_top{widh:100%;font:bold12px "宋體";height:24px;line-height:24px;} .div_center{border:1px solid#dbdbdb;border-top:none;background:#fff;min-height:460px !important;height:auto!important;height:460px;overflow:visible;} 最後在這個div_center裡套個ul li時經常會在ff中出問題,也就是在div_top與div_center中莫名的多了幾個畫素的空格,這時給ul樣式表設個display:inline-table即可; 11).list-style-image的用法 div中經常用到新聞列表前面有圖示的樣式,有兩種簡單的方法 一.可以寫成ul.menu{width:100%;} ul.menuli{background:url(em_img/small_icon.jpg) 5px center no-repeat;list-style-position:inside;padding-left:18px;}即可在各瀏覽器正常顯示 二. 可以設ul.menu{width:80%;} ul.menuli{list-style-image:url(em_img/small_icon.jpg); } 此時新聞列表前的小圖示即可在ie6,ie7,ie8,ff中都正常顯示但,ie6需要不斷的重新整理才能正常顯示小圖示; 12). IE6 li:hover相容問題 <scripttype="text/javascript"><!--//--><![CDATA[//><!-- sfHover =function() { var sfEls = document.getElementById("nav").getElementsByTagName_r("LI"); for (var i=0; i<sfEls.length; i++) { sfEls[i].onmouseover=function() { this.className+=" sfhover"; } sfEls[i].onmouseout=function() { this.className=this.className.replace(new RegExp(" sfhover\b"), ""); } } } if (window.attachEvent) window.attachEvent("onload", sfHover); //--><!]> </script> 13).ie6下支援position:absolute; 最近寫一個簡訊平臺的頁面用到的底部固定的層,在ff和ie7,ie8下都是好的,可到ie6下就不行了,轉了整個地球終於出來了: background-attachment:fixed; } #bottomNav {background-color:#096; z-index:999; position:fixed; bottom:0; left:0;width:100%; _position:absolute; _top: expression_r(documentElement.scrollTop+ documentElement.clientHeight-this.offsetHeight); overflow:visible; } 樣式表中呼叫即可!詳細請見“高度自適應螢幕尺寸!” 14).border:none;與border:0;的區別 1.效能差異 【border:0;】把border設為“0”畫素雖然在頁面上看不見,但按border預設值理解,瀏覽器依然對border-width/border-color進行了渲染,即已經佔用了記憶體值。 【border:none;】把border設為“none”即沒有,瀏覽器解析“none”時將不作出渲染動作,即不會消耗記憶體值。 2.相容性差異 相容性差異只針對瀏覽器IE6、IE7與標籤button、input而言,在win、win7、vista 的XP主題下均會出現此情況。 【border:none;】當border為“none”時似乎對IE6/7無效邊框依然存在 【border:0;】當border為“0”時,感覺比“none”更有效,所有瀏覽器都一致把邊框隱藏 總結: 1. 對比border:0;與border:none;之間的區別在於有渲染和沒渲染,感覺他們和display:none;與visibility:hidden;的關係類似,而對於border屬性的渲染效能對比暫時沒找測試的方法,雖然認為他們存在渲染效能上的差異但也只能說是理論上。 2. 如何讓border:none;實現全相容?只需要在同一選擇符上新增背景屬性即可 對於border:0;與border:none;個人更向於使用,border:none;,因為border:none;畢竟在效能消耗沒有爭議,而且相容性可用背景屬性解決不足以成為障礙。 15).ie下。png的圖片不會有灰色背景出現 注:首推PNG8,即使在IE6中它的透明背景也能被正確顯示。PNG8使用的技巧是,輸出時把“雜邊”設定為和背景接近的顏色 1.幾經周折終於把ie6下.png有色圖問題解決了,原來IE6.0原本支援png8的索引色透明度,但不支援png或8位以上的alpha 透明度,在IE6.0下,非PNG8格式的透明圖片部分,會顯示為淡淡的灰綠色。在網頁中頭部加個程式碼<!--[if IE 6]> <script type="text/javascript" src="http://zmingcx.com/wp-content/themes/HotNewspro/js/pngfix.js"></script> <script src="js/DD_belatedPNG.js"></script> <script> DD_belatedPNG.fix('.png_bg'); </script> <![endif]-->即可! 2.在樣式裡寫#png-container{ width: 300px; height: 150px; background: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../imgs/logoB.png',sizingMethod='crop');border:1px solid red;display:block; }到頁面中呼叫<div id="png-container "> <img src="imgs/logoB.png" alt="" /> </div>注意圖片要儲存為png-8格式的才行! 3. 將背景圖片寫成style="_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../imgs/dialog/da_fr.png',sizingMethod='scale');background:url(../imgs/dialog/da_fr.png) no-repeat!important;_background: none transparent scroll repeat 0% 0%;);"即可。ff、ie7、ie6下都不會有灰色背景了,這個怎麼又失靈了,唉害得我糾結了好幾天!。 16).表格自動換行 唉,最討厭表格了,可是編輯軟體平臺有很多報表要用到表格來寫,搞的我鬱悶半死,要想讓表格裡td的內容到了一定寬度自動換行就要先設一個全域性樣式table{table-layout:fixed;} td{word-break: break-all; word-wrap:break-word;}; 17).iframe高度自適應 給div加一個樣式style="position:relative;" 再給iframe 加一個樣式如下,只有把iframe定義成絕對定位後,才能自適應高度 style="position:absolute; height:100%;" 18).ie8下input的bug 我滴個孩來!一個小的兩個input輸入框,一個是文字框,一個是按鈕,卻怎麼也接不到一起去,可把我給急壞了,這小問題花了我差不多一下午的時間,糾結半天終於給弄出來了,但不知原因,這麼寫就對了! 要定義input{ vertical-align:middle;}即可! 19).按鈕的連結路徑 編寫網頁前臺時會碰到按鈕的連結路徑怎麼給的問題!只要在button里加個onclick="window.location.href='orderCheck.htm‘"即可! <button type="button"onclick="window.location.href='orderCheck.htm'">Add toCart</button> 20).圖片加alt好處 網頁中<img src=""alt=""/> 中的alt是很重要的,這涉及到網頁的親和力問題(http://www.yixieshi.com/ucd/9345.html),網頁中的圖片若是不加alt在圖片沒加載出來的時候會什麼資訊也看不到,加了alt則在載入不出來圖片的時候顯示圖片的資訊便於使用者檢視資訊! 21). 去除chrome瀏覽器下input和textarea點選選中框 取消chrome下input和textarea的聚焦邊框: input,button,select,textarea{outline:none} 取消chrome下textarea可拖動放大: textarea{resize:none} 最後,寫在一起,重置input和textarea的預設樣式: input,button,select,textarea{outline:none} textarea{resize:none}   21).頁面中流動條問題 開啟一個空白頁面,觀察瀏覽器右側,會發現IE瀏覽器會有一段滾動條的槽道,而Firefox瀏覽器下沒有。 22). 手機, Adroid2.2, 平板電腦, 瀏覽器, mobile safari 最近給平板電腦做頁面,經歷了一番探索,搞定了。 下面來說說我的解決方案。 測試裝置:    GT-P1000 三星平板電腦(其實為大號手機)    作業系統:android2.1    瀏覽器:Mobile Safari/533.1    User Agent列印結果:        Mozilla/5.0 (Linux; U; Android 2.1;zh-cn; GT-P1000 Build/FROYO) AppleWebKit/533 .1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 1. 在jsp頁面頂上增加以下文件型別宣告: Java程式碼 <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">       如果不加上文件型別宣告的話,在瀏覽器裡開啟頁面後,頁面會根據移動裝置螢幕的大小自動縮放頁面,並且當點選輸入框時,頁面會自動放大,特別難看。加上宣告之後,頁面會展現原始大小,手指也可以拖動螢幕進行頁面放大。 2. 普通的網頁字型大小,在移動裝置瀏覽器上看到的效果是字型變小 所以css的字型大小要做大一點。 我是研究了雅虎移動版的網站: http://hk.m.yahoo.com/ 23).頁面中流動條問題   網頁中改變input輸入框的背景時,當輸入的文字超過一定數字時,背景圖片會跑,這時只要限定input的maxlength就行了!   24).input在google瀏覽器下若用背景圖片寫並且點選上去有效果的話會掉下來 解決的辦法是將input裡的value=""中加一個空格! 即寫成value=" " 25).解決ff下面td的換行問題<tablestyle="table-layout:fixed" width="200"> <tr> <td width="25%" style="word-break :break-all; overflow:hidden;">abcdefghigklmnopqrstuvwxyz1234567890</td> <td width="75%" style="word-wrap :break-word; overflow:hidden;">abcdefghigklmnopqrstuvwxyz1234567890</td> </tr> </table> 26)巧妙clearfix解決css浮動問題 如何用clear來解決css浮動問題,應該是眾多前端開發人員所關心的問題,是clear還是clearfix,其實我們最終一個目的就是讓浮動產生更多的影響,最為一個前端人員,我們有必要深入研究和探討... 萬能float閉合,得知很多朋友都在使用下面的通用解決辦法: 1.clear{clear:both;height:0;overflow:hidden;} 上訴辦法是在需要清除浮動的地方加個div.clear或者br.clear,我們知道這樣能解決基本清浮動問題。但是這種方法的最大缺陷就是改變了html結構,雖然只是加個div。   最優浮動閉合方案(這是我們推薦的): 1.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden} 2.clearfix{*+height:1%;} 用法很簡單,在浮動元素的父雲素上新增class="clearfix"。你會發現這個辦法也有個弊端,但的確是小問題。改變css寫法就ok了: 1.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden} 2.clearfix{*+height:1%;} 以上寫法就避免了改變html結構,直接用css解決了。 很拉轟的浮動閉合辦法: 1.clearfix{overflow:auto;_height:1%} 這種辦法是我看國外的一篇文章得到的方案,測試了,百試不爽,真的很簡單,很給力。喜歡的同學也可以試試這個辦法。   這種方法是端友radom提供的,測試通過: 1.clearfix{overflow:hidden;_zoom:1;} chrome下input[type=text]的placeholder不垂直居中的問題解決 line-height: normal; line-height: 22px\9; 去掉超連結或按鈕點選時的虛框線 a,a:hover,input,button{outline:none;blur:expression_r(this.onFocus=this.blur());} input:active {outline:none;}input::-moz-focus-inner{border:0px}   修改select預設的樣式 select{background:none;width:400px;border:1pxsolid #d8d8d8;} option{vertical-align: middle;}