REM 和 EM 的區別是什麼css
圖片
手機端方案的特色html
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <script> var pageWidth = window.innerWidth document.write('<style>html{font-size:'+pageWidth+'px;}</style>') </script>
font-size: 16px; border: 1px solid red; width: 0.5rem;
在 SCSS 裏使用 PX2REM前端
node-sass -wr scss -o cssnode
編輯 scss 文件就會自動獲得 css 文件web
在 scss 文件裏添加npm
便可實現 px 自動變 rem@function px( $px ){ @return $px/$designWidth*10 + rem; } $designWidth : 640; // 640 是設計稿的寬度,你要根據設計稿的寬度填寫。若是設計師的設計稿寬度不統一,就殺死設計師,換個新的。 .child{ width: px(320); height: px(160); margin: px(40) px(40); border: 1px solid red; float: left; font-size: 1.2em; }
sass 安裝 https://www.sass.hk/install/ 打開sass中文教程
下面就可使用了。瀏覽器
1,在桌面新建一個文件夾。測試一下。打開編輯器新建前端三劍客。html,css,js。新建一個style.scss的文件。按照教程中的sass語法進行編譯便可sass
使用 Sass 進行開發,那麼是否是直接經過「<link>」引用「.scss」或「.sass」文件呢?bash
那麼這裏告訴你們,在項目中仍是引用「.css」文件,Sass 只不過是作爲一個預處理工具,提早幫你作事情,只有你須要時候,他纔有攻效。app
這樣一來,也就有了這章須要介紹的內容—— Sass 的編譯。由於 Sass 開發以後,要讓 Web 頁面能調用 Sass 寫好的東西,就得有這麼一個過程,這個過程就稱之爲 Sass 編譯過程。Sass 的編譯有多種方法:命令行編譯,GUI圖形編譯 Koala (http://koala-app.com/) 自動動化編譯的同窗,應該都知道 Grunt 和 Gulp
運行命令行編譯;(我以爲是很簡單的)
//單文件轉換命令 sass input.scss output.css //單文件監聽命令 sass --watch input.scss:output.css //若是你有不少的sass文件的目錄,你也能夠告訴sass監聽整個目錄: sass --watch app/sass:public/stylesheets
到這裏,基本上就可使用sass了。這裏有一個很迷惑的地方。就是sass與scss的關係。咱們是學習sass的怎麼使用scss的。這就要往前說歷史了。喜歡探究的能夠GG一下。總之你知道scss所屬於sass就能夠了。
使用技巧:
1,css嵌套輸出方式(就是css縮進的方式)
編譯的時候能夠定義 sass --watch test.scss:test.css --style nested
2,在瀏覽器編輯直接更改、不須要在複製粘貼了,簡直是神器。
Sass 調試一直以來都是一件頭痛的事情,使用 Sass 的同窗都但願能在瀏覽器中直接調試 Sass 文件,能找到對應的行數。值得慶幸的是,如今實現並非一件難事,只要你的瀏覽器支持「sourcemap」功能便可。早一點的版本,須要在編譯的時候添加「--sourcemap」 參數:
sass --watch --scss --sourcemap style.scss:style.css
在 Sass3.3 版本之上(我測試使用的版本是 3.4.7),不須要添加這個參數也能夠:
sass --watch style.scss:style.css
在命令終端,你將看到一個信息:
>>> Change detected to: style.scss
write style.css
write style.css.map
這時你就能夠像前面展現的 gif 圖同樣,調試你的 Sass 代碼
(這種方法可能有的人作會有問題)
下面有一種更簡單的
sass 使用教程
1.聲明變量用 「$」 $width:300px; 寫法與css同樣、聲明變量後下面都使用變量。後期維護草雞方便。
變量分爲普通變量和默認變量、 局部變量、全局變量、默認變量後面須要加 !default;全局變量定義在上面。局部變量定義在選擇器內。調用方法都是同樣的、
那麼上面時候聲明變量呢???
個人建議,建立變量只適用於感受確有必要的狀況下。不要爲了某些駭客行爲而聲明新變量,這絲毫沒有做用。只有知足全部下述標準時方可建立新變量:
&
表明嵌套規則外層的父選擇器佔位符
Sass 中的佔位符 %placeholder 功能是一個很強大,很實用的一個功能,這也是我很是喜歡的功能。他能夠取代之前 CSS 中的基類形成的代碼冗餘的情形。由於 %placeholder 聲明的代碼,若是不被 @extend 調用的話,不會產生任何代碼。來看一個演示:
%mt5 { margin-top: 5px; } %pt5{ padding-top: 5px; }
//SCSS
%mt5 {
margin-top: 5px;
}
%pt5{ padding-top: 5px; } .btn { @extend %mt5; @extend %pt5; } .block { @extend %mt5; span { @extend %pt5; } }編譯出來的代碼相同的樣式會自動合併(.btn, .block { margin-top: 5px; })
今天又點看不下去了。暫停一下