CSS 實用 Tips
作為前端,日常開發充滿了各種挑戰與樂趣,我們窮盡一切在奇葩的需求中提升用戶體驗。本文將列舉一些前端開發中碰到的小眾需求,並提供解決方案以供參考。
一、修改滑鼠手勢圖標
很多童鞋可能都用過:
cursor: pointer | wait | hand | text | move |not-allowed;
但是,它還支持用戶自定義圖片,你知道嗎?
cursor: url(jartto.cur), url(http://jartto.wang/jartto.gif), auto;
下圖為各瀏覽器支持情況:

記得在定義完自定義的游標之後在末尾加上一般性的游標,以防那些url所定義的游標不能使用。
二、box-shadow 三邊陰影
box-shadow 大家都不陌生,我們一般這麼用:
box-shadow: h-shadow v-shadow blur spread color inset;
可是三邊陰影該如何設置呢?請不要忽視設計師的腦洞??:
#shadowBox {background-color:#ddd;margin:0pxauto;padding:10px;width:220px;box-shadow:0px8px10px gray,-10px8px15px gray,10px8px15px gray;}
三、超好用的 currentColor
先來舉個例子,html代碼:
<ahref="##"class="link"><iclass="icon"></i>返回</a>
css 代碼:
.icon {display:inline-block;width:16px;height:20px;background-image: url(http:jartto.wang/test.png);background-color: currentColor;/* 該顏色控制圖標的顏色 */background-position:00;}.link:hover {color:#333; /* 雖然改變的是文字顏色,但是圖標顏色也一起變化了 */}
currentColor 表示「當前的標籤所繼承的文字顏色」
四、png 圖片如何改顏色
網頁中大多使用透明圖片 png 格式,可是如果有天產品經理說,這個圖標顏色能不能改成紅色,恰巧設計師不能支持你,你該如何辦? 其一:自己重新 ps 一下圖片,換個顏色; 其二:只能上 svg 嘍,搞成 icon font;
這裡,我們來說第三種方式,妙不妙可以試試哦!
.icon {display:inline-block;width:20px;height:20px;overflow: hidden;}.icon-del{background: url(delete.png)no-repeat center;}.icon >.icon {position: relative;left:-20px;border-right:20px solid transparent;/*下文注意點 2 有解釋*/-webkit-filter: drop-shadow(20px0);filter: drop-shadow(20px0);}
html 代碼:
<p><strong>原始圖標</strong></p><iclass="icon icon-del"></i><p><strong>可以變色的圖標</strong></p><iclass="icon"><iclass="icon icon-del"></i></i>
需要注意幾點: 1.對於背景透明的 png 小圖標而言,如果我們施加一個不帶模糊的投影,就等同於生成了另外一個顏色的小圖標; 2.在 chrome 瀏覽器下,如果一個元素的主體部分,無論以何種方式,只要在頁面中不可見,其 drop-shadow 是不可見的。實體部分哪怕有 1px 可見,則 drop-shadow 完全可見。
原理其實很簡單,使用了 css3 濾鏡 filter 中的 drop-shadow, drop-shadow 濾鏡可以給元素或圖片非透明區域添加投影。
五、vh 與 vw
相對於視口的寬度。視口被均分為 100 單位的 vw, vh 同理。
我一般會在強制某一個容器佔一整屏的時候使用,如:
.box{height: calc(100vh-50px);}
視口高度減去頁頭固定區域,剩下的高度設置給容器。當然,我們也可以用它設置大小,如下:
h1 {font-size:8vw;}
如果視口的寬度是 200mm,那麼上述代碼中h1元素的字型大小將為 16mm,即 (8x200)/100
值得注意的是, less 中使用需要加 ~
min-height:~"calc(100vh - 68px)";
此外,還有一些如 ch , vmax, vmin 等屬性等著你去擴展
六、如何去掉 chrome input 的背景黃色
當我們在做登陸頁面的時候,在 chrome 中 input 會帶上自動補全的黃色背景,大大影響美觀。很多網站都沒有去處理,但這並不難處理。作為高逼格的前端,這裡就可以體現出你的價值,解決方案如下:
input:-webkit-autofill {-webkit-box-shadow:000px1000px rgba(255,255,255,0.5) inset !important;}
當然,你也可以使用方案二,如下:
input:-webkit-autofill {-webkit-animation-name: autofill;-webkit-animation-fill-mode: both;}@-webkit-keyframes autofill {to {color:#fff;background: transparent;}}
七、chrome 中設置小於 12px 的字體
這種改小字體,絕大部分肯定都是設計師的需求,因為小顯得精緻。
ant-checkbox-wrapper {cursor: pointer;font-size:10px;display:inline-block;-webkit-text-size-adjust: none;// 不支持transform: scale(0.9);}
八、0.5px border 如何操作
現行方法大致有如下幾條: 1.使用漸變 linear-gradient 來操作,但需要注意瀏覽器兼容前綴;
.div::after {content:" ";position: absolute;left:0;top:0;width:100%;height:1px;background-image: linear-gradient(0deg, transparent 50%,#e0e0e0 50%);}
2.縮放 scale 處理:
div::after{content:"";display: block;position: absolute;left:-50%;bottom:0;width:200%;height:1px;background:#c3c3c3;-webkit-transform: scale(0.5);}
3.使用 background-image 和 css3 的九宮格裁減
.bd-t::after {content:" ";position: absolute;left:0;top:0;width:100%;border-top:1px solid transparent;/* 下面用 stretch 和 round 都可以 */border-image: url(pic.png)2111 stretch;-webkit-border-image: url(pic.png)2111 stretch;}
九、border 顏色漸變
border-color:red green blue pink;
「border-width」 屬性如果單獨使用的話是不會起作用的。請首先使用 「border-style」 屬性來設置邊框。
十、css3 畫小箭頭
這裡推薦兩種方式: 其一,通過 border 來實現
/*箭頭向上*/.arrow-up {width:0;height:0;border-left:30px solid transparent;border-right:30px solid transparent;border-bottom:30px solid #fff;}/*箭頭向下*/.arrow-down {width:0;height:0;border-left:20px solid transparent;border-right:20px solid transparent;border-top:20px solid #0066cc;}
其二,拼湊法(偽類或元素),將 div 隱藏兩邊或設置 z-index,然後旋轉,放到合適位置。
div {position: absolute;bottom:-2px;left:7px;width:10px;height:10px;transform: rotate(-45deg);z-index:-1;/* 放在容器後,被遮蓋住*/}
比較簡單,就不贅述了。
十一、有趣的 drop-shadow
用法如下:
filter: drop-shadow(x偏移, y偏移,模糊大小,色值);filter:drop-shadow(5px5px10px black)
CSS3 濾鏡 filter 中的 drop-shadow,drop-shadow 濾鏡可以給元素或圖片非透明區域添加投影。
上文中已經提到了一種使用場景,這裡還想說另一種,即使用拼湊法作出的小氣泡,如果氣泡需要陰影的話,請用 drop-shadow 來替代 box-shadow。
十二、修改瀏覽器默認滾動條
有時候一些不期而遇的滾動條會讓頁面很尷尬,這時候你還可以強行美化一下,參考代碼如下:
/*滾動條 start*/::-webkit-scrollbar {width:1px;height:4px;background-color:#F5F5F5;}/*定義滾動條軌道 內陰影+圓角*/::-webkit-scrollbar-track {box-shadow: inset 006px rgba(0,0,0,0.3);background:#fff ;}/*定義滑塊 內陰影+圓角*/::-webkit-scrollbar-thumb {border-radius:3px;box-shadow: inset 006px rgba(0,0,0,.3);// background-color:rgba(7, 170, 247, 0.7);background-color: transparent;}::-webkit-scrollbar-thumb:hover {border-radius:3px;box-shadow: inset 006px rgba(0,0,0,.3);background-color:rgba(7,170,247,1);}
十三、safari placeholder bugs
在項目中遇到 input 的 placeholder 在 safari 下設置行高失效的問題,解決思路如下: 1.使用 padding 使提示文字居中,如果 font-size:14px, UI 高度為 40px,我們可以設 height:14px,padding:13px 0; 2.使用 line-height:1px; 3.使用 vertical-align: middle;
補充一條:Safari 來寫 hack 即 [;line-height:1;]
十四、總結
這些都是在我日常開發中碰到的奇葩問題,回頭想想其實挺有意思,遂整理總結之。如果日常開發中沒有一些挑戰,那開發還有什麼樂趣。
http://jartto.wang/2017/11/12/f2e-tips
更多相似文章關注公眾號:網頁設計自學平台推薦閱讀:
※小程序之一鍵回到頂部和獲取滾動條當前位置
※web前端大咖告訴你們前端怎麼學習?該怎樣學習!
※Typescript玩轉設計模式 之 對象行為型模式(上)
※如何分析網站優化?
※前端日刊-2018.02.23
TAG:前端開發 |
