web語義化是指經過HTML標記表示頁面包含的信息,包含了HTML標籤的語義化和css命名的語義化。
HTML標籤的語義化是指:經過使用包含語義的標籤(如h1-h6)恰當地表示文檔結構
css命名的語義化是指:爲html標籤添加有意義的class,id補充未表達的語義,如Microformat經過添加符合規則的class描述信息
爲何須要語義化:javascript
<img>
的title
和alt
有什麼區別title
是global attributes之一,用於爲元素提供附加的advisory information。一般當鼠標滑動到元素上的時候顯示。alt
是<img>
的特有屬性,是圖片內容的等價描述,用於圖片沒法加載時顯示、讀屏器閱讀圖片。可提圖片高可訪問性,除了純裝飾圖片外都必須設置有意義的值,搜索引擎會重點分析。<!doctype>
聲明必須處於HTML文檔的頭部,在<html>
標籤以前,HTML5中不區分大小寫<!doctype>
聲明不是一個HTML標籤,是一個用於告訴瀏覽器當前HTMl版本的指令<!doctype>
聲明指向一個DTD,因爲HTML4.01基於SGML,因此DTD指定了標記規則以保證瀏覽器正確渲染內容rfc2616中進行了定義:css
一個請求報文例子以下:html
GET /Protocols/rfc2616/rfc2616-sec5.html HTTP/1.1 Host: www.w3.org Connection: keep-alive Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 Referer: https://www.google.com.hk/ Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-CN,zh;q=0.8,en;q=0.6 Cookie: authorstyle=yes If-None-Match: "2cc8-3e3073913b100" If-Modified-Since: Wed, 01 Sep 2004 13:24:52 GMT name=qiu&age=25
rfc2616中進行了定義:前端
響應報文例子以下:java
HTTP/1.1 200 OK Date: Tue, 08 Jul 2014 05:28:43 GMT Server: Apache/2 Last-Modified: Wed, 01 Sep 2004 13:24:52 GMT ETag: "40d7-3e3073913b100" Accept-Ranges: bytes Content-Length: 16599 Cache-Control: max-age=21600 Expires: Tue, 08 Jul 2014 11:28:43 GMT P3P: policyref="http://www.w3.org/2001/05/P3P/p3p.xml" Content-Type: text/html; charset=iso-8859-1 {"name": "qiu", "age": 25}
>= 0, 兼容性IE9+git
其中n >= 0,兼容性IE9+github
是此此類型元素的第一個兄弟。選中它。兼容性IE9+web
概念:將多個小圖片拼接到一個圖片中。經過background-position和元素尺寸調節須要顯示的背景圖案。瀏覽器
優勢:cookie
缺點:
display: none;
與visibility: hidden;
的區別聯繫:它們都能讓元素不可見
區別:
link
與@import
的區別link
是HTML方式, @import
是CSS方式link
最大限度支持並行下載,@import
過多嵌套致使串行下載,出現FOUC link
能夠經過rel="alternate stylesheet"
指定候選樣式link
支持早於@import
,可使用@import
對老瀏覽器隱藏樣式@import
必須在樣式規則以前,能夠在css文件中引用其餘文件display: block;
和display: inline;
的區別block
元素特色:
1.處於常規流中時,若是width
沒有設置,會自動填充滿父容器
2.能夠應用margin/padding
3.在沒有設置高度的狀況下會擴展高度以包含常規流中的子元素
4.處於常規流中時佈局時在先後元素位置之間(獨佔一個水平空間)
5.忽略vertical-align
inline
元素特色
1.水平方向上根據direction
依次佈局
2.不會在元素先後進行換行
3.受white-space
控制
4.margin/padding
在豎直方向上無效,水平方向上有效
5.width/height
屬性對非替換行內元素無效,寬度由元素內容決定
6.非替換行內元素的行框高由line-height
肯定,替換行內元素的行框高由height
,margin
,padding
,border
決定
6.浮動或絕對定位時會轉換爲block
7.vertical-align
屬性生效
.target { min-height: 100px; height: auto !important; height: 100px; // IE6下內容高度超過會自動擴展高度 }
ol
內li
的序號全爲1,不遞增。解決方法:爲li設置樣式display: list-item;
overflow: auto;
,包含position: relative;
子元素,子元素高於父元素時會溢出。解決辦法:1)子元素去掉position: relative;
; 2)不能爲子元素去掉定位時,父元素position: relative;
<style type="text/css"> .outer { width: 215px; height: 100px; border: 1px solid red; overflow: auto; position: relative; /* 修復bug */ } .inner { width: 100px; height: 200px; background-color: purple; position: relative; } </style> <div class="outer"> <div class="inner"></div> </div>
a
標籤的:hover
僞類,解決方法:使用js爲元素監聽mouseenter,mouseleave事件,添加類實現效果:<style type="text/css"> .p:hover, .hover { background: purple; } </style> <p class="p" id="target">aaaa bbbbb<span>DDDDDDDDDDDd</span> aaaa lkjlkjdf j</p> <script type="text/javascript"> function addClass(elem, cls) { if (elem.className) { elem.className += ' ' + cls; } else { elem.className = cls; } } function removeClass(elem, cls) { var className = ' ' + elem.className + ' '; var reg = new RegExp(' +' + cls + ' +', 'g'); elem.className = className.replace(reg, ' ').replace(/^ +| +$/, ''); } var target = document.getElementById('target'); if (target.attachEvent) { target.attachEvent('onmouseenter', function () { addClass(target, 'hover'); }); target.attachEvent('onmouseleave', function () { removeClass(target, 'hover'); }) } </script>
opacity
,解決辦法:.opacity { opacity: 0.4 filter: alpha(opacity=60); /* for IE5-7 */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; /* for IE 8*/ }
height
小於font-size
時高度值爲font-size
,解決辦法:font-size: 0;
display: inline-block
解決辦法:設置inline並觸發hasLayoutdisplay: inline-block; *display: inline; *zoom: 1;
1)使用padding控制間距。
2)浮動元素display: inline;
這樣解決問題且無任何反作用:css標準規定浮動元素display:inline會自動調整爲block
text-align: center;
clear: both
display
爲none,那麼position和float都不起做用,這種狀況下元素不產生框總結起來:絕對定位、浮動、根元素都須要調整display
毗鄰的兩個或多個margin
會合併成一個margin,叫作外邊距摺疊。規則以下: