這些是我本身在學習過程當中總結的一些知識點,本篇文章我將以面試題的形式分享給你們,但願對你們有所幫助,本文篇幅較長,您若認真看完,而且反覆閱讀,我相信對您的學習或者是面試,都會有必定幫助,同時但願你們批評指正!
盒子模型就是 元素在網頁中的實際佔位,有兩種:標準盒子模型和IE盒子模型javascript
標準(W3C)盒子模型:內容content+填充padding+邊框border+邊界margincss
寬高指的是 content 的寬高html
低版本IE盒子模型:內容(content+padding+border)+ 邊界margin,前端
寬高指的是 content+padding+border 部分的寬高java
問題的拓展:
box-sizing : content-box
box-sizing : border-box複製代碼
JS 如何設置獲取盒模型對應的寬和高?android
dom.style.width/height;//設置獲取的是內聯樣式
dom.currentStyle.width/height;//只有IE支持
window.getComputedStyle(dom).width/height;//兼容性好
dom.getBoundingClientRect().width/height;//適用場所:計算一個元素的絕對位置複製代碼
實例題(根據盒模型解釋邊距重疊)?ios
該例子是父子邊距重疊,還有兄弟元素的邊距重疊git
<style>
html *{
padding: 0;
margin: 0;
}
#sec{
background: #f00;
overflow: hidden; //建立了一個BFC,塊級格式化上下文
}
.child{
height: 100px;
margin-top: 10px;
background: yellow;
}
</style>
<section id="sec">
<article class="child"></article>
</section>複製代碼
BFC(邊距重疊解決方案)?github
用來控制元素的盒子模型的解析模式,默認爲content-box
context-box:W3C的標準盒子模型,設置元素的 height/width 屬性指的是 content 部分的高/寬
border-box:IE 傳統盒子模型。設置元素的 height/width 屬性指的是 content + border + padding 部分的高/寬web
(W3C CSS 2.1 規範中的一個概念,它是一個獨立容器,決定了元素如何對其內容進行定位,以及與其餘元素的關係和相互做用。)
一個頁面是由不少個 Box 組成的,元素的類型和 display 屬性,決定了這個 Box 的類型。
不一樣類型的 Box,會參與不一樣的 Formatting Context(決定如何渲染文檔的容器),所以Box內的元素會以不一樣的方式渲染,也就是說BFC內部的元素和外部的元素不會互相影響。
BFC 規定了內部的 Block Box 如何佈局。
定位方案:
知足下列條件之一就可觸發 BFC
更多關於 BFC 的介紹,請看個人文章 BFC 是什麼?有什麼用?
CSS選擇符:
1. id選擇器( # myid)
2. 類選擇器(.myclassname)
3. 標籤(元素)選擇器(div, h1, p)
4. 相鄰選擇器(h1 + p)
5. 子選擇器(ul > li)
6. 後代選擇器(li a)
7. 通配符選擇器( * )
8. 屬性選擇器(a[rel = "external"])
9. 僞類選擇器(a:hover, li:nth-child)
僞元素選擇器、分組選擇器。
繼承性:
可繼承的樣式:font-size, font-family, color,ul,li,dl,dt,dd;
不可繼承的樣式:border, padding, margin, width, height
優先級(就近原則):!important > [ id > class > tag ]
!important 比內聯優先級高
優先級算法計算
優先級就近原則,同權重狀況下樣式定義最近者爲準
!important>id >class>tag
important比內聯優先級高
元素選擇符的權值:元素標籤(派生選擇器):1,class選擇符:10,id選擇符:100,內聯樣式權值最大,爲1000
p:first-of-type 選擇屬於其父元素的首個 <p> 元素的每一個 <p> 元素。
p:last-of-type 選擇屬於其父元素的最後 <p> 元素的每一個 <p> 元素。
p:only-of-type 選擇屬於其父元素惟一的 <p> 元素的每一個 <p> 元素。
p:only-child 選擇屬於其父元素的惟一子元素的每一個 <p> 元素。
p:nth-child(2) 選擇屬於其父元素的第二個子元素的每一個 <p> 元素。
:enabled
:disabled 控制表單控件的禁用狀態。
:checked,單選框或複選框被選中。
:before在元素以前添加內容,也能夠用來作清除浮動
:after在元素以後添加內容
水平居中div:
border: 1px solid red;
margin: 0 auto;
height: 50px;
width: 80px;複製代碼
水平垂直居中一個浮動元素(position定位)
第一種:未知元素寬高
<div class="outer">
<span>我想居中顯示</span>
</div>
<style>
.outer{
width:300px;
height:300px;
position:relative;
background-color:#ccc;
}
span{
float:left;
position:absolute;
backgroond-color:red;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
</style>複製代碼
第二種:已知元素寬高的
<div class="outer">
<span>我想居中顯示</span>
</div>
<style>
.outer{
width:300px;
height:300px;
position:relative;
background-color:#ccc;
}
span{
float:left;
position:absolute;
backgroond-color:red;
width:150px;
height:50px;
top:50%;
left:50%;
margin:-25px 0px 0px -75px;
}
</style>複製代碼
如何垂直居中一個img(display : table-cell 或者 position定位)
<div class="outer">
<img src="nz.jpg" alt="">
</div>
<style>
.outer{
width: 300px;
height: 300px;
border: 1px solid #cccccc;
display: table-cell;
text-align: center;
vertical-align: middle;
}
img{
width: 150px;
height: 150px;
}
</style>複製代碼
絕對定位的div水平垂直居中:
border: 1px solid black;
position: absolute;
width: 200px;
height: 100px;
margin: auto;
left: 0;
right: 0;
top:0;
bottom:0;複製代碼
還有更加優雅的居中方式就是用 flex佈局,點擊查看個人文章 掌握flex佈局,這篇文章就夠了
更多的居中問題,點擊查看個人文章 div居中的幾種方法
值 | 描述 |
---|---|
inline | 默認。此元素會被顯示爲內聯元素,元素先後沒有換行符。 |
block | 此元素將顯示爲塊級元素,此元素先後會帶有換行符。 |
none | 此元素不會被顯示(隱藏)。 |
inline-block | 行內塊元素。(CSS2.1 新增的值) |
list-item | 此元素會做爲列表顯示。 |
table | 此元素會做爲塊級表格來顯示(相似table),表格先後帶有換行符 |
值 | 描述 |
---|---|
absolute | 生成絕對定位的元素,相對於 static 定位之外的第一個父元素進行定位。 元素的位置經過 "left", "top", "right" 以及 "bottom" 屬性進行規定。 |
fixed | 生成固定定位的元素,相對於瀏覽器窗口進行定位。(老IE不支持) 元素的位置經過 "left", "top", "right" 以及 "bottom" 屬性進行規定。 |
relative | 生成相對定位的元素,相對於其正常位置進行定位,不脫離文檔流。 所以,"left:20" 會向元素的 LEFT 位置添加 20 像素。 |
static | 默認值。沒有定位,元素出如今正常的文檔流中(忽略 top, bottom, left, right 或者 z-index 聲明)。 |
inherit | 規定應該從父元素繼承 position 屬性的值。 |
css 定位還有一個新增屬性,粘性定位 sticky,它主要用在對 scroll 事件的監聽上;
粘性定位能夠被認爲是相對定位和固定定位的混合。元素在跨越特定閾值前爲相對定位,以後爲固定定位。例如:
#one { position: sticky; top: 10px; }複製代碼
在 viewport 視口滾動到元素 top 距離小於 10px 以前,元素爲相對定位。以後,元素將固定在與頂部距離 10px 的位置,直到 viewport 視口回滾到閾值如下。
更多關於 sticky 的介紹,請點擊查看 粘性定位介紹
:not(p)
選擇每一個非p的元素; p:empty
選擇每一個沒有任何子級的p元素(包括文本節點)div{
border:2px solid;
border-radius:25px; //用於設置圓角
box-shadow: 10px 10px 5px #888888; //水平陰影 垂直陰影 模糊距離 陰影顏色
border-image:url(border.png) 30 30 round;// 設置全部邊框圖像的速記屬性。
}複製代碼
div{
background:url(img_flwr.gif);
background-repeat:no-repeat;
background-size:100% 100%; //規定背景圖的尺寸
background-origin:content-box;//規定背景圖的定位區域
}
多背景
body{
background-image:url(img_flwr.gif),url(img_tree.gif);
}複製代碼
background: linear-gradient(direction, color-stop1, color-stop2, ...);複製代碼
更多 CSS3 和 HTML5的新特性,請點擊 CSS3 和 HTML5 新特性一覽
該佈局模型的目的是提供一種更加高效的方式來對容器中的條目進行佈局、對齊和分配空間。在傳統的佈局方式中,block 佈局是把塊在垂直方向從上到下依次排列的;而 inline 佈局則是在水平方向來排列。彈性盒佈局並無這樣內在的方向限制,能夠由開發人員自由操做。
試用場景:彈性佈局適合於移動前端開發,在Android和ios上也完美支持。
更多關於 flex 佈局,請點擊查看個人文章 你真的瞭解 flex 佈局嗎?
首先,須要把元素的寬度、高度設爲0。而後設置邊框樣式。
width: 0;
height: 0;
border-top: 40px solid transparent;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
border-bottom: 40px solid #ff0000;複製代碼
第一種真正的品字:
第二種全屏的品字佈局:
上面的div設置成100%,下面的div分別寬50%,而後使用float或者inline使其不換行。
*{margin:0;padding:0;}
來統一;
display:inline;
將其轉化爲行內屬性。漸進識別的方式,從整體中逐漸排除局部。首先,巧妙的使用「9」這一標記,將IE瀏覽器從全部狀況中分離出來。接着,再次使用「+」將IE8和IE七、IE6分離開來,這樣IE8已經獨立識別。 漸進識別的方式,從整體中逐漸排除局部。首先,巧妙的使用「9」這一標記,將IE瀏覽器從全部狀況中分離出來。接着,再次使用「+」將IE8和IE七、IE6分離開來,這樣IE8已經獨立識別。{
background-color:#f1ee18;/*全部識別*/
.background-color:#00deff\9; /*IE六、七、8識別*/
+background-color:#a200ff;/*IE六、7識別*/
_background-color:#1e0bd1;/*IE6識別*/
}複製代碼
a:link {}
a:visited {}
a:hover {}
a:active {}複製代碼
IE下,even對象有x,y屬性,可是沒有pageX,pageY屬性;
Firefox下,event對象有pageX,pageY屬性,可是沒有x,y屬性。
解決方法:(條件註釋)缺點是在IE瀏覽器下可能會增長額外的HTTP請求數。
1. 雙邊距BUG float引發的 使用display
2. 3像素問題 使用float引發的 使用dislpay:inline -3px
3. 超連接hover 點擊後失效 使用正確的書寫順序 link visited hover active
4. Ie z-index問題 給父級添加position:relative
5. Png 透明 使用js代碼 改
6. Min-height 最小高度 !Important 解決’
7. select 在ie6下遮蓋 使用iframe嵌套
8. 爲何沒有辦法定義1px左右的寬度容器(IE6默認的行高形成的,使用over:hidden,zoom:0.08 line-height:1px)
9. ie 6 不支持!important
由於瀏覽器的兼容問題,不一樣瀏覽器對有些標籤的默認值是不一樣的,若是沒對CSS初始化每每會出現瀏覽器之間的頁面顯示差別。固然,初始化樣式會對SEO有必定的影響,但魚和熊掌不可兼得,但力求影響最小的狀況下初始化。
不管屬於哪一種,都要先找到其祖先元素中最近的 position 值不爲 static 的元素,而後再判斷:
若是都找不到,則爲 initial containing block。
補充:
1. static(默認的)/relative:簡單說就是它的父元素的內容框(即去掉padding的部分)
2. absolute: 向上找最近的定位爲absolute/relative的元素
3. fixed: 它的containing block一概爲根元素(html/body),根元素也是initial containing block
當一個元素的 visibility
屬性被設置成 collapse
值後,對於通常的元素,它的表現跟 hidden
是同樣的。但例外的是,若是這個元素是table相關的元素,例如table行,table group,table列,table column group,它的表現卻跟 display: none
同樣,也就是說,它們佔用的空間也會釋放。
在谷歌瀏覽器裏,使用 collapse
值和使用 hidden
值沒有什麼區別。
在火狐瀏覽器、Opera和IE11裏,使用 collapse
值的效果就如它的字面意思:table的行會消失,它的下面一行會補充它的位置。
display : none 隱藏對應的元素,在文檔佈局中再也不分配空間(迴流+重繪)
visibility:hideen 隱藏對應的元素,在文檔佈局中仍保留原來的空間(重繪)
使用 CSS display:none 屬性後,HTML 元素(對象)的寬度、高度等各類屬性值都將「丟失」;而使用 visibility:hidden 屬性後,HTML元素(對象)僅僅是在視覺上看不見(徹底透明),而它所佔據的空間位置仍然存在。
display 屬性規定元素應該生成的框的類型;position屬性規定元素的定位類型;float屬性是一種佈局方式,定義元素在哪一個方向浮動。
相似於優先級機制:position:absolute/fixed優先級最高,有他們在時,float不起做用,display值須要調整。float 或者absolute定位的元素,只能是塊元素或表格。
出現浮動的緣由:
浮動元素碰到包含它的邊框或者浮動元素的邊框停留。在CSS規範中,浮動定位不屬於正常的頁面流,而是獨立定位的,因此文檔流的塊框表現得就像浮動框不存在同樣。浮動元素會漂浮在文檔流的塊框上。
關於css的定位機制:普通流,浮動,絕對定位(position:fixed是position:absolute的一個子類)。浮動的框能夠左右移動,直到它的外邊緣遇到包含框或者另外一個浮動框的邊緣,因此才說浮動定位不屬於正常的頁面流。文檔中的普通流就會表現得和浮動框不存在同樣,當浮動框高度超出包含框的時候,就會出現包含框不會自動伸縮高度類筆盒浮動元素。因此,只含有浮動元素的父容器在顯示時不須要考慮子元素的位置,就形成顯示父容器像空容器同樣。
浮動帶來的問題:
清除浮動的方式:
1、父級div定義height
原理:父級div手動定義height,就解決了父級div沒法自動獲取到高度的問題
優勢:簡單,代碼少,容易掌握
缺點:只適合高度固定的佈局,要給出精確的高度,若是高度和父級div不同時,會產生問題
建議:不推薦使用,只建議高度固定的佈局時使用
2、結尾處加空 div 標籤 clear:both
原理:添加一個空div,利用css提升的clear:both清除浮動,讓父級div能自動獲取到高度
優勢:簡單,代碼少,瀏覽器支持好,不容易出現怪問題
缺點:很多初學者不理解原理;若是頁面浮動佈局多,就要增長不少空div,讓人感受很不爽
建議:不推薦使用,但此方法是之前主要使用的一種清除浮動方法
3、父級 div 定義 overflow:hidden
原理:必須定義width或zoom:1,同時不能定義height,使用overflow:hidden時,瀏覽器會自動檢查浮動區域的高度
優勢:簡單,代碼少,瀏覽器支持好
缺點:不能和position配合使用,由於超出的尺寸的會被隱藏
建議:只推薦沒有使用position或對overflow:hidden理解比較深的朋友使用
4、父級div定義僞類 :after 和 zoom
原理:IE8以上和非IE瀏覽器才支持:after,原理和方法2有點相似,zoom(IE轉有屬性)可解決ie6,ie7浮動問題
優勢:瀏覽器支持好,不容易出現怪問題(目前:大型網站都有使用,如:騰迅,網易,新浪等等)
缺點:代碼多,很多初學者不理解原理,要兩句代碼結合使用,才能讓主流瀏覽器都支持
建議:推薦使用,建議定義公共類,以減小CSS代碼
(1) 在子元素後添加一個空div div{clear:both;}
(2) 在父元素中{overflow:hidden|auto;zoom:1}
(3) :after僞選擇符,在父容器的尾部自動建立一個子元素
.clearfix:after {
content: "\0020";display: block;height: 0;clear: both;
}
.clearfix {
zoom: 1;
}複製代碼
"clearfix"
是父容器的class名稱,"content:"020";"
是在父容器的結尾處放一個空白符,
"height: 0;"
是讓這個這個空白字符不顯示出來,"display: block; clear: both;"
是確保這個空白字符是非浮動的獨立區塊。:after
選擇符IE 6不支持,添加一條IE 6的獨有命令"zoom:1;"
就好了.
在重合元素外包裹一層容器,並觸發該容器生成一個BFC。例子:
<div class="aside"></div>
<div class="text">
<div class="main"></div>
</div>
<!--下面是css代碼-->
.aside {
margin-bottom: 100px;
width: 100px;
height: 150px;
background: #f66;
}
.main {
margin-top: 100px;
height: 200px;
background: #fcc;
}
.text{
/*盒子main的外面包一個div,經過改變此div的屬性使兩個盒子分屬於兩個不一樣的BFC,以此來阻止margin重疊*/
overflow: hidden; //此時已經觸發了BFC屬性。
}
複製代碼
自動變成display:block
經過媒體查詢能夠爲不一樣大小和尺寸的媒體定義不一樣的css,適應相應的設備的顯示。
<link rel="stylesheet" type="text/css" href="xxx.css" media="only screen and (max-device-width:480px)">複製代碼
@media only screen and (max-device-width:480px) {
/css樣式/}複製代碼
預處理器例如:LESS、Sass、Stylus,用來預編譯Sass或less,加強了css代碼的複用性,還有層級、mixin、變量、循環、函數等,具備很方便的UI組件模塊化開發能力,極大的提升工做效率。
後處理器例如:PostCSS,一般被視爲在完成的樣式表中根據CSS規範處理CSS,讓其更有效;目前最常作的是給CSS屬性添加瀏覽器私有前綴,實現跨瀏覽器兼容性的問題。
CSS 預處理器爲 CSS 增長一些編程的特性,無需考慮瀏覽器的兼容性問題」,例如你能夠在 CSS 中使用變量、簡單的邏輯程序、函數(如右側代碼編輯器中就使用了變量$color)等等在編程語言中的一些基本特性,可讓你的 CSS 更加簡潔、適應性更強、可讀性更佳,更易於代碼的維護等諸多好處。
其它 CSS 預處理器語言:
爲何要使用它們?
結構清晰,便於擴展。
能夠方便地屏蔽瀏覽器私有語法差別。這個不用多說,封裝對瀏覽器語法差別的重複處理,減小無心義的機械勞動。
能夠輕鬆實現多重繼承。
徹底兼容 CSS 代碼,能夠方便地應用到老項目中。LESS 只是在 CSS 語法上作了擴展,因此老的 CSS 代碼也能夠與 LESS 代碼一同編譯。
正確使用display的屬性:因爲display的做用,某些樣式組合會無效,徒增樣式體積的同時也影響解析性能。
display:inline後不該該再使用width、height、margin、padding以及float。
display:inline-block後不該該再使用float。
display:block後不該該再使用vertical-align。
display:table-*後不該該再使用margin或者float。
不濫用web字體
對於中文網站來講Web Fonts可能很陌生,國外卻很流行。web fonts一般體積龐大,並且一些瀏覽器在下載web fonts時會阻塞頁面渲染損傷性能。
-moz-border-radius: 5px;
border-radius: 5px;
}複製代碼
CSS選擇器的解析是從右向左解析的,爲了不對全部元素進行遍歷。若從左向右的匹配,發現不符合規則,須要進行回溯,會損失不少性能。若從右向左匹配,先找到全部的最右節點,對於每個節點,向上尋找其父節點直到找到根元素或知足條件的匹配規則,則結束這個分支的遍歷。兩種匹配規則的性能差異很大,是由於從右向左的匹配在第一步就篩選掉了大量的不符合條件的最右節點(葉子節點),而從左向右的匹配規則的性能都浪費在了失敗的查找上面。
而在 CSS 解析完畢後,須要將解析的結果與 DOM Tree 的內容一塊兒進行分析創建一棵 Render Tree,最終用來進行繪圖。在創建 Render Tree 時(WebKit 中的「Attachment」過程),瀏覽器就要爲每一個 DOM Tree 中的元素根據 CSS 的解析結果(Style Rules)來肯定生成怎樣的 Render Tree。
使用偶數字體。偶數字號相對更容易和 web 設計的其餘部分構成比例關係。Windows 自帶的點陣宋體(中易宋體)從 Vista 開始只提供 十二、1四、16 px 這三個大小的點陣,而 1三、1五、17 px時用的是小一號的點。(即每一個字佔的空間大了 1 px,但點陣沒變),因而略顯稀疏。
◆什麼時候應當使用margin
須要在border外側添加空白時。
空白處不須要背景(色)時。
上下相連的兩個盒子之間的空白,須要相互抵消時。如15px+20px的margin,將獲得20px的空白。
◆什麼時候應當時用padding
須要在border內測添加空白時。
空白處須要背景(色)時。
上下相連的兩個盒子之間的空白,但願等於二者之和時。如15px+20px的padding,將獲得35px的空白。
◆瀏覽器兼容性問題
在IE5.x、IE6中,爲float的盒子指定margin時,左側margin可能會變成兩倍的寬度。經過改用padding或指定盒子爲display:inline能夠解決。
當按百分比設定一個元素的寬度時,它是相對於父容器的寬度計算的,可是,對於一些表示豎向距離的屬性,例如 padding-top , padding-bottom , margin-top , margin-bottom 等,當按百分比設定它們時,依據的也是父容器的寬度,而不是高度。
響應式網站設計(Responsive Web design)是一個網站可以兼容多個終端,而不是爲每個終端作一個特定的版本。
基本原理是經過媒體查詢檢測不一樣的設備屏幕尺寸作處理。
頁面頭部必須有meta聲明的viewport。
<meta name=’viewport’ content=」width=device-width, initial-scale=1. maximum-scale=1,user-scalable=no」>
複製代碼
視差滾動(Parallax Scrolling)經過在網頁向下滾動的時候,控制背景的移動速度比前景的移動速度慢來建立出使人驚歎的3D效果。
:before 和 :after 這兩個僞元素,是在CSS2.1裏新出現的。起初,僞元素的前綴使用的是單冒號語法,但隨着Web的進化,在CSS3的規範裏,僞元素的語法被修改爲使用雙冒號,成爲::before ::after
注意:對於IE6/7/8僅支持單冒號表示法,而現代瀏覽器同時支持這兩種表示法。另外,在CSS3中單冒號和雙冒號的區域主要是用來區分僞類和僞元素的。
行高是指一行文字的高度,具體說是兩行文字間基線的距離。CSS中起高度做用的是height和line-height,沒有定義height屬性,最終其表現做用必定是line-height。
單行文本垂直居中:把line-height值設置爲height同樣大小的值能夠實現單行文字的垂直居中,其實也能夠把height刪除。
多行文本垂直居中:須要設置display屬性爲inline-block。
p{
font-size:10px;
-webkit-transform:scale(0.8);//0.8是縮放比例
}
複製代碼
-webkit-font-smoothing 在 window 系統下沒有起做用,可是在 IOS 設備上起做用 -webkit-font-smoothing:antialiased 是最佳的,灰度平滑。
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
複製代碼
行框的排列會受到中間空白(回車空格)等的影響,由於空格也屬於字符,這些空白也會被應用樣式,佔據空間,因此會有間隔,把字符大小設爲0,就沒有空格了。
解決方法:
外層div使用position:relative;高度要求自適應的div使用position: absolute; top: 100px; bottom: 0; left: 0
頁面加載自上而下 固然是先加載樣式。
寫在 body 標籤後因爲瀏覽器以逐行方式對HTML文檔進行解析,當解析到寫在尾部的樣式表(外聯或寫在 style 標籤)會致使瀏覽器中止以前的渲染,等待加載且解析樣式表完成以後從新渲染,在windows的IE下可能會出現 FOUC 現象(即樣式失效致使的頁面閃爍問題)
參數是 scroll 時候,必會出現滾動條。
參數是 auto 時候,子元素內容大於父元素時出現滾動條。
參數是 visible 時候,溢出的內容出如今父元素以外。
參數是 hidden 時候,溢出隱藏。
CSS Sprites小圖片背景共享技術。它把一堆小的圖片整合到一張大的圖片上。而後利用CSS的 background-image,background- repeat,background-position 的組合進行背景定位。利用CSS Sprites能很好地減小網頁的http請求,從而大大的提升頁面的性能;CSS Sprites能減小圖片的字節。
優點:
1.很好的減小網頁的請求,大大提升頁面的性能;
2.減小圖片的字節;
3.解決了網頁設計師在圖片命名上的困擾;
4.更換風格方便,維護方便。
劣勢:
1.圖片合併時需預留好足夠空間,寬屏、高分辨率的屏幕下易出現背景斷裂;
2.開發較麻煩,測量繁瑣;(可以使用樣式生成器)
3.維護麻煩,背景少量改動有可能影響整張圖片,使得字節增長還要改動css。
第一種回答:
僞類: :focus、:hover、:active
僞元素::before、:after
僞類本質上是爲了彌補常規CSS選擇器的不足,以便獲取到更多信息;
僞元素本質上是建立了一個有內容的虛擬容器;
CSS3中僞類和僞元素的語法不一樣;
能夠同時使用多個僞類,而只能同時使用一個僞元素;
第二種回答:
僞類:僞類選擇元素基於的是當前元素處於的狀態,或者說元素當前所具備的特性,而不是元素的id、class、屬性等靜態的標誌。因爲狀態是動態變化的,因此一個元素達到一個特定狀態時,它可能獲得一個僞類的樣式;當狀態改變時,它又會失去這個樣式。由此能夠看出,它的功能和class有些相似,但它是基於文檔以外的抽象,因此叫僞類。
:first-child :link: :visitive :hover :active :focus :lang
僞元素:與僞類針對特殊狀態的元素不一樣的是,僞元素是對元素中的特定內容進行操做,它所操做的層次比僞類更深了一層,也所以它的動態性比僞類要低得多。實際上,設計僞元素的目的就是去選取諸如元素內容第一個字(母)、第一行,選取某些內容前面或後面這種普通的選擇器沒法完成的工做。它控制的內容實際上和元素是相同的,可是它自己只是基於元素的抽象,並不存在於文檔中,因此叫僞元素。
:first-line
:first-letter
:before
:after複製代碼
外部樣式表,引入一個外部css文件
內部樣式表,將css代碼放在 <head> 標籤內部
內聯樣式,將css樣式直接定義在 HTML 元素內部
最基本的:設置 display 屬性爲 none,或者設置 visibility 屬性爲 hidden
技巧性:設置寬高爲 0,設置透明度爲 0,設置 z-index 位置在 -1000
答案:解決各瀏覽器對 CSS 解釋不一樣所採起的,區別不一樣瀏覽器製做不一樣CSS樣式的設置就叫做 CSS Hack。
塊級元素( block )特性:
老是獨佔一行,表現爲另起一行開始,並且其後的元素也必須另起一行顯示;
寬度(width)、高度(height)、內邊距(padding)和外邊距(margin)均可控制;
內聯元素(inline)特性:
和相鄰的內聯元素在同一行;
寬度(width)、高度(height)、內邊距的top/bottom(padding-top/padding-bottom)和外邊距的top/bottom(margin-top/margin-bottom)都不可改變(也就是padding和margin的left和right是能夠設置的)。
那麼問題來了,瀏覽器還有默認的天生inline-block元素(擁有內在尺寸,可設置高寬,但不會自動換行),有哪些?
答案:<input> 、<img> 、<button> 、<textarea>。
外邊距重疊就是 margin-collapse。
在CSS當中,相鄰的兩個盒子的外邊距能夠結合成一個單獨的外邊距。這種合併外邊距的方式被稱爲摺疊,而且於是所結合成的外邊距稱爲摺疊外邊距。
摺疊結果遵循下列計算規則:
rgba()和opacity都能實現透明效果,但最大的不一樣是opacity做用於元素,以及元素內的全部內容的透明度,
而rgba()只做用於元素的顏色或其背景色。(設置rgba透明的元素的子元素不會繼承透明效果!)
垂直方向:line-height
水平方向:letter-spacing (letter-spacing 屬性增長或減小字符間的空白)
那麼問題來了,關於letter-spacing的妙用知道有哪些麼?
答案:能夠用於消除inline-block元素間的換行符空格間隙問題。
px和em都是長度單位,區別是:px的值是固定的,指定是多少就是多少,計算比較容易。em得值不是固定的,而且em會繼承父級元素的字體大小。
瀏覽器的默認字體高都是16px。因此未經調整的瀏覽器都符合: 1em=16px。那麼12px=0.75em, 10px=0.625em。
不一樣的瀏覽器對一些元素有不一樣的默認樣式,若是不處理,在不一樣的瀏覽器下會存在必要的風險。
你可能會用Normalize來代替你的重置樣式文件。它沒有重置全部的樣式風格,但僅提供了一套合理的默認樣式值。既能讓衆多瀏覽器達到一致和合理,但又不擾亂其餘的東西(如粗體的標題)。
不能。它只能移動x,y軸的位置。translate3d能夠。
1. CSS3實現圓角(border-radius),陰影(box-shadow),
2. 對文字加特效(text-shadow、),線性漸變(gradient),旋轉(transform)
3. transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋轉,縮放,定位,傾斜
4. 增長了更多的CSS選擇器 多背景 rgba
5. 在CSS3中惟一引入的僞元素是 ::selection.
6. 媒體查詢,多欄佈局
7. border-image
功能上的差異:HTML是一種基本的WEB網頁設計語言;XHTML是一個基於XML的置標語言,XHTML可兼容各大瀏覽器、手機以及PDA,而且瀏覽器也能快速正確地編譯網頁。
書寫習慣上:
(1) XHTML 所在標籤都必須小寫
(2) XHTML 標籤必須成雙成對
(3) XHTML 標籤順序必須正確
(4) XHTML 全部屬性都必須使用雙引號
(5) 不XHTML 容許使用target=」_blank」
(6) XHTML 文檔必須擁有根元素。
(7) XHTML 元素必須被正確地嵌套。
結構層 Html 表示層 CSS 行爲層 js
選擇器{屬性1:值1;屬性2:值2;……}
廢棄的元素包括:
· frame
· frameset
· noframe
· applet
· big
· center
· basefront
答:內聯,內嵌,外鏈,導入
(1)link 屬於 XHTML 標籤,除了加載 CSS 外,還能用於定義RSS,定義 rel 鏈接屬性等做用,無兼容性,支持使用javascript改變樣式;而@import是CSS提供的,只能用於加載CSS,不支持使用 javascript 改變樣式;
(2)頁面被加載的時,link 會被同時加載,而@import 引用的CSS會等到頁面加載完再加載;
(3)import是CSS2.1 提出的,CSS2.1如下瀏覽器不支持,只在IE5以上才能被識別,而link是XHTML標籤,無兼容問題。
主要分紅兩部分:渲染引擎(layout engineer或Rendering Engine)和 JS 引擎。
(1)渲染引擎:負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(例如加入CSS等),以及計算網頁的顯示方式,而後會輸出至顯示器或打印機。瀏覽器的內核的不一樣對於網頁的語法解釋會有不一樣,因此渲染的效果也不相同。全部網頁瀏覽器、電子郵件客戶以及其餘它所須要編輯、顯示網絡的應用程序都須要內核。
(2)JS引擎則:解析和執行JavaScript 來實現網頁的動態效果;
最開始渲染引擎和 JS 並無區分的很明確,後來JS引擎愈來愈獨立,內核就傾向於只渲染引擎。
標籤閉合、標籤小寫、不亂嵌套、提升搜索機器人搜索概率、使用外鏈css和js腳本、結構行爲表現的分離、文件下載與頁面速度更快、內容能被更多的用戶所訪問、內容能被更普遍的設備所訪問、更少的代碼和組件,容易維護、改版方便,不須要變更頁面內容、提供打印版本而不須要複製內容、提升網站易用性;
HTML5沒有使用SGML或者XHTML,他是一個全新的東西,所以你不須要參考DTD,對於HTML5,你僅需放置下面的文檔類型代碼告訴瀏覽器識別這是HTML5文檔
不會,瀏覽器將不能識別他是HTML文檔,同時HTML5的標籤將不能正常工做
HTML5中的Datalist元素有助於提供文本框自動完成特性,以下圖所示:
設置 background-position:center;
讓一種字體標識爲斜體(oblique),若是沒有這種格式,就使用italic字體
繼承:在一個屬性應用於一個特定標籤以後,該標籤的子標籤也應該應用該屬性。這一行爲稱爲繼承。但並非全部的屬性都會被繼承。如文字樣式通常都繼承,盒圖的寬高通常不 繼承,總之該繼承的都會繼承,不應繼承的都不繼承。
重用:一個樣式文件,能夠多個頁面使用,這對於一些公共樣式的重構是頗有用的。
答案:涉及到人手、分工、同步
(1) 先期團隊必須肯定好全局樣式,編碼模式等
(2) 編寫習慣必須一致
(3) 標註樣式編寫人,各模塊都及時標註(標註關鍵樣式調用的地方)
(4) 頁面進行標註
(5) Css與html分文件夾並行存放,命名都要統一
(6) Js分文件夾存放,命名以該JS功能爲準英文翻譯
(7) 圖片採用整合的.png格式文件使用,儘可能整合在一塊兒,方便未來的管理。
Word-break:break-all;
<!DOCTYPE> 聲明位於文檔中的最前面的位置,處於 <html> 標籤以前。
它不是一個 HTML 標籤,它是用來告知(聲明) Web 瀏覽器頁面使用了哪一種 HTML 版本
行內元素:
(1)行內元素不換行
(2)行內元素不能夠設置大小
(3)行內元素大小由內容決定
塊元素:
(1)塊元素獨立成行
(2)塊元素能夠設置大小
(3)塊元素若是不設置寬度,寬度會自適應其父級的寬度
行元素:
span、img、a、lable、input、abbr(縮寫)、em(強調)、big、cite(引用)、i(斜體)、q(短引用)、textarea、select(下拉列表)、small、sub、sup,strong、u(下劃線)、button(默認display:inline-block)
從瀏覽器的顯示結果能夠看出,相鄰的行內元素不換行,寬度即爲內容的寬度、padding的4個方向都有效(從span標籤能夠看出,對於行內非替換元素,不會影響其行高,不會撐開父元素;而對於替換元素,則會撐開父元素)、margin只有水平方向有效(其中垂直方向的margin對行內替換元素(好比img元素)有效,對行內非替換元素無效)、不能夠設置width和height屬性。行內塊元素表現其實和行內元素同樣,只是其能夠設置width和height屬性。
塊元素:
div、p、h1~h六、ul、ol、dl、li、dd、table、hr、blockquote、address、table、menu、pre,HTML5新增的header、section、aside、footer等
從瀏覽器的顯示結果能夠看出,塊級元素新開啓一行(即便是設置了width屬性也是獨佔一行)、儘量撐滿父級元素的寬度,能夠設置width和height屬性;table元素瀏覽器默認的display屬性爲table。
(1) 找到對應其標籤的父級,給其父級設置 text-align : center;
(2) 將元素轉化成塊元素,設置margin : 0 auto,(必須是塊元素,並且有寬度)
加粗:
CSS:font-weight : bold
HTML : <b></b>,<strong></strong>
斜體:
CSS : font-style : italic | oblique,font-style : normal(正常的字體)
HTML : <i></i> ,<em></em>
谷歌中這樣是解釋的:
圖片底部的空隙實際上涉及行內元素的佈局模型,圖片默認的垂直對齊方式是基線,而基線的位置是與字體相關的。因此在某些時候,圖片底部的空隙多是 2px,而有時多是 4px 或更多。不一樣的 font-size 應該也會影響到這個空隙的大小。
解決辦法:
最優的解決辦是定義vertical-align,注:定義vertical-align爲middle時在IE6中大概還有一像素的頂邊距,最好爲top或bottom。固然還有種極端解決辦法你們能夠試試就是將 父容器的字體大小爲零,font-size:0
(1)轉化成(行級)塊元素
display : block複製代碼
(2)浮動,浮動後的元素默承認以轉化爲塊元素(能夠隨意設置寬高屬性)
float : left;複製代碼
(3)給 img 定義 vertical-align(消除底部邊距)
img{
border: 0;
vertical-align: bottom;
}複製代碼
(4)將其父容器的font-size 設爲 0;
(5)給父標籤設置與圖片相同的高度
父級的寬度不夠,致使元素沒法並排顯示;
行內樣式、內部樣式(寫一個style)、外部樣式
padding margin複製代碼
padding : 0;
margin : 0;複製代碼
word-spacing : 單詞
letter-spacing : 字母、中文
text-decoration : underline | overline | line-through
list-style:none;
background-image:url()複製代碼
寬度(width)
顏色(color)
線形(solid,dashed,dotted,)實線,虛線,點畫線
diaplay:block | inline-block
title :鼠標放入時提示的文字,
alt : 圖片路徑出錯時,提示文字
<meta charset="UTF-8">