視頻連接: CSS3 & 頁面佈局javascript
CSS3與頁面佈局學習總結(一)
CSS3與頁面佈局學習總結(二)
CSS3與頁面佈局學習總結(三)
CSS3與頁面佈局學習總結(四)
CSS3與頁面佈局學習總結(五)
CSS3與頁面佈局學習總結(六)
CSS3與頁面佈局學習總結(七)
CSS3與頁面佈局學習總結(八)css
文字文件, 圖標的替換方案, 利用字體的形式來設計圖標,字體等UI
使用圖標:html
語法: @font-face
網站: fontello.com
軟件: fontcreator
前端
軟件:
css satyr
css sprite toolhtml5
注意把握內嵌樣式, 內部樣式, 外部樣式的使用幅度.
注重加載速度的, 可使用前二者, 好比首頁
其餘的, 可使用外部樣式, 好比base, reset等
java
注意, 繼承的優先級所在的位置
@import 導入CSS文件的另一種方法
css3
html元素
)font-size計算值的倍數盒子模型也有人稱爲框模型,HTML中的多數元素都會在瀏覽器中生成一個矩形的區域,每一個區域包含四個組成部分,從外向內依次是:外邊距(Margin)、邊框(Border)、內邊距(Padding)和內容(Content),其實盒子模型有兩種,分別是 ie 盒子模型和標準 w3c 盒子模型,加上了doctype聲明,讓全部瀏覽器都會採用標準 w3c 盒子模型去解釋你的盒子git
外邊距摺疊:相鄰的兩個或多個外邊距 (margin) 在垂直方向會合併成一個外邊距(margin)
相鄰:沒有被非空內容、padding、border 或 clear 分隔開的margin特性. 非空內容就是說這元素之間要麼是兄弟關係或者父子關係github
CSS中重要的BFC
塊級格式化上下文web
margin:0 auto
時將實現自身的水平居中<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #container { margin: 0 auto; background-color: red; text-align: center; } #div1 { display: inline-block; width: 20%; height: 50px; background: #9acfea; } </style> </head> <body> <div id="container"> <div id="div1"> div1 </div> <span>hello work</span> </div> </body> </html>
當一個設置了定位的元素全部的偏移爲0且margin爲auto時將水平,垂直都居中,且父元素自身的高度可動態變化
position: absolute; /*居中開始*/ top: 0; right: 0; bottom: 0; left: 0; margin: auto; /*居中結束*/
若是是單行文本,行高如塊的高度同樣時將居中,只一行,行高和元素同樣高,居中。只能夠是文字等一些行內標籤,圖片不行。
line-height: 600px; height: 600px;
讓元素相對父元素定位,偏移左50%,上50%,把自身向左移半個寬度,向上移半個高度,同時完成了水平與垂直方向的居中
vertical-align這個屬性的特色,它是相對兄弟級行高(line-height)來定位
實現方式:
注意:垂直的內容不能是塊元素
使用 table & table-cell 來操做
在某些時候須要將小圖片與文字對象,可使用對齊的屬性absmiddle(絕對居中)
CSS3中可使用transform移動元素自身的寬度與高度
#img1 { position: absolute; top: 50%; left: 50%; transform:translate(-50%,-50%); }
text-shadow
box-shadow
background-size
background-origin
虛擬元素
僞元素不是真的元素是經過CSS虛擬出的一個元素,CSS3的語法爲了區分僞元素與僞類,使用「::」表示,可是前期爲了兼容「:」仍然可使用
before, after 在元素內容先後虛擬出新的對象, 跟該元素是父子關係
border-radius
border-image
做者想說的:對於佈局的分類, 並非絕對的。因此此分類圖,並不絕對準確。在實際學習中,我發現有些佈局沒法直接概括入一種類型中,歸根結底是由於這些佈局在實現時結合了多種方式。對於如今的大部分網頁設計來講,功能複雜化界面設計化愈來愈高,因此這個狀況,想必也是這一趨勢形成的結果。個人理解,對於頁面佈局,最重要的是理解其思想,在實際運用中,每每是相互搭配,不能絕對死板。畢竟設計,自己就是一種創造!
對於佈局,咱們還能夠按類型和功能來進行分類。
先來看按類型分類的佈局模式:
另外除了類型分類,還能夠按功能模式來分類:
所謂的負邊距就是margin取負值的狀況,如margin:-100px,margin:-100%。當一個元素與另外一個元素margin取負值時將拉近距離
當多個元素同時從標準流中脫離開來時,若是前一個元素的寬度爲100%寬度,後面的元素經過負邊距能夠實現上移。當負的邊距超過自身的寬度將上移,只要沒有超過自身寬度就不會上移
佈局要求有幾點:
一、三列布局,中間寬度自適應,兩邊定寬;
二、中間欄要在瀏覽器中優先展現渲染;
三、容許任意列的高度最高;
四、要求只用一個額外的DIV標籤;
五、要求用最簡單的CSS、最少的HACK語句;
須要使用到負邊距的概念
柵格系統就是利用浮動實現的多欄佈局, bootstrap使用比較多
bootstrap 可視化佈局-- http://www.bootcss.com/p/layoutit/
柵格系統並無真正實現分欄效果(如word中的分欄),CSS3爲了知足這個要求增長了多列布局模塊. 可認爲是分列布局
部分屬性:
column-count:<'integer'> | auto
功能:設置或檢索對象的列數
適用於:除table外的非替換塊級元素, table cells, inline-block元素
<'integer'>: 用整數值來定義列數。不容許負值
auto: 根據 <' column-width '> 自定分配寬度
column-gap:<'length'> | normal
功能:設置或檢索對象的列與列之間的間隙
適用於:定義了多列的元素
計算值:絕對長度值或者normal
column-rule:<' column-rule-width '> || <' column-rule-style '> || <' column-rule-color '>
功能:設置或檢索對象的列與列之間的邊框。與border屬性相似。
適用於:定義了多列的元素
columns:<' column-width '> || <' column-count '>
功能:設置或檢索對象的列數和每列的寬度
適用於:除table外的非替換塊級元素, table cells, inline-block元素
<' column-width '>: 設置或檢索對象每列的寬度
<' column-count '>: 設置或檢索對象的列數
IE11+zhic
display:flex 彈性盒
flex: auto; 表明不按比例, 平均分配
流式佈局的特色是頁面元素的寬度按照屏幕分辨率進行適配調整,但總體佈局不變。表明做柵欄系統(網格系統)。
"流動佈局"的含義是,各個區塊的位置都是浮動的,不是固定不變的(他媽的, 都不能像這樣總結幹練簡潔一點的!!!)
網頁中主要的劃分區域的尺寸使用百分數(搭配min-、max-屬性使用),例如,設置網頁主體的寬度爲80%,min-width爲960px。圖片也做相似處理(width:100%, max-width通常設定爲圖片自己的尺寸,防止被拉伸而失真)。
固定佈局和流式佈局在網頁設計中最經常使用的兩種佈局方式。固定佈局能呈現網頁的原始設計效果,流式佈局則不受窗口寬度影響,流式佈局使用百分比寬度來限定佈局元素,這樣能夠根據客戶端分辨率的大小來進行合理的顯示.
瀑布流佈局是流式佈局的一種, 視覺表現爲良莠不齊的多欄佈局,隨着頁面滾動條向下滾動.
一些說明:
http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html
此概念是響應式佈局的前提和關鍵。
<link media="screen and (width:800px)" rel="stylesheet" href="example.css" />
<?xml-stylesheet media="screen and (width:800px)" rel="stylesheet" href="example.css" ?>
@media [not|only] media_type and feature
media (min-device-width:1024px) and (max-width:989px),screen and (max-device-width:480px),(max-device-width:480px) and (orientation:landscape),(min-device-width:480px) and (max-device-width:1024px) and (orientation:portrait) { CSS樣式... }
and表示與,條件要同時知足;逗號表示或。
respond.js是一個用於讓IE8如下瀏覽器支持@media queries的插件
引入方法
<!--[if lt IE 9]> <script src="html5shiv.js"></script> <script src="respond.min.js"></script> <![endif]-->
這樣的好處是能把握好最核心最關鍵內容,讓界面簡潔。
參考資料: http://elevenbeans.github.io/2018/01/12/front-end-layout-methods/
Responsive Web Design
響應式設計基於響應式佈局,使用同一套頁面在各類各樣不一樣大小的設備上進行大小合適、佈局(甚至功能)合理的展示。
響應式設計會根據識別屏幕寬度對於展現的具體內容塊進行位置調整,甚至展現和隱藏。
實現方式:
Adaptive Web Design
自適應設計是經過服務端檢測設備類型、從 site 的不一樣版本中選擇最合適該設備類型的設計佈局/尺寸的版本進行展現。它可使用到全部(包括響應式佈局)佈局方案。
實現方式:
CSS不像其它高級語言同樣支持算術運算、變量、流程控制與面向對象特性,因此CSS樣式較多時會引發一些問題,如修改複雜,冗餘,某些別的語言很簡單的功能實現不了等。而javascript則是一種半面向對象的動態語言,有java的影子,有C的味道,中間有比其它語言多的糟粕,使用預處理辦法能夠解決這些問題。其中Less[les]與Sass是CSS的預處理技術,而CoffeeScript、TypeScript則是javascript的預處理技術。
相似.NET針對SQL語句而實現的Linq
以mui爲例:
- dist: 目標, 最後輸出的結果
- fonts: web fonts
- grunt:前端工程化會用到
- js: javascript
- plugin: 插件
- template: 模板
- sass: css預處理
以@爲標誌
相似函數或宏
.boxShadow(@x:0,@y:0,@blur:1px,@color:#000){ box-shadow: @arguments; }
color:red; //... color:yellow; //編譯後,@color均爲yellow
容許將多個CSS選擇器嵌套在一塊兒,&表示當前選擇器的父選擇器
在使用嵌套規則時,須要特別注意 & 符號。內層選擇器前面的 & 符號就表示對父選擇器的引用。在一個內層選擇器的前面,若是沒有 & 符號,則它被解析爲父選擇器的後代;若是有 & 符號,它就被解析爲父元素自身或父元素的僞類。
好比,上述代碼中,因爲選擇器 h1 前面沒有 & 符號,則h1 被解析爲 header 選擇器的後代,即 header h1;而 :hover 和 .slogan 前面有 & 符號,& 符號表示對父選擇器的引用,則 &.slogan 表示父元素自身,&:hover 表示父元素的僞類,解析結果爲 a:hover 和 p.slogan。
運算主要是針對任何數字、顏色、變量的操做,支持加、減、乘、除、()或者更復雜的綜合運算;
Less 提供了許多用於轉換顏色,處理字符串和進行算術運算的函數
函數使用說明:http://www.lesscss.net/functions/
注意 data-uri 能夠把外部資源
轉換爲內嵌資源
, 能夠作作功課
loops函數
同一級的變量後者覆蓋前者,內部變量優先級高於外部變量,變量只在同一個文件中生效
真正編譯的時候, 有些註釋會被消掉
less重要的是函數的內容
以$爲標誌
$
標記
同Less語法一致
同Less語法一致
sass中如導入其餘sass文件,最後編譯爲一個css文件,優於純css的@import
導入以後, 一些其餘文件的變量能夠跨文件使用
sass中可用mixin定義一些代碼片斷,且可傳參數,方便往後根據需求調用。今後處理css3的前綴兼容輕鬆便捷。定義時使用關鍵字@mixin,調用時使用@include
不過, Sass沒有@argument參數
mixin circle($size:100px,$color:lightblue){ width: $size; height: $size; border-radius: $size/2; background: $color; } .cls41{ @include circle(); } .cls42{ @include circle(150px); } .cls43{ @include circle(200px,lightgreen); }
sass可經過@extend來實現代碼組合聲明,使代碼更加優越簡潔
.class1{ // ... } .class2{ extend .class1; }
sass中和其它程序語言同樣也擁有流程控制語句,如if,for,each,while,指令,函數等。
已是過去式了...
是一種翻譯語言, 也叫預編譯語言
TypeScript是一種由微軟開發的自由和開源的編程語言,它是JavaScript的一個超集,擴展了JavaScript的語法,並且本質上向這個語言添加了可選的靜態類型
和基於類的面向對象
編程。
在PC端開發的時候,要注意IE9如下的兼容,移動端開發時,能夠比較放心了
HTML兼容
能適應不一樣的分辨率與色彩深度
瀏覽器兼容在線測試:https://turbo.net
IE條件註釋(Conditional comments)是IE瀏覽器私有的代碼,在其它瀏覽器中被視爲註釋。
<!--[if ie]>代碼<![endif]-->
<!--[if IE]>用於 IE <![endif]--> <!--[if IE 6]>用於 IE6 <![endif]--> <!--[if IE 7]>用於 IE7 <![endif]--> <!--[if IE 8]>用於 IE8 <![endif]--> <!--[if IE 9]>用於 IE9 <![endif]--> <!--[if gt IE 6]> 用於 IE6 以上版本<![endif]--> <!--[if lte IE 7]> 用於 IE7或更低版本 <![endif]--> <!--[if gte IE 8]>用於 IE8 或更高版本 <![endif]--> <!--[if lt IE 9]>用於 IE9 如下版本<![endif]--> <!--[if !IE 8]> -->用於非 IE <!-- <![endif]-->
gt : greater than,選擇條件版本以上版本,不包含條件版本 >
lt : less than,選擇條件版本如下版本,不包含條件版本 <
gte : greater than or equal,選擇條件版本以上版本,包含條件版本>=
lte : less than or equal,選擇條件版本如下版本,包含條件版本 <=
! : 選擇條件版本之外全部版本,不管高低
在CSS樣式的屬性名前或值後面添加特殊的字符讓不一樣的瀏覽器解析
http://browserhacks.com/ 在線查詢, 這一個功能強大的提供各類針對性兼容辦法的網站,很是實用。
「-″下劃線是IE6專有的hack
「\9″ IE6/IE7/IE8/IE9/IE10都生效
「\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack
「\9\0″ 只對IE9/IE10生效,是IE9/10的hack
@media screen\9{...}只對IE6/7生效
文檔模式的主要做用是影響瀏覽器顯示網頁HTML的方式,用於指定IE的頁面排版引擎(Trident)以哪一個版本的方式來解析並渲染網頁代碼。
//檢測IE各個版本,非IE返回0 var ieVersion = /*@cc_on (function() {switch(@_jscript_version) {case 1.0: return 3; case 3.0: return 4; case 5.0: return 5; case 5.1: return 5; case 5.5: return 5.5; case 5.6: return 6; case 5.7: return 7; case 5.8: return 8; case 9: return 9; case 10: return 10;}})() || @*/ 0; alert(ieVersion); var isIE = !!window.ActiveXObject; alert(isIE);
要提升前端性能能夠從如下幾個方面入手:
1)、儘可能減小HTTP請求數量
2)、壓縮
3)、緩存
4)、使用內容發佈網絡(CDN的使用)
5)、DNS Prefetch
6)、將CSS樣式表放在頂部
7)、將javascript腳本放在底部
8)、使用外部javascript和CSS
9)、避免重定向
可使用Dreamweaver來實現, 也叫熱點地圖. 使用一張圖片, 和定位來實現;
所謂的內聯資源就是將一些小的資源文件序列化成base64的編碼,放在CSS樣式或頁面中,在客戶端再解析,優勢是合併了小的文件,減小請求,把二進制變成了字符串方便存儲,可是會出一個沒有意義的長字符串影響開發時閱讀代碼,另外在某些狀況下將失去圖片的緩存。
該技術, 比較適合複用度比較高, 比較小的圖片\文本\字體
軟件: JSCompress.cn
進行base64編碼
將多個小的離散的css、js文件合併,注意粒度,把多個請求變成1個請求
軟件:
copy a.js+b.js+c.js abc.js /b
Jscompres
CssGaga
GZIP,即網頁壓縮,是由WEB服務器和瀏覽器之間共同遵照的協議
Gzip一般能夠減小70%網頁內容的大小,包括腳本、樣式表、圖片等文件
<meta http-equiv="Expires" content="Tue, 01 Dec 2015 13:30:26 GMT" />
Expires是Web服務器響應消息頭字段,在響應http請求時告訴瀏覽器在過時時間前瀏覽器能夠直接從瀏覽器緩存取數據,而無需再次請求新內容,可使用客戶端緩存的內容,可是請求仍是會發生,狀態爲304。瀏覽器會默認開啓緩存功能。
LocalStorage、SessionStorage、Web SQL Database
ApplicationCache,在斷開服務器時仍然可使用客戶端的緩存文件,繼續瀏覽。
將動態內容,須要複雜計算的內容變成靜態的如HTML、JavaScript
這個技術, 能夠試用.
CDN的全稱是Content Delivery Network,即內容分發網絡。其基本思路是儘量避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定,它是一個經策略性部署的總體系統,包括分佈式存儲、負載均衡、網絡請求的重定向和內容管理4個要件。
DNS Prefetch 是一種 DNS 預解析技術。當你瀏覽網頁時,瀏覽器會在加載網頁時對網頁中的域名進行解析緩存,這樣在你單擊當前網頁中的鏈接時就無需進行 DNS 的解析,減小用戶等待時間,提升用戶體驗。