整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          WEB前端開發工程師必備實用的50個CSS技巧

          WEB前端開發工程師必備實用的50個CSS技巧

          里我工作中收集了10個很不錯的CSS技巧,你可以用在你的項目上。它可以幫你很好地整理你的元素并讓他們看起來蠻酷的。下面開始我們的內容,希望你會喜歡它。下面是我收集的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;
          }

          看,是不是很簡單。

          注意:在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:

          <div class="test3"> <span><input type="text" value=" " readonly="true" />
           <a >Double click me</a></span></div>

          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 寫出三角形

          /* 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.簡單的方法調整圖片大小

          .content img {

          height:auto;

          width:500px;

          }

          太陽、地球、月球應該是我們人人都比較了解的天體,它們的運動軌跡是我們研究星系乃至宇宙的重要信息之一。那么我們如何使用HTML + CSS來模擬這么一個效果呢?


          運動軌跡。

          簡單的來說就是轉圈。

          // 定義軌跡
          @keyframes rotate {
            from {
              transform: rotateZ(0);
            }
            to {
              transform: rotateZ(360deg);
            }
          }

          定義太陽

          /* 定義一個太陽 */
          .sum {
            position: relative;
            margin: 100px auto 0;
            width: 200px;
            height: 200px;
            border-radius: 50%;
            background: radial-gradient(
              circle at center,
              #ff9b9b 0%,
              rgba(235, 36, 64, 0) 70%
              );
          }

          定義地球

          地球繞太陽一圈的時間是365.24天左右,這被稱為一年。每年有一個額外的日子被稱為閏年,這一年會有366天,目的是為了彌補地球繞太陽的公轉周期與我們日歷的定義周期之間的不匹配。

          /* 定義地球位置及公轉信息 */
          .earth {
            position: absolute;
          
            /* 定義地球與太陽的相對位置以及軌道線 */
            width: 300px;
            height: 300px;
            margin-left:-50px;
            margin-top:-50px;
            border:1px solid #dddddd;
            border-radius:50%;
          
            /*動畫: 設定公轉時間以及軌跡 */
            animation: rotate 36.524s infinite linear;
          }
          /* 地球本體 */
          .earth::before{
            content: ' ';
            position:absolute;
            background-color: blue;
            width: 30px;
            height: 30px;
            margin-left:70px;
            border-radius: 30px;
          }

          定義月球

          月球繞地球一圈的時間大約是27.32天。這被稱為一個月(也稱為地月周期)。月亮的運動軌跡略呈橢圓形,因此月球與地球的距離會隨時間而變化,這也導致月球的運動速度略有不同,有時會更快,有時會更慢,但平均值仍然是27.32天左右。

          /* 定義月球位置及公轉信息 */
          .moon {
            position: absolute;
          
            /* 定義月球與地球的相對位置以及軌道線 */
            width: 60px;
            height: 60px;
            margin-left:55px;
            margin-top:-15px;
            border:1px solid #dddddd;
            border-radius:50%;
          
            /*動畫: 設定公轉時間以及軌跡 */
            animation: rotate 2.732s infinite linear;
          }
          
          /* 月球本體 */
          .moon::before{
            content: ' ';
            position:absolute;
            background-color: blue;
            width: 10px;
            height: 10px;
            margin-left:7px;
            border-radius: 10px;
          }

          html結構 / 天體結構

          <div class="sum">
            <div class="earth">
                <div class="moon"></div>
            </div>
          </div>

          最終效果

          者:老姚,《JS正則迷你書》的作者 https://github.com/qdlaoyao/css-gif

          本文的每一條,都是我曾經發過的掘金沸點,其中有很多條超過了百贊(竊喜)。鑒于時不時有童鞋翻我以前的沸點,因此,本文收集了個人目前發過的所有CSS知識點動圖,以便閱讀。

          需要說明的是,順序仍是按當時發布順序羅列的,還沒有系統的總結,多多包涵。另外這里,老姚謝謝各位一如既往的支持。

          01.【負邊距】負邊距的效果。注意左右負邊距表現并不一致。左為負時,是左移,右為負時,是左拉。上下與左右類似

          02.【shape-outside】?不要自以為是了。你以為自己是方的,在別人眼里你卻是圓的

          03.【BFC應用】BFC應用之阻止外邊距合并(margin collapsing)

          04.【BFC應用】BFC應用之消除浮動的影響

          05.【flex不為認知的特性之一】flex布局下margin:auto的神奇用法

          06.【flex不為認知的特性之二】flex布局,當flex-grow之和小于1時,只能按比例分配部分剩余空間,而不是全部

          07.【input的寬度】并不是給元素設置display:block就會自動填充父元素寬度。input 就是個例外,其默認寬度取決于size特性的值

          08.【定位特性】絕對定位和固定定位時,同時設置 left 和 right 等同于隱式地設置寬度

          09.【層疊上下文】層疊上下文:小輩就是小輩,再厲害也只是個小輩

          10.【粘性定位】position:sticky,粘性定位要起作用,需要設置最后滯留位置。chrome有bug,firefox完美

          11.【相鄰兄弟選擇器】相鄰兄弟選擇器之常用場景

          12.【模態框】要使模態框背景透明,用rgba是一種簡單方式

          13.【三角形】css繪制三角形的原理

          14.【table布局】display:table實現多列等高布局

          15.【顏色對比度】?藍底紅字,由于顏色對比度比較低,故而看不清,因此不是好的配色方案

          16.【定寬高比】?css實現定寬高比的原理:padding的百分比是相對于其包含塊的寬度,而不是高度

          17.【動畫方向】動畫方向可以選擇alternate,去回交替進行

          18.【線性漸變應用】css繪制彩帶的原理

          19.【隱藏文本】隱藏文字內容的兩種辦法

          20.【居中】實現居中的一種簡單方式

          21.【角向漸變】新的漸變:角向漸變。可以用來實現餅圖

          22.【背景位置百分比】background-position百分比的正確理解方式:圖片自身的百分比位置與容器同樣的百分比位置重合

          23.【背景重復新值】background-repeat新屬性值:round和space。前者表示湊個整,后者表示留點縫

          24.【背景附著】background-attachment指定背景如何附著在容器上,注意其屬性值local和fixed的使用

          25.【動畫延時】動畫添加延遲時間可以使步調不一致

          26.【outline使用】可以使用outline來描邊,不占地方,它甚至可以在里面

          27【背景定位】當固定背景不隨元素滾動時,背景定位是相對于視口的

          28【tab-size】瀏覽器默認顯示tab為8個空格,tab-size可以指定空格長度

          29【動畫暫停】CSS動畫其實是可以暫停的

          30【object-fit】圖片在指定尺寸后,可以設置object-fit為contain或cover保持比例

          31【鼠標狀態】按鈕禁用時,不要忘了設置鼠標狀態

          32【背景虛化】使用CSS濾鏡實現背景虛化

          33【fill-available】設置寬度為fill-available,可以使inline-block像block那樣填充整個空間

          34【fit-content】設置寬度為fit-content,可以使block像inline-block那樣實現收縮寬度包裹內容的效果

          35【自定義屬性】CSS自定義屬性的簡單使用

          36【min-content/max-content】可以設置寬度為min-content和max-content,前者讓內容盡可能地收縮,后者讓內容盡可能地展開

          37【進度條】使用漸變,一個div實現進度條

          38可以在打印網頁時,設置page相關屬性。比如page-break-before屬性來表示是否需要另起新頁

          39【逐幀動畫】利用CSS精靈實現逐幀動畫

          40【resize】普通元素也可以像textarea那樣resize

          41【面包屑】使用before偽元素實現面包屑

          42【sticky footer】使用grid布局實現sticky footer

          43【動畫填充狀態】CSS可以設置動畫開始前和結束時所保持的狀態

          44【動畫負延遲】CSS動畫可以設置延遲時間為負數,表示動畫仿佛開始前就已經運行過了那么長時間

          45【過渡】愛的魔力轉圈圈

          46【動畫案例】水波效果原理

          47【動畫案例】CSS彈球動畫效果的原理

          48【outline】outline屬性的妙用

          49【grid】火狐瀏覽器grid布局檢測器

          希望有所幫助。

          也歡迎閱讀本人的《JS正則迷你書》

          本文完。

          References

          • 《JS正則迷你書》(https://github.com/qdlaoyao/js-regex-mini-book)


          主站蜘蛛池模板: 狠狠做深爱婷婷久久综合一区| 亚洲综合一区国产精品| 国产乱码精品一区二区三区麻豆| 日韩熟女精品一区二区三区| 最美女人体内射精一区二区| 人妻在线无码一区二区三区| 国产乱码精品一区二区三区中文 | 日本大香伊一区二区三区| 亚洲国产精品综合一区在线| 激情内射亚州一区二区三区爱妻| 亚洲AV无码一区二区乱子仑| 久久亚洲综合色一区二区三区| 国产麻豆媒一区一区二区三区| 人妻体体内射精一区二区| 国产激情一区二区三区成人91| 亚洲AV日韩综合一区| 国产激情无码一区二区app| 国产精品一区二区香蕉| 无码人妻一区二区三区一| 亚洲乱码一区二区三区在线观看 | 国产一区二区三区在线视頻| 日本精品一区二区在线播放| 国产韩国精品一区二区三区久久| 亚洲日本一区二区三区在线| 一区二区高清在线观看| 日韩一区二区三区免费体验| 精品香蕉一区二区三区| 无码AV中文一区二区三区| 久久久久久一区国产精品| 日本一区二区三区精品国产| 国产精品无码一区二区在线观| 人体内射精一区二区三区| 国产精品特级毛片一区二区三区| 亚洲国产精品一区二区第一页免| 精品免费国产一区二区三区| 亚洲综合一区国产精品| 国产成人精品第一区二区| 久久精品无码一区二区WWW| 日韩人妻一区二区三区免费| 最美女人体内射精一区二区| 免费观看一区二区三区|