CSS-冷門技巧分享css
(一)如何實現一個加號?html
請實現一個50像素x50像素的加號+(不用圖片)【點擊】chrome
是否是咱們將font-size屬性設置爲50px就能夠實現呢?ide
能夠看出明顯不行,我將這個容器的高度設置爲了50像素,可是加號的大小明顯更小,並且在不設置line-height屬性的狀況下,還會不上下居中,而且粗細不可控,若是設置line-height呢:wordpress
位置仍然是偏下的。工具
那若是咱們將font-size屬性設置更大一些,100像素?佈局
此時的加號,我經過工具測量出的大小是51px,這說明,想用font-size屬性實現固定大小的加號,不是最優選,這種方式很難控制實現的加號大小跟位置。flex
用 outline(輪廓) 和負的 outline-offset(輪廓偏移) 實現一個50像素x50像素的加號+:flexbox
一個完美的50像素x50像素加號:idea
實現很是簡單,首先肯定寬高,設置outline屬性爲1/2寬高 + 1(加號的粗細),outline-offset爲寬高值的負數便可。
上面咱們提到,直接用文字時沒法控制咱們想要的加號粗細、垂直居中效果,可是outline屬性也能夠輕鬆解決,增長或減少outline值:
此方式實現+號,還能夠進行擴展,以往開發中遇到的關閉按鈕,以及新增按鈕,能夠不用切圖,直接用樣式實現:
(二)單側投影
box-shadow屬性4個數值的含義分別是,x 方向偏移值、y 方向偏移值 、模糊半徑、擴張半徑,單側投影的原理就是若是陰影的模糊半徑,與負的擴張半徑一致,那麼咱們將看不到任何陰影,由於生成的陰影將被包含在原來的元素之下,除非給它設定一個方向的偏移量,簡單理解就是,前兩個數值控制陰影中心,最後一個數值控制陰影大小。
(三)翻轉
(四)文字倒序
(五)實現等高佈局
這是兩個普通非等高佈局
padding + margin 結合實現等高佈局,原理實際上是使用一個很大的正 padding 和相同的負 margin 相消的方法填充左右兩欄
(六)去除多餘邊距&border
這就出現了一個問題,右側跟底部的邊距,是不但願展現出來的,這時候咱們一般的處理方法是,單行展現:用last-child選擇器,多行展現,用:nth-child(3n+0):
上面的選擇器解決了右側邊距的問題,可是沒有解決底部的問題,其實最簡單的技巧就是,增長一層包裹的父節點,並設置其負margin,並設置 overflow: hidden: