12个CSS高級技能汇总

2020-10-18 22:31 jianzhan
1、应用 :not() 在菜单上运用/撤销运用边框

先给每个菜单项加上边框
CSS Code拷贝內容到剪贴板
  1. /* add border */  
  2. .nav li {   
  3. border-right1px solid #666;   
  4. }   
  5. 随后再去除最终1个元素……   
  6.   
  7. //* remove border */  
  8. .nav li:last-child {   
  9. border-rightnone;   
  10. }   
  11. 能够立即应用 :not() 伪类来运用元素:   
  12. .nav li:not(:last-child) {   
  13. border-right1px solid #666;   
  14. }  

这样编码就整洁,易读,易于了解了。
自然,假如你的新元素有弟兄元素的话,还可以应用通用性的弟兄挑选符(~):

CSS Code拷贝內容到剪贴板
  1. .nav li:first-child ~ li {   
  2. border-left1px solid #666;   
  3. }  
2、给 body加上行高

你不必须各自加上 line-height 到每一个 <p>,<h*>等。要是加上到 body 便可:

CSS Code拷贝內容到剪贴板
  1. body {   
  2. line-height: 1;   
  3. }  

这样文字元素便可以很非常容易地从 body 承继。

3、全部1切都竖直垂直居中

要将全部元素竖直垂直居中,太简易了:

CSS Code拷贝內容到剪贴板
  1. html, body {   
  2. height: 100%;   
  3. margin: 0;   
  4. }   
  5.   
  6.   
  7. body {   
  8. -webkit-align-items: center;    
  9. -ms-flex-align: center;    
  10. align-items: center;   
  11. display: -webkit-flex;   
  12. display: flex;   
  13. }  


看,是否很简易。
注:在IE11中要当心flexbox。

4、逗号隔开的目录

让HTML目录项看上去像1个真实的,用逗号隔开的目录:

CSS Code拷贝內容到剪贴板
  1. ul > li:not(:last-child)::after {   
  2. content",";   
  3. }  

对最终1个目录项应用 :not() 伪类。

5、应用负的 nth-child 挑选新项目

在CSS中应用负的 nth-child 挑选新项目1到新项目n。

CSS Code拷贝內容到剪贴板
  1. li {   
  2. displaynone;   
  3. }   
  4.   
  5. /* select items 1 through 3 and display them */  
  6. li:nth-child(-n+3) {   
  7. displayblock;   
  8. }  


便是这么非常容易。

6、对标志应用SVG

大家沒有理由不对标志应用SVG:

CSS Code拷贝內容到剪贴板

  1. .logo {   
  2. backgroundurl("logo.svg");   
  3. }  


SVG对全部的辨别率种类都具备优良的拓展性,并适用全部访问器都重归到IE9。这样能够绕开.png、.jpg或.gif文档了。

7、提升显示信息文字

有时,字体样式其实不能在全部机器设备上都做到最好的显示信息,因此可让机器设备访问器来协助你:

CSS Code拷贝內容到剪贴板
  1. html {   
  2. -moz-osx-font-smoothing: grayscale;   
  3. -webkit-font-smoothing: antialiased;   
  4. text-rendering: optimizeLegibility;   
  5. }  


注:请承担责任地应用 optimizeLegibility。另外,IE /Edge沒有 text-rendering 适用。

8、对纯CSS滑块应用 max-height

应用 max-height 和外溢掩藏来完成仅有CSS的滑块:

CSS Code拷贝內容到剪贴板
  1. .slider ul {   
  2. max-height: 0;   
  3. overlow: hidden;   
  4. }   
  5.   
  6. .slider:hover ul {   
  7. max-height1000px;   
  8. transition: .3s ease;   
  9. }  

9、承继 box-sizing

让 box-sizing 承继 html:

CSS Code拷贝內容到剪贴板
  1. html {   
  2. box-sizing: border-box;   
  3. }   
  4.   
  5. *, *:before, *:after {   
  6. box-sizing: inherit;   
  7. }  

这样在软件或杆杠别的个人行为的别的组件中就可以更非常容易地更改 box-sizing 了。

10、报表模块格等宽

报表工作中起来很不便,因此尽量尽可能应用 table-layout: fixed 来维持模块格的等宽:

CSS Code拷贝內容到剪贴板
  1. .calendar {   
  2. table-layoutfixed;   
  3. }  


11、用Flexbox解决外边距的各种各样hack

当必须用到列隔开符时,根据flexbox的 space-between 特性,你便可以解决nth-,first-,和 last-child 的hack了:

CSS Code拷贝內容到剪贴板
  1. .list {   
  2. display: flex;   
  3. justify-content: space-between;   
  4. }   
  5.   
  6. .list .person {   
  7. flex-basis: 23%;   
  8. }  

如今,目录隔开符就会在匀称间距的部位出現。

12、应用特性挑选器用于空连接

当 <a> 元素沒有文字值,但 href 特性有连接的情况下显示信息连接:

CSS Code拷贝內容到剪贴板
  1. a[href^="http"]:empty::before {   
  2. contentattr(href);   
  3. }  

非常便捷。

这些高級技能在Chrome、Firefox、Safari、Edge确当前版本号,和IE11中都能合理工作中。

译文:http://www.codeceo.com/article/12-css-protips.html
英文:https://github.com/AllThingsSmitty/css-protips
汉语翻译作者:码农网 – 小峰