CSS 瀏覽器樣式重置終結版

前言

瀏覽器的一些默認樣式,有時候真的是特別醜; 雖然如今有現成的 UI 框架,但有時候寫個小東西不想用那麼龐大的 UI 框架,這篇文章介紹解決一些樣式問題,最後將給出完整的重置樣式表; 若是有遇到其它樣式問題,評論區提建議,我將持續更新css

樣式問題解決

瀏覽器默認在 body 加上 8px 的 margin ,通常我寫的時候都會把這 8 px 的 margin 去掉html

body{margin:0;}

想作個整屏顯示的頁面,就一頁,發現設置 div {height:100%;} 無效,實際上是整個 html,body 就這麼高,你須要設置 html 和 body 的高度前端

html,body{height:100%;}

作窗口滿屏的另外一種方法,使用定位來作html5

.element{
    display:absolute;
    top:0;bottom:0;
    left:0;right:0;
}

文本處理的幾個樣式說明 ( white-space word-break overflow text-overflow )
在寫代碼的時候 ,咱們常常是想讓一個容器中的文本在一行顯示,除非有換行符,則能夠這麼玩web

.element{white-space:nowrap;}

常見的例子是溢出加省略號瀏覽器

.ellipsis{
    white-space: nowrap;
    overflow: hidden;
    text-overflow:ellipsis;
}

從後臺來的文本是換行符rn,可是前端是 br 換行,這時能夠設置 div 的 white-space框架

.element{white-space:pre-wrap;}

一些文本容器須要設置溢出滾動和文本截斷ide

div,li{
    overflow-x: auto;
    word-break: break-all;
}

瀏覽器元素大小計算問題,box-sizingcontent-box|border-box|inherit 三種方式,content-box 表示設置的是內容的大小,border-box 表示設置的是包含邊框和內補的大小
content-box 加內補的時候會撐大元素,而 border-box 加內補的時候會縮小內容區大小,我通常喜歡用 border-box字體

*,*:before,*:after{
    box-sizing: border-box;
    -moz-box-sizing: border-box; /* Firefox */
    -webkit-box-sizing: border-box; /* Safari */
}

浮動問題,當 內層元素浮動時,外層元素的高度會丟失,這時能夠設置下外層元素找回高度優化

<ul style="overflow:hidden;">
    <li>浮動元素</li>
    <li>浮動元素</li>
</ul>

無序列表和有序列表的列表樣式; 大部分狀況下,咱們會拿有序列表來作導航菜單,這時候會出現有小圓點或數字的狀況,能夠去掉,須要用的時候再設置回來便可

ul,ol{list-style-type:none;}

無序列表和有序列表會有40px 的上下外邊距和 16 像素的左內補,若是作導航用,須要去掉

ul,ol{margin:0;padding:0;}

並排的兩個 div 作的按扭,設置 display:inline-block 時,會產生間隔;
產生的緣由是由於你加了回車或空格致使的,解決辦法是把這兩個 div 包在另外一個 div 裏面,並設置父元素 div 的 font-size:0,最後再把子元素的字體設置回原來的值

<div sytle="font-size:0">
    <div class="inline-block-div">div1</div>
    <div class="inline-block-div">div2</div>
</div>

iframe 5 像素問題,當在一個div 中設置一個iframe ,並設置 iframe 寬高都是 100% 的時候(div 固定寬高),會發現 div 有滾動條;查資料說是 iframe 編譯出來裏面的html代碼中的兩個頭部聲明,引發的5px的高度差,因此會高出包裹的div,致使產生滾動條。解決辦法是設置 iframe 塊狀顯示

iframe{display:block;}

textarea 右下角的倒三角有時候會以爲很難看,其實它本意是讓 textarea 能夠更改大小; 去掉的辦法爲設置不可調節大小

textarea{resize: none;}

input,textarea,select 在選中的時候,都有一層難看的外邊框,這個看我的狀況去除

textarea,input,select{outline:0;}

a 連接的默認樣式,鼠標停留的樣式,和訪問過的樣式(記錄的是 href 訪問過)不太好看,能夠設置得相對美觀點; 默認黑色,停留藍色

a{color:#333;text-decoration:none;}
a:hover{color:#0080ff;}

表格相關樣式優化

table {border-spacing:0;border-collapse:collapse;}
td,th{padding:0;}

默認的字體若是不改變的話,也是很醜的

body{font-family: arial;}

html5 元素塊狀顯示

article,aside,details,figcaption,figure,dialog,footer,header,hgroup,menu,nav,section {display:block;}

修改默認 placeholder 的顏色

::-webkit-input-placeholder{color:#999;}
::-moz-placeholder{color:#999;}
::-moz-placeholder{color:#999;}
:-ms-input-placeholder{color:#ccc;}

修改滾動條樣式,默認的滾動條有點醜

::-webkit-scrollbar {
    width: 7px;
    height:7px;
    background-color: #F5F5F5;
}
::-webkit-scrollbar-thumb {
    background-color: #999;
}
::-webkit-scrollbar-track {
    background-color: #F5F5F5;
}

快速清除浮動 使用 after 和 before

.clearfix:after {
    visibility: hidden;
    display: block;
    font-size: 0;
    content: " ";
    clear: both;
    height: 0;
}

* html .clearfix {
    zoom: 1;
} /* IE6 */
*:first-child+html .clearfix {
    zoom: 1;
} /* IE7 */

一些經常使用樣式技巧

在一個方型的彈出框中,我想在右上角加個刪除按扭,這裏能夠設置父元素的定位爲相對定位,子元素爲絕對定位,而後設置子元素的位置便可解決

.parent{position:reletive;}
.child{position:absolute;top:2px;right:2px;}

文本垂直居中,能夠設置行高和容器高度一致便可文本垂直居中

.element{height:50px;line-height:50px;}

使用 CSS3 的 transform 使任意元素垂直居中

.verticalcenter{
    position: relative;
    top: 50%;
    -webkit-transform: translateY(-50%);
    -o-transform: translateY(-50%);
    transform: translateY(-50%);
}

完整樣式文件

body{margin:0;font-family: arial;}
html,body{height:100%;}
*,*:before,*:after{
    box-sizing: border-box;
    -moz-box-sizing: border-box; /* Firefox */
    -webkit-box-sizing: border-box; /* Safari */
}
div,li{
    overflow-x: auto;
    word-break: break-all;
}
ul,ol{
    list-style-type:none;
    margin:0;
    padding:0;
}
iframe{display:block;}
textarea{resize: none;}
textarea,input,select{outline:0;}
a{color:#333;text-decoration:none;}
a:hover{color:#0080ff;}
table {border-spacing:0;border-collapse:collapse;}
td,th{padding:0;}
article,aside,details,figcaption,figure,dialog,footer,header,hgroup,menu,nav,section {display:block;}
::-webkit-input-placeholder{color:#999;}
::-moz-placeholder{color:#999;}
::-moz-placeholder{color:#999;}
:-ms-input-placeholder{color:#ccc;}
::-webkit-scrollbar {
    width: 7px;
    height:7px;
    background-color: #F5F5F5;
}
::-webkit-scrollbar-thumb {
    background-color: #999;
}
::-webkit-scrollbar-track {
    background-color: #F5F5F5;
}
.clearfix:after {
    visibility: hidden;
    display: block;
    font-size: 0;
    content: " ";
    clear: both;
    height: 0;
}

* html .clearfix {
    zoom: 1;
} /* IE6 */
*:first-child+html .clearfix {
    zoom: 1;
} /* IE7 */
相關文章
相關標籤/搜索