常用css技巧

1. 黑白圖像

這段代碼會讓你的彩色照片顯示為黑白照片,是不是很酷?

img.desaturate {

? ? filter: grayscale(100%);

? ? -webkit-filter: grayscale(100%);

? ? -moz-filter: grayscale(100%);

? ? -ms-filter: grayscale(100%);

? ? -o-filter: grayscale(100%);

}

2. 使用 :not() 在菜單上應用/取消應用邊框

先給每一個菜單項添加邊框

/* add border */

.nav li {

? border-right: 1px solid #666;

}

……然后再除去最后一個元素……

// remove border /

.nav li:last-child {

? border-right: none;

}

……可以直接使用 :not() 偽類來應用元素:

.nav li:not(:last-child) {

? border-right: 1px solid #666;

}

這樣代碼就干凈,易讀,易于理解了。

當然,如果你的新元素有兄弟元素的話,也可以使用通用的兄弟選擇符(~):

..nav li:first-child ~ li {

? border-left: 1px solid #666;

}

3. 頁面頂部陰影

下面這個簡單的?css3?代碼片段可以給網頁加上漂亮的頂部陰影效果:

body:before {

? ? ? ? ? content: "";

? ? ? ? ? position: fixed;

? ? ? ? ? top: -10px;

? ? ? ? ? left: 0;

? ? ? ? ? width: 100%;

? ? ? ? ? height: 10px;

? ? ? ? ? -webkit-box-shadow: 0px 0px 10px rgba(0,0,0,.8);

? ? ? ? ? -moz-box-shadow: 0px 0px 10px rgba(0,0,0,.8);

? ? ? ? ? box-shadow: 0px 0px 10px rgba(0,0,0,.8);

? ? ? ? ? z-index: 100;

}

4. 給 body 添加行高

你不需要分別添加 line-height 到每個p,h標記等。只要添加到 body 即可:

body {

? line-height: 1;

}

這樣文本元素就可以很容易地從 body 繼承。

5. 所有一切都垂直居中

要將所有元素垂直居中,太簡單了:

#####? 方法一

html, body {

? height: 100%;

? margin: 0;

}

body {

? -webkit-align-items: center;?

? -ms-flex-align: center;?

? align-items: center;

? display: -webkit-flex;

? display: flex;

}

#####? 方法二

.node{

width : 300px;

height : 400px;

position : absolute;

left : 50%;

top : 50%;

margin-left : -150px; /*一半的高度*/

margin-top : -200px;? /*一半的寬度*/

}

#####? 方法三

.node {

width: 600px;?

height: 400px;

position: absolute;?

left: 50%;?

top: 50%;

transform: translate(-50%, -50%);

/* 50%為自身尺寸的一半 */

}

#####? 方法四

.node {

width: 600px;

height: 400px;

position: absolute;

left: 0;

top: 0;

right: 0;

bottom: 0;

margin: auto;? ? /* 有了這個就自動居中了 */

}

看,是不是很簡單。

注意:在IE11中要小心flexbox。

6. 逗號分隔的列表

讓html列表項看上去像一個真正的,用逗號分隔的列表:

ul > li:not(:last-child)::after {

? content: ",";

}

對最后一個列表項使用 :not() 偽類。

7. 使用負的 nth-child 選擇項目

在CSS中使用負的 nth-child 選擇項目1到項目n。

li {

? display: none;

}

/* select items 1 through 3 and display them */

li:nth-child(-n+3) {

? display: block;

}

8. 對圖標使用 SVG

我們沒有理由不對圖標使用SVG:

.logo {

? background: url("logo.svg");

}

SVG對所有的分辨率類型都具有良好的擴展性,并支持所有瀏覽器都回歸到IE9。這樣可以避開.png、.jpg或.gif文件了。

9. 優化顯示文本

有時,字體并不能在所有設備上都達到最佳的顯示,所以可以讓設備瀏覽器來幫助你:

html {

? -moz-osx-font-smoothing: grayscale;

? -webkit-font-smoothing: antialiased;

? text-rendering: optimizeLegibility;

}

注:請負責任地使用 optimizeLegibility。此外,IE /Edge沒有 text-rendering 支持。

10. 對純 CSS 滑塊使用 max-height

使用 max-height 和溢出隱藏來實現只有CSS的滑塊:

.slider ul {

? max-height: 0;

? overlow: hidden;

}

.slider:hover ul {

? max-height: 1000px;

? transition: .3s ease;

}

11. 繼承 box-sizing

讓 box-sizing 繼承 html:

html {

? box-sizing: border-box;

}

*, *:before, *:after {

? box-sizing: inherit;

}

這樣在插件或杠桿其他行為的其他組件中就能更容易地改變 box-sizing 了。

12. 表格單元格等寬

表格工作起來很麻煩,所以務必盡量使用 table-layout: fixed 來保持單元格的等寬:

.calendar {

? table-layout: fixed;

}

13. 用 Flexbox 擺脫外邊距的各種 hack

當需要用到列分隔符時,通過flexbox的 space-between 屬性,你就可以擺脫nth-,first-,和 last-child 的hack了:

.list {

? display: flex;

? justify-content: space-between;

}

.list .person {

? flex-basis: 23%;

}

現在,列表分隔符就會在均勻間隔的位置出現。

14. 使用屬性選擇器用于空鏈接

當a元素沒有文本值,但 href 屬性有鏈接的時候顯示鏈接:

a[href^="http"]:empty::before {

? content: attr(href);

}

相當方便。

15. 檢測鼠標雙擊

HTML:


? Double click me

CSS:

.test3 span {

? position: relative;

}

.test3 span a {

? position: relative;

? z-index: 2;

}

.test3 span a:hover, .test3 span a:active {

? z-index: 4;

}

.test3 span input {

? background: transparent;

? border: 0;

? cursor: pointer;

? position: absolute;

? top: -1px;

? left: 0;

? width: 101%;? /* Hacky */

? height: 301%; /* Hacky */

? z-index: 3;

}

.test3 span input:focus {

? background: transparent;

? border: 0;

? z-index: 1;

}

16. CSS 寫出三角形

利用border來寫三角形代碼,并且兼容IE6.

/* create an arrow that points up */

div.arrow-up {

? width:0px;

? height:0px;

? border-left:5px solid transparent;? /* left arrow slant */

? border-right:5px solid transparent; /* right arrow slant */

? border-bottom:5px solid #2f2f2f; /* bottom, add background color here */

? font-size:0px;

? line-height:0px;

}

/* create an arrow that points down */

div.arrow-down {

? width:0px;

? height:0px;

? border-left:5px solid transparent;

? border-right:5px solid transparent;

? border-top:5px solid #2f2f2f;

? font-size:0px;

? line-height:0px;

}

/* create an arrow that points left */

div.arrow-left {

? width:0px;

? height:0px;

? border-bottom:5px solid transparent;? /* left arrow slant */

? border-top:5px solid transparent; /* right arrow slant */

? border-right:5px solid #2f2f2f; /* bottom, add background color here */

? font-size:0px;

? line-height:0px;

}

/* create an arrow that points right */

div.arrow-right {

? width:0px;

? height:0px;

? border-bottom:5px solid transparent;? /* left arrow slant */

? border-top:5px solid transparent; /* right arrow slant */

? border-left:5px solid #2f2f2f; /* bottom, add background color here */

? font-size:0px;

? line-height:0px;

}

17.?CSS3?calc() 的使用

calc() 用法類似于函數,能夠給元素設置動態的值:

/* basic calc */

.simpleBlock {

? width: calc(100% - 100px);

}

/* calc in calc */

.complexBlock {

? width: calc(100% - 50% / 3);

? padding: 5px calc(3% - 2px);

? margin-left: calc(10% + 10px);

}

18. 文本漸變

文本漸變效果很流行,使用 CSS3 能夠很簡單就實現:

h2[data-text] {

? position: relative;

}

h2[data-text]::after {

? content: attr(data-text);

? z-index: 10;

? color: #e3e3e3;

? position: absolute;

? top: 0;

? left: 0;

? -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0)), color-stop(50%, rgba(0,0,0,1)), to(rgba(0,0,0,0)));}

19. 禁用鼠標事件

CSS3 新增的 pointer-events 讓你能夠禁用元素的鼠標事件,例如,一個連接如果設置了下面的樣式就無法點擊了。

.disabled { pointer-events: none; }

20. 模糊文本

簡單但很漂亮的文本模糊效果,簡單又好看!

.blur {

? color: transparent; text-shadow: 0 0 5px rgba(0,0,0,0.5);

}

21.文本超出隱藏顯示省略號

p {

overflow:hidden;

text-overflow:ellipsis;

display:-webkit-box;

-webkit-box-orient:vertical;

-webkit-line-clamp:2;?

}

22.css設置滾動條樣式:

/* 設置滾動條的樣式 */

::-webkit-scrollbar {

width:8px;

height: 8px;

}

/* 滾動槽 */

::-webkit-scrollbar-track {

-webkit-box-shadow:inset006pxrgba(0,0,0,0.3);

border-radius:10px;

}

/* 滾動條滑塊 */

::-webkit-scrollbar-thumb {

border-radius:10px;

background:rgba(0,0,0,0.1);

-webkit-box-shadow:inset006pxrgba(0,0,0,0.5);

}

::-webkit-scrollbar-thumb:window-inactive {

background:rgba(255,0,0,0.4);

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 各種純css圖標 CSS3可以實現很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,688評論 0 8
  • 1、垂直對齊 如果你用CSS,則你會有困惑:我該怎么垂直對齊容器中的元素?現在,利用CSS3的Transform,...
    kiddings閱讀 3,200評論 0 11
  • 1. tab列表折疊效果 html: 能源系統事業部 崗位名稱: 工作地點 崗位名...
    lilyping閱讀 1,899評論 0 1
  • 1.長方形 #Rectangle{ width: 200px; height: 50px; background-...
    一直以來都很好閱讀 518評論 0 0
  • 我在得到APP訂閱了許多節目,薛兆豐的北大經濟學是最有用的一個。這種有用體現在兩方面: 1. 高度體系化,循序漸進...
    WilliamY閱讀 226評論 0 0