實用的CSS高級技巧 Part1

1 偽類選擇器

1.1 :empty 選擇內(nèi)容為空的元素。:not(:empty) 不為空的元素。

舉個栗子:

<body>
  <div class="Alert">
    <p>Success! Your profile has been updated.</p>
  </div>
  <div class="Alert">
  </div>
</body>
.Alert {
  border: 3px solid darkgreen;
  margin: 1em;
  padding: 1em;
  background-color: seagreen;
  color: white;
  border-radius: 4px;
}
Screen Shot 2017-04-03 at 12.15.04 PM.png

如果想讓空的alert隱藏可以:

.Alert:empty {
  display: none;
 } 

但更簡單的方法是:

.Alert:not(:empty) {
  border: 3px solid darkgreen;
  margin: 1em;
  padding: 1em;
  background-color: seagreen;
  color: white;
  border-radius: 4px;
} 

這樣的嵌套式使用偽類選擇器的例子還有很多
比如:not(:last-child),:not(:first-child)。

1.2 選擇同類元素中的第一個/第n個/唯一一個等。也非常實用。

first-of-type
last-of-type
only-of-type

nth-of-type(odd)
nth-of-type(even)
nth-of-type(3)
nth-of-type(4n+3)

2.calc()實現(xiàn)響應(yīng)式設(shè)計

比如一個這樣結(jié)構(gòu)的網(wǎng)頁,包含nav,main,aside三部分。

Screen Shot 2017-04-03 at 1.19.38 PM.png
nav {
  position: fixed;
  top: 0;
  left: 0;
  width: 5rem;
  height: 100%;
}
aside {
  position: fixed;
  top: 0;
  right: 0;
  height: 100%;
  width: 20rem;
}

當(dāng)屏幕尺寸變化的時候,希望保持當(dāng)前的布局,讓中間的content隨之變化,只需要一行css就能實現(xiàn)了。

main {
 margin-left: 5rem;
 width: calc(100% - 25rem);
}

如下圖gif動圖展示效果:


responsivecontent.gif

再加上一些media query,就是一個完整的針對移動設(shè)備和pc的響應(yīng)式css。

3.用vh,vw規(guī)定元素大小

經(jīng)常被使用到的單位是px,em,rem
你有沒有用過更簡單的vh,vw呢,這兩個單位是相對于當(dāng)前viewport的百分比??梢院芎唵蔚目刂圃卦趘iewport中的相對位置:

.Box {
  height: 40vh;
  width: 50vw;
  margin: 30vh 25vw;
}

只需要這一點點css就能讓box這個元素不論viewport size如何變化都保持永遠居中。因為height+marginTop+ marginBottom = 100vh, width+marginLeft+marginRight = 100vw。

alwaycenter.gif

用這樣的方法很簡單就能寫出一個整頁page上下滑的網(wǎng)頁效果:

ezgif.com-resize.gif

沒有用到任何js,非常簡單的css,如下:

section {
  width: 100vw;
  height: 100vh;
  
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  
  background-size: cover;
  background-repeat: no-repeat;
  background-attachment: fixed;
} 

如果覺得有用,請給我點個贊吧(? ??_??)?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,204評論 1 92
  • 本文轉(zhuǎn)載自:眾成翻譯譯者:為之漫筆鏈接:http://www.zcfy.cc/article/239原文:http...
    極樂君閱讀 7,557評論 1 62
  • 1.class 和 id 的使用場景? 類選擇器允許以一種獨立于文檔元素的方式來指定樣式。該選擇器可以單獨使用,也...
    草鞋弟閱讀 2,560評論 0 1
  • #我的第一個文檔#
    魔芋Brace閱讀 399評論 0 1
  • 上了大學(xué),有這樣一件事很尷尬——原來你以前沒有男(女)朋友不是因為學(xué)校禁止早戀。看過很多關(guān)于上大學(xué)的雞湯文,認(rèn)為大...
    2d2d68835291閱讀 574評論 2 1

友情鏈接更多精彩內(nèi)容