一、複選框與文字的偏移問題
通常狀況下,複選框的小方框會與文字誤差2px,以下所示:
爲了解決該問題,須要在頁面(不能再單獨的CSS中寫)上添加vertical-align:-2px;
javascript
<label title="笑話"><input name="vip0" type="checkbox" value="" style="vertical-align:-2px" /> 笑話</label>
效果以下:
css
二、png圖片在IE8及如下的IE瀏覽器中出現黑邊(對opacity
動態操做時)
主要緣由:IE8如下的瀏覽器bug,動態修改透明度,就會出現黑邊問題。
解決方案:
(1) 設置容器的background-color
背景顏色
(2)給容器加一個zoom:1;
IE修改透明度,不是經過css屬性,而是經過filter
濾鏡,因此想要理解這個bug,就要從filter濾鏡上找緣由。filter
做用於一個對象時,這個對象必須是有形體,也就是必須是layout,而IE存在一個很特殊的屬性:hasLayout ,這個屬性能夠 賦予容器成layout,hasLayout這個屬性有些詭異,你沒法經過直接寫css啓動,而必須經過javascript啓動,其實還有一種方法能夠啓動,就是使用特殊的css屬性,變相將hasLayout
啓動,這個css屬性就是 zoom (其餘的屬性好比display:inline-block、float:left
等也行,而只有zoom沒什麼反作用)html
三、背景自適應
(1)讓背景圖片和網頁內容都浮動,背景圖片在最底下便可!java
<!--背景圖片--> <div id="bodybg"> <img src="images/body_bg.png" class="stretch" alt="" /> </div> <!--背景圖片 end--> <!--ajc-wrapper--> <div class="ajc-wrapper"> <!------全部網頁內容-----------------> </div> <!--ajc-wrapper end--> **CSS設置** /*--------------背景圖片-------------*/ #bodybg { width: 100%; position: absolute; left: 0px; bottom: 0px; z-index: -10; } .stretch { width:100%; } /*--------------背景圖片 end-------------*/ /*---------------ajc-wrapper-----------------*/ .ajc-wrapper{ width:100%; height:100%; overflow-y:scroll; position: absolute; left: 0px; bottom: 0px; z-index: 1000; } /*---------------ajc-wrapper end-----------------*/
(2)方法2git
body { background: url(/img/bg.jpg) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; }
來自 https://gist.github.com/isayme/3ae56568728675d3fddbgithub
四、浮動層上下全部居中web
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無標題文檔</title> </head> <style type="text/css"> .sty{ position:absolute; width:300px; height:200px; left:50%; top:50%; margin-left:-150px; //寬度的一半 margin-top:-100px; //高度的一半 background-color:#fefefe; border:dashed 3px #666; } </style> <body> <div class="sty"> 111 </div> </body> </html>
五、<!DOCTYPE html>很重要
噩夢開始的源頭:以前寫html或者jsp頁面,歷來不注意doctype的聲明,也不太明白doctype的做用。直到最近碰到了一個很是奇葩的bug:某一個頁面在IE7和8,Chrome,ff等下正常,可是在IE9下顯示有問題,我就開始找啊找,各類調試,各類log,終於在httpWatch裏邊找到了答案:DOCTYPE未聲明。因而我給頁面添加了<!DOCTYPE html>
,果真奏效了。
下面我就儘量簡潔扼要的說一下DOCTYPE的做用和用法。
1做用:聲明文檔的解析類型(document.compatMode
),避免瀏覽器的怪異模式。document.compatMode
:BackCompat
:怪異模式,瀏覽器使用本身的怪異模式解析渲染頁面。CSS1Compat
:標準模式,瀏覽器使用W3C的標準解析渲染頁面。
這個屬性會被瀏覽器識別並使用,可是若是你的頁面沒有DOCTYPE的聲明,那麼compatMode默認就是BackCompat,
這也就是惡魔的開始 -- 瀏覽器按照本身的方式解析渲染頁面,那麼,在不一樣的瀏覽器就會顯示不一樣的樣式。
若是你的頁面添加了<!DOCTYPE html>
那麼,那麼就等同於開啓了標準模式,那麼瀏覽器就得老老實實的按照W3C的
標準解析渲染頁面,這樣一來,你的頁面在全部的瀏覽器裏顯示的就都是一個樣子了。
這就是<!DOCTYPE html>
的做用。
2 使用:<!DOCTYPE html>
2.1 使用也很簡單,就是在你的html頁面的第一行添加"<!DOCTYPE html>
"一行代碼就能夠了
2.2 jsp的話,添加在<%@ page %>
的下一行。
2.3 不用區分大小寫哦
想了解更多,能夠參考:
w3c : http://www.w3school.com.cn/tags/tag_doctype.asp
博文:http://i.wanz.im/2010/05/28/why_doctype_html/算法
六、Css2如何實現背景透明文字不透明div {background: rgba(200, 54, 54, 0.5);
主要用於手機chrome
七、頁面佈局
(1)兩列布局,左列固定,右列可伸縮
A.左列設置向左浮動和固定寬高,右列只有高度express
<style type="text/css"> .left{ background-color: #E8F5FE; border: 1px solid #A9C9E2; float: left; height: 300px; width: 200px; } .right{ background-color: #F2FDDB; border: 1px solid #A5CF3D; height: 300px; } </style> <div class="left">left</div> <div class="right">right</div> B.若要兩欄之間有間隙,則須要設置右欄的margin-left(左側外邊距) margin-left :左側width + 間隙寬度
(2)三列布局,左右固定,中間可伸縮(有最小寬度)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" /> <title>3列布局</title> <style type="text/css"> body { font-family: Verdana, Arial; margin: 0; font-size: 12px; } #container{ /*添加外層容器,用來設置最小寬度*/ min-width:975px; /*For FF*/ _width:expression((document.documentElement.clientWidth||document.body.clientWidth)<1000?"975px":"auto"); /*For IE6*/ background-color:#fff; border:1px solid #33CCFF; } #dyhead { margin-bottom: 10px; } #dyleft { float: left; width: 200px; height:300px; } #dycenter { margin: 0 210px; height:300px; } #dyright { float: right; width: 200px; height:300px; } #dyfoot { margin-top: 10px; clear: both; } div { background-color: #eee; border: dotted 1px green; } </style> </head> <body> <div id="container"> <div id="dyhead">頭部(3列布局,左右兩欄寬度固定,中間欄自適應寬度)</div> <div id="dyleft">左欄固定寬度爲200px</div> <div id="dyright">右欄固定寬度爲200px</div> <div id="dycenter">中間自適應寬度</div> <!--注意這裏,中間3列的div的順序不是「左中右」,而「左右中」,中間一列寫在最後--> <div id="dyfoot">底部</div> </div> </body> </html>
八、表格
一、固定表格表頭
主要方法:表格外面套一個div,用div來實現滾動(x方向超過隱藏)。同時,table
必須有 border-collapse: collapse;
(合併表格邊框)。
把表頭設置爲相對定位,提升層級,使其浮在上邊,不發生滾動
<meta http-equiv="X-UA-Compatible" content="IE=7" /> <style type="text/css"> div{ overflow-y: scroll; overflow-x: hidden; height: 100px; margin-top: 5px; margin-left: 12px; padding-top: -2px; padding-bottom: 5px; border: 3px solid #009933; } table{ width: 100%; border-color: #d2f1ac; border-collapse: collapse; border-top: 0px solid #ffffff; } .fixedtd th{ position: relative; z-index: 1; background: #009933; text-align: center; } </style>
九、CSS中用到的@ (媒體查詢、引入字體)
媒體查詢
@media screen and (max-width:980px) { ..... } <link rel="stylesheet" media="screen and (orientation : portrait ) and (min-width:800px) " href="portrait-screen.css" /> @font-face{ font-family:FontName; src : url( URL ); } @import url("photo.css") screen and (man-width:360px);
在當前樣式中按條件引入其餘樣式表
媒體查詢能檢測到的特性:width
:視口大小height
:視口大小device-width
:設備屏幕大小device-height
:設備屏幕大小orientation
:設備出於橫向仍是縱向aspect-ratio
:基於視口的寬高比,例如:16/9device-aspect-ratio
:基於屏幕的寬高比color
:顏色,min-color
可檢測設備是否擁有16位顏色color-index
:設備顏色索引表中的顏色數monnchrome
:檢測單色幀緩衝區中每像素所使用的位數。值必須是非負整數resolution
:用來檢測屏幕或打印機的分辨率scan
:電視機的掃描方式,progressive
(逐行掃描)、interlace
(隔行掃描)grid
:檢測輸出設備是網格設備仍是位圖設備
十、小的Tips
1)鼠標圖標參數:cursor : point
2)經常使用連接<a href="javascript:void(0);"></a>
表示不採起任何操做
3)網頁收藏欄圖標
<link rel="icon" href="/guodu.ico" mce_href="guodu.ico" type="image/x-icon">
ico文件尺寸不能超過255 X 255
4)表單控件輸入「默認文字」 (IE七、8不兼容)
<input type="text" class="form-control" placeholder="Email address" autofocus>
輸入框裏面的默認文字
5)text-indent
文字縮進量
6)css陰影效果
IE9+ / Firefox / Chrome / Opera / Safari
.shadow {
-moz-box-shadow: 3px 3px 4px #000;
-webkit-box-shadow: 3px 3px 4px #000;
box-shadow: 3px 3px 4px #000;
}
IE 使用濾鏡(兼容老版本)
.shadow { /* For IE 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000')"; /* For IE 5.5 - 7 */ filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000'); }
7)圖片不存在的時候,顯示一個默認圖片
十、一行內文本超出指定寬度溢出的處理
.text-overflow {
display:block;/內聯對象需加/
width:31em;
word-break:keep-all;/* 不換行 /
white-space:nowrap;/ 不換行 /
overflow:hidden;/ 內容超出寬度時隱藏超出部分的內容 /
text-overflow:ellipsis;/ 當對象內文本溢出時顯示省略標記(...) ;需與overflow:hidden;一 起使用。*/
}
table{
width:30em;
table-layout:fixed;/* 只有定義了表格的佈局算法爲fixed,下面td的定義才能起做用。 /
}
td{
width:100%;
word-break:keep-all; / 不換行 /
white-space:nowrap; / 不換行 /
overflow:hidden; / 內容超出寬度時隱藏超出部分的內容 /
text-overflow:ellipsis; / 當對象內文本溢出時顯示省略標記(...) ;需與overflow:hidden;一 起使用。*/
}
咱們經常但願列表中的內容,超過設置的長度的時候,不要撐開父元素,也不但願它直接換行;咱們更願意讓其超過部分用省略號來代替。而在title標籤中,置放的是完整的標題。
這樣的方法新手們經常不知道該如何搞定。下面就是方法的演示。不過請注意此方法適用與IE與OP瀏覽器!
li {
width:200px;
white-space:nowrap;
text-overflow:ellipsis;
overflow: hidden;
}
十一、IE條件註釋
<!--[if lte IE 6]> <link rel="stylesheet" type="text/css" href="images/StyleSheet.css" /> <![endif]--> <!--[if IE 7]> <link rel="stylesheet" type="text/css" href="images/css.css" /> <![endif]--> <!–[if IE]>
這裏是正常的html
代碼
<![endif]–>
1,條件註釋的基本結構和HTML
的註釋(<!– –>
)是同樣的。所以IE之外的瀏覽器將會把它們看做是普通的註釋而徹底忽略它們。
2,IE
將會根據if
條件來判斷是否如解析普通的頁面內容同樣解析條件註釋裏的內容。
3,條件註釋使用的是HTML的註釋結構,所以他們只能使用在HTML
文件裏,而不能在CSS
文件中使用。
可以使用以下代碼檢測當前IE
瀏覽器的版本(注意:在非IE瀏覽器中是看不到效果的)
<!--[if IE]> <h1>您正在使用IE瀏覽器</h1> <!–[if IE 5]> <h2>版本 5</h2> <![endif]--> <!--[if IE 5.0]> <h2>版本 5.0</h2> <![endif]--> <!--[if IE 5.5]> <h2>版本 5.5</h2> <![endif]--> <!--[if IE 6]> <h2>版本 6</h2> <![endif]--> <!--[if IE 7]> <h2>版本 7</h2> <![endif]--> <![endif]-->
那若是當前的瀏覽器是IE
,但版本比IE5
還低,該怎麼辦呢,可使用<!–[if ls IE 5]>
,固然,根據條件註釋只能在IE5+
的環境之下,因此<!–[if ls IE 5]>
根本不會被執行。
lte
:就是Less than or equal to
的簡寫,也就是小於或等於的意思。
lt
:就是Less than
的簡寫,也就是小於的意思。
gte
:就是Greater than or equal to
的簡寫,也就是大於或等於的意思。
gt
:就是Greater than
的簡寫,也就是大於的意思。
!
:就是不等於的意思,跟javascript
裏的不等於判斷符相同
Conditional comments
屬於CSS hack
? 條件判斷屬於CSS hack
嗎?
嚴格地說是屬於CSS hack
。由於就好象其餘真正的css hack
同樣,它使得咱們能夠給一些瀏覽器賦予特殊的樣式,再則它不依賴於某個瀏覽器的BUG來控制另一個瀏覽器(的樣式)。除此以外,條件判斷還能用來作一些超出CSS HACK
範圍的事情(雖然這種狀況不多發生)。
由於條件判斷不依賴於某個瀏覽器的hack,而是一個通過深思熟慮的特點功能,因此我相信它是能夠被放心地使用的。固然,其餘瀏覽器也有可能支持條件判斷(到目前爲止尚未),可是看起來,他們應該不會使用如<!–[if IE]>
這樣的語法。
應該如何應用條件註釋
本文一開始就說明了,由於IE各版本的瀏覽器對咱們製做的WEB標準的頁面解釋不同,具體就是對CSS
的解釋不一樣,咱們爲了兼容這些,可運用條件註釋來各自定義,最終達到兼容的目的。好比:
<!--默認先調用css.css樣式表--> <link rel="stylesheet" type="text/css" href="css.css" /> <!--[if IE 7]> <!-- 若是IE瀏覽器版是7,調用ie7.css樣式表 --> <link rel="stylesheet" type="text/css" href="ie7.css" /> <![endif]--> <!--[if lte IE 6]> <!-- 若是IE瀏覽器版本小於等於6,調用ie.css樣式表 --> <link rel="stylesheet" type="text/css" href="ie.css" /> <![endif]-->