CSS Hacks 和 問題解決
這篇文章包括了8個非常有用的解決辦法, 在進行css設計遇到問題時你就會用到它們.
Author: Chris Thomas ;Translater: Robin
目錄
- 介紹
- 針對瀏覽器的選擇器
- 讓IE6支援PNG透明
- 移除超連結的虛線
- 給行內元素定義寬度
- 讓固定寬度的頁面居中
- 圖片替換技術
- 最小寬度
- 隱藏水平滾動條
一. 介紹
這篇文章包括了8個非常有用的解決辦法, 在進行css設計遇到問題時你就會用到它們.
二. 針對瀏覽器的選擇器
這些選擇器在你需要針對某款瀏覽器進行css設計時將非常有用.
IE6及其更低版本
* html {}
IE7及其更低版本
*:first-child+html {} * html {}
僅針對IE7
*:first-child+html {}
IE7和當代瀏覽器
html>body{}
僅當代瀏覽器(IE7不適用)
html>/**/body{}
Opera9及其更低版本
html:first-child {}
Safari
html[xmlns*=""] body:last-child {}
要使用這些選擇器,請將它們放在樣式之前. 例如:
#content-box {
width: 300px;
height: 150px;
}
* html
#content-box {
width: 250px;
} /* overrides the above style and changes the width to 250px in IE 6 and below */
三. 讓IE6支援PNG透明
一個IE6的Bug引起了大麻煩, 他不支援透明的PNG圖片.
你需要使用一個css濾鏡
*html #image-style {
background-image: none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="fil
ename.png", sizingMethod="scale");
}
四. 移除超連結的虛線(僅對FF有效)
FireFox下,當你點選一個超連結時會在外圍出現一個虛線輪廓. 這很容易解決, 只需要在標籤樣式中加入 outline:none .
a{
outline: none;
}
五. 給行內元素定義寬度
如果你給一個行內元素定義寬度,那麼它只是在IE6下有效. 所有的HTML元素要麼是行內元素要麼就好是塊元素. 行內元素包括: <span>, <a>, <strong> 和 <em>. 塊元素包括<div>, <p>, <h1>, <form>和<li> . 你不能定義行內元素的寬度, 為了解決這個問題你可以將行內元素轉變為塊元素.
span { width: 150px; display: block }
六. 讓固定寬度的頁面居中
為了讓頁面在瀏覽器居中顯示, 需要相對定位外層div, 然後把margin設定為auto.
#wrapper {
margin: auto;
position: relative;
}
七. 圖片替換技術
用文字總比用圖片做標題好一些. 文字對螢幕閱讀機和SEO都是非常友好的.
HTML:
<h1><span>Main heading one</span></h1>
CSS:
h1 { background: url(heading-image.gif) no-repeat; }
h1 span {
position:absolute;
text-indent: -5000px;
}
你可以看到我們對標題使用了標準的<h1>作為標籤並且用css來將文字替換為圖片. text-indent屬性將文字推到了瀏覽器左邊5000px處, 這樣對於瀏覽者來說就看不見了.
關掉css,然後看看頭部會是什麼樣子的.
八. 最小寬度
IE6另外一個bug就是它不支援 min-width 屬性. min-width又是相當有用的, 特別是對於彈性模板來說, 它們有一個100%的寬度,min-width 可以告訴瀏覽器何時就不要再壓縮寬度了.
除IE6以外所有的瀏覽器你只需要一個 min-width: Xpx; 例如:
.container {
min-width:300px;
}
為了讓他在IE6下工作, 我們需要一些額外的工作. 開始的時候我們需要建立兩個div, 一個包含另一個:
<div class="container">
<div class="holder">Content</div>
</div>
然後你需要定義外層div的min-width屬性
.container {
min-width:300px;
}
這時該是IE hack大顯身手的時候了. 你需要包含如下的程式碼:
* html .container {
border-right: 300px solid #FFF;
}
* html .holder {
display: inline-block;
position: relative;
margin-right: -300px;
}
As the browser window is resized the outer div width reduces to suit until it shrinks to the border width, at which point it will not shrink any further. The holder div follows suit and also stops shrinking. The outer div border width becomes the minimum width of the inner div.
九. 隱藏水平滾動條
為了避免出現水平滾動條, 在body里加入 overflow-x:hidden .
body { overflow-x: hidden; }
當你決定使用一個比瀏覽器視窗大的圖片或者flash時, 這個技巧將非常有用.
相關文章
- css高度塌陷問題解決方法CSS
- 解決CSS position:fixed 相容問題CSS
- CSS解決文字溢位問題CSS
- 【轉】css解決相容的問題CSS
- CSS中越界問題經典解決方案CSS
- 解決「問題」,不要解決問題
- Gulp解決釋出線上檔案(CSS和JS)快取問題CSSJS快取
- Ubuntu 16.04 Vysor 破解 和黑屏問題解決+ 閃屏問題解決Ubuntu
- DIV+CSS相容解決DIV最大寬度和最小寬度問題CSS
- 解決問題的方法和途徑-問題管理
- 在CSS中解決內容過長的問題CSS
- 最近解決的幾個DIV+CSS的問題CSS
- maven的編碼問題、解決和疑問Maven
- RocetMQ搭建攻略和問題解決之道MQ
- 解決問題
- 純 CSS 解決自定義 CheckBox 背景顏色問題CSS
- CSS小問題與解決方案記錄(長期更新)CSS
- 能用HTML/CSS解決的問題就不要使用JSHTMLCSSJS
- less中解決CSS3的calc衝突問題CSSS3
- 發現問題,解決問題
- 解決Classnotfound和Basetableorviewnotfound:1051問題View
- yum問題解決
- sqlitedabaseislocked問題解決SQLite
- dump 解決問題
- 解決VUE引用element不能顯現元件css樣式問題Vue元件CSS
- css的position-relative相容問題與解決辦法CSS
- 前端每日一問--JS 和 CSS 阻塞問題前端JSCSS
- netty 解決粘包 和 分包的問題Netty
- PNP的子集和問題終於解決了
- 用CSS hack技術解決瀏覽器相容性問題CSS瀏覽器
- 提問題比解決問題更重要
- SERVICE問題解決方法
- 解決高度塌陷問題
- qeephp 解決跨越問題PHP
- bg配置問題解決
- git ssl 問題解決Git
- AIX問題解決思路AI
- WAS startnode hang問題解決