中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      現(xiàn)代CSS代碼的編寫建議

      時間:2024-07-27 00:13:37 CSS 我要投稿
      • 相關(guān)推薦

      現(xiàn)代CSS代碼的編寫建議

        你看過編寫現(xiàn)代CSS代碼的20個建議?現(xiàn)代CSS代碼如何編寫比較容易?yjbys小編為大家一一列舉如下:

        明白何謂Margin Collapse

        不同于其他很多屬性,盒模型中垂直方向上的Margin會在相遇時發(fā)生崩塌,也就是說當(dāng)某個元素的底部Margin與另一個元素的頂部Margin相鄰時,只有二者中的較大值會被保留下來,可以從下面這個簡單的例子來學(xué)習(xí):

        .square {

        width: 80px;

        height: 80px;

        }

        .red {

        background-color: #F44336;

        margin-bottom: 40px;

        }

        .blue {

        background-color: #2196F3;

        margin-top: 30px;

        }

        在上述例子中我們會發(fā)現(xiàn),紅色和藍色方塊的外邊距并沒有相加得到70px,而是只有紅色的下外邊距保留了下來。我們可以使用一些方法來避免這種行為,不過建議來說還是盡量統(tǒng)一使用margin-bottom屬性,這樣就顯得和諧多了。

        使用Flexbox進行布局

        CSS實戰(zhàn)之Flex詳解以及其在微信中的兼容實現(xiàn)

        在傳統(tǒng)的布局中我們習(xí)慣使用Floats或者inline-blocks,不過它們更適合于格式化文檔,而不是整個網(wǎng)站。而Flexbox則是專門的用于進行布局的工具。Flexbox模型允許開發(fā)者使用很多便捷可擴展的屬性來進行布局,估計你一旦用上就舍不得了:

        .container {

        display: flex;

        /* Don't forget to add prefixes for Safari */display: -webkit-flex;

        }

        我們已經(jīng)在Tutorialzine上提供了很多的關(guān)于Flexbox的介紹與小技巧,譬如5 Flexbox Techniques You Need to Know About。

        使用CSS Reset

        雖然這些年來隨著瀏覽器的迅速發(fā)展與規(guī)范的統(tǒng)一,瀏覽器特性碎片化的情況有所改善,但是在不同的瀏覽器之間仍然存在著很多的行為差異。而解決這種問題的最好的辦法就是使用某個CSS Reset來為所有的元素設(shè)置統(tǒng)一的樣式,保證你能在相對統(tǒng)一干凈的樣式表的基礎(chǔ)上開始工作。目前流行的Reset庫有 normalize.css, minireset以及 ress ,它們都可以修正很多已知的瀏覽器之間的差異性。而如果你不打算用某個外在的庫,那么建議可以使用如下的基本規(guī)則:

        * {

        margin: 0;

        padding: 0;

        box-sizing: border-box;

        }

        上面的規(guī)則看起來沒啥用,不過如果不同的瀏覽器在默認情況下為你設(shè)置了不同的外邊距/內(nèi)邊距的默認值,還是會挺麻煩的。

        一切應(yīng)為Border-box

        雖然很多初學(xué)者并不了解box-sizing這個屬性,但是它確實相當(dāng)?shù)闹匾6詈玫睦斫馑姆绞骄褪强纯此膬煞N取值:

        默認值為content-box,即當(dāng)我們設(shè)置某個元素的heght/width屬性時,僅僅會作用于其內(nèi)容尺寸。而所有的內(nèi)邊距與邊都是在其之上的累加,譬如某個<div>標(biāo)簽設(shè)置為寬100,內(nèi)邊距為10,那么最終元素會占用120(100 + 2*10)的像素。

        border-box:內(nèi)邊距與邊是包含在了width/height之內(nèi),譬如設(shè)置了width:100px的<div>無論其內(nèi)邊距或者邊長設(shè)置為多少,其占有的大小都是100px。

        將元素設(shè)置為border-box會很方便你進行樣式布局,這樣的話你就可以在父元素設(shè)置高寬限制而不擔(dān)心子元素的內(nèi)邊距或者邊打破了這種限制。

        以背景圖方式使用Images

        如果需要在響應(yīng)式的環(huán)境下展示圖片,有個簡單的小技巧就是使用該圖片作為某個<div>的背景圖而不是直接使用img標(biāo)簽。基于這種方式配合上background-size與background-position這兩個屬性,可以很方便地按比例縮放:

        img {

        width: 300px;

        height: 200px;

        }

        div {

        width: 300px;

        height: 200px;

        background: url('http://cdn.tutorialzine.com/wp-content/uploads/2016/08/bicycle.jpg');

        background-position: center center;

        background-size: cover;

        }

        section{

        float: left;

        margin: 15px;

        }

        不過這種方式也是存在缺陷的,譬如你無法設(shè)置圖片的懶加載、圖片無法被搜索引擎或者其他類似的工具抓取到,有個不錯的屬性叫object-fit可以解決這個問題,不過該屬性目前的瀏覽器支持并不是很完善。

        Better Table Borders

        HTML中使用Tables進行布局一直是個很頭疼的問題,它們使用起來很簡單,但是無法進行響應(yīng)式操作,并且也不方便進行全局樣式設(shè)置。譬如,如果你打算為Table的邊與單元的邊添加樣式,可能得到的結(jié)果如下:

        table {

        width: 600px;

        border: 1px solid #505050;

        margin-bottom: 15px;

        color:#505050;

        }

        td{

        border: 1px solid #505050;

        padding: 10px;

        }

        這里存在的問題是出現(xiàn)了很多的重復(fù)的邊,會導(dǎo)致視覺上不協(xié)調(diào)的情況,那么我們可以通過設(shè)置border-collapse:collapse來進行處理:

        注釋格式優(yōu)化

        CSS雖然談不上一門編程語言但是其仍然需要添加注釋以保障整體代碼的可讀性,只要添加些簡單的注釋不僅可以方便你更好地組織整個樣式表還能夠讓你的同事或者未來的自己更好地理解。對于CSS中整塊的注釋或者使用在Media-Query中的注釋,建議是使用如下形式:

        /*---------------

        #Header

        ---------------*/header { }header nav { }/*---------------

        #Slideshow

        ---------------*/.slideshow { }

        而設(shè)計的細節(jié)說明或者一些不重要的組件可以用如下單行注釋的方式:

        /*   Footer Buttons   */   .footer button { }

        .footer button:hover { }

        同時,不要忘了CSS中是沒有//這種注釋方式的:

        /*  Do  */p {

        padding: 15px;

        /*border: 1px solid #222;*/   }/*  Don't  */p {

        padding: 15px;

        // border: 1px solid #222;     }

        使用Kebab-case命名變量

        對于樣式類名或者ID名的命名都需要在多個單詞之間添加-符號,CSS本身是大小寫不敏感的因此你是用不了camelCase的,另一方面,很久之前也不支持下劃線,所以現(xiàn)在的默認的命名方式就是使用-:

        /*  Do     */   .footer-column-left { }

        /*  Don't  */   .footerColumnLeft { }

        .footer_column_left { }

        而涉及到具體的變量命名規(guī)范時,建議是使用BEM規(guī)范,只要遵循一些簡單的原則即可以保證基于組件風(fēng)格的命名一致性。你也可以參考CSS Tricks來獲得更多的細節(jié)描述。

        避免重復(fù)代碼

        大部分元素的CSS屬性都是從DOM樹根部繼承而來,這也是其命名為級聯(lián)樣式表的由來。我們以font屬性為例,該屬性往往是繼承自父屬性,因此我們并不需要再單獨地為元素設(shè)置該屬性。我們只需要在html或者body中添加該屬性然后使其層次傳遞下去即可:

        html {

        font: normal 16px/1.4 sans-serif;

        }

        使用transform添加CSS Animations

        不建議直接改變元素的width與height屬性或者left/top/bottom/right這些屬性來達到動畫效果,而應(yīng)該優(yōu)先使用transform()屬性來提供更平滑的變換效果,并且能使得代碼的可讀性會更好:

        .ball {

        left: 50px;

        transition: 0.4s ease-out;

        }/* Not Cool*/.ball.slide-out {

        left: 500px;

        }/* Cool*/.ball.slide-out {

        transform: translateX(450px);

        }

        Transform的幾個屬性translate、rotate、scale都具有比較好的瀏覽器兼容性可以放心使用。

        不要重復(fù)造輪子

        現(xiàn)在CSS社區(qū)已經(jīng)非常龐大,并且不斷地有新的各式各樣的庫開源出來。這些庫可以幫助我們解決從小的代碼片到用于構(gòu)建完整的響應(yīng)式應(yīng)用的全框架。所以如果下次你再碰到什么CSS問題的時候,在打算擼起袖子自己上之前可以嘗試在GitHUB或者CodePen上搜索可行方案。

        盡可能使用低優(yōu)先級的選擇器

        并不是所有的CSS選擇器的優(yōu)先級都一樣,很多初學(xué)者在使用CSS選擇器的時候都是考慮以新的特性去復(fù)寫全部的繼承特性,不過這一點在某個元素多狀態(tài)時就麻煩了,譬如下面這個例子:

        a{

        color: #fff;

        padding: 15px;

        }

        a#blue-btn {

        background-color: blue;

        }

        a.active {

        background-color: red;

        }

        我們本來希望將.active類添加到按鈕上然后使其顯示為紅色,不過在上面這個例子中很明顯起不了作用,因為button已經(jīng)以ID選擇器設(shè)置過了背景色,也就是所謂的Higher Selector Specificity。一般來說,選擇器的優(yōu)先級順序為:ID(#id) > Class(.class) > Type(header)

        避免使用!important

        認真的說,千萬要避免使用!important,這可能會導(dǎo)致你在未來的開發(fā)中無盡的屬性重寫,你應(yīng)該選擇更合適的CSS選擇器。而唯一的可以使用!important屬性的場景就是當(dāng)你想去復(fù)寫某些行內(nèi)樣式的時候,不過行內(nèi)樣式本身也是需要避免的。

        使用text-transform屬性設(shè)置文本大寫

        <div class="movie-poster">Star Wars: The Force Awakens</div>

        .movie-poster {

        text-transform: uppercase;

        }

        Em, Rem, 以及 Pixel

        已經(jīng)有很多關(guān)于人們應(yīng)該如何使用em,rem,以及px作為元素尺寸與文本尺寸的討論,而筆者認為,這三個尺寸單位都有其適用與不適用的地方。不同的開發(fā)與項目都有其特定的設(shè)置,因此并沒有通用的規(guī)則來決定應(yīng)該使用哪個單位,這里是我總結(jié)的幾個考慮:

        em – 其基本單位即為當(dāng)前元素的font-size值,經(jīng)常適用于media-queries中,em是特別適用于響應(yīng)式開發(fā)中。

        rem – 其是相對于html屬性的單位,可以保證文本段落真正的響應(yīng)式尺寸特性。

        px – Pixels 并沒有任何的動態(tài)擴展性,它們往往用于描述絕對單位,并且可以在設(shè)置值與最終的顯示效果之間保留一定的一致性。

        在大型項目中使用預(yù)處理器

        估計你肯定聽說過 Sass, Less, PostCSS, Stylus這些預(yù)處理器與對應(yīng)的語法。Preprocessors可以允許我們將未來的CSS特性應(yīng)用在當(dāng)前的代碼開發(fā)中,譬如變量支持、函數(shù)、嵌套式的選擇器以及很多其他的特性,這里我們以Sass為例:

        $accent-color: #2196F3;

        a {

        padding: 10px 15px;

        background-color: $accent-color;

        }

        a:hover {

        background-color: darken($accent-color,10%);

        }

        使用Autoprefixers來提升瀏覽器兼容性

        使用特定的瀏覽器前綴是CSS開發(fā)中常見的工作之一,不同的瀏覽器、不同的屬性對于前綴的要求也不一樣,這就使得我們無法在編碼過程中記住所有的前綴規(guī)則。并且在寫樣式代碼的時候還需要加上特定的瀏覽器前綴支持也是個麻煩活,幸虧現(xiàn)在也是有很多工具可以輔助我們進行這樣的開發(fā):

        Online tools: Autoprefixer

        Text editor plugins: Sublime Text, Atom

        Libraries: Autoprefixer (PostCSS)

        在生產(chǎn)環(huán)境下使用Minified代碼

        為了提升頁面的加載速度,在生產(chǎn)環(huán)境下我們應(yīng)該默認使用壓縮之后的資源代碼。在壓縮的過程中,會將所有的空白與重復(fù)剔除掉從而減少整個文件的體積大小。當(dāng)然,經(jīng)過壓縮之后的代碼毫無可讀性,因此在開發(fā)階段我們還是應(yīng)該使用普通的版本。對于CSS的壓縮有很多的現(xiàn)行工具:

        Online tools – CSS Minifier (API included), CSS Compressor

        Text editor plugins: Sublime Text, Atom

        Libraries: Minfiy (PHP), CSSO and CSSNano (PostCSS, Grunt, Gulp)

        選擇哪個工具肯定是依賴于你自己的工作流啦~

        多參閱Caniuse

        不同的瀏覽器在兼容性上差異很大,因此如果我們可以針對我們所需要適配的瀏覽器,在caniuse上我們可以查詢某個特性的瀏覽器版本適配性,是否需要添加特定的前綴或者在某個平臺上是否存在Bug等等。不過光光使用caniuse肯定是不夠的,我們還需要使用些額外的服務(wù)來進行檢測。

        Validate:校驗

        對于CSS的校驗可能不如HTML校驗或者JavaScript校驗?zāi)敲粗匾贿^在正式發(fā)布之前用Lint工具校驗一波你的CSS代碼還是很有意義的。它會告訴你代碼中潛在的錯誤,提示你一些不符合最佳實踐的代碼以及給你一些提升代碼性能的建議。就像Minifers與Autoprefixers,也有很多可用的工具:

        Online tools: W3 Validator, CSS Lint

        Text editor plugins: Sublime Text, Atom

        Libraries: stylelint (Node.js, PostCSS), css-validator (Node.js)

      【現(xiàn)代CSS代碼的編寫建議】相關(guān)文章:

      高效編寫JavaScript代碼的技巧08-25

      網(wǎng)頁程序設(shè)計之分享幾個css小眾代碼08-09

      J2EE項目代碼編寫規(guī)范01-23

      防盜鏈接ASP函數(shù)實現(xiàn)代碼01-23

      常用排序算法之JavaScript實現(xiàn)代碼段06-04

      關(guān)jQuery彈出窗口簡單實現(xiàn)代碼-javascript編程06-07

      CSS最核心的概念03-10

      css屬性定位教程07-23

      CSS入門教程01-25

      過濾HTML代碼08-29

      主站蜘蛛池模板: 97久久久人妻精品区一 | 中文字幕av久久激情亚洲精品| 蜜桃av夺取一区二区三区| 东京热无码人妻中文字幕| 成激情人妻视频| 日韩人妻精品一区二区在线推荐| 久久黄色蜜桃av一区| 温泉县| 国产精品熟女孕妇一区二区| 蜜桃av一区二区高潮久久精品 | 美女窝人体色www网站| 国产一区二区三区免费在线视频| 国产日韩一区二区精品| 青浦区| 三门县| 临沂市| 阳西县| 东兴市| 边坝县| 自治县| 白银市| 曰韩久久精品中文字幕| 无码中文字幕专区一二三| 亚洲素人日韩av中文字幕| 日本伦理一区二区三区| 在线观看国产三级av| 国产午夜av一区二区三区| 久久免费精品视频老逼| 青青草极品视频在线播放 | 亚洲精品白浆高清久久| 亚洲av国产成人精品区| 9l久久午夜精品一区二区| 亚洲一区二区精品久久岳| 精品国产乱来一区二区三区| 美女高潮流白浆视频在线观看| 中日韩欧美高清在线播放| 亚洲狠狠婷婷综合久久久| 中国产无码一区二区三区| 精品国产AⅤ一区二区三区V免费| 久九九久视频精品网站| 精品女同一区二区三区不卡|