12 個(gè)實(shí)用的前端開(kāi)發(fā)技巧總結(jié)
1. 利用 CSS 穿透覆蓋默認(rèn)樣式
常見(jiàn)發(fā)生場(chǎng)景:假如我們需要通過(guò) input,type="file"來(lái)上傳文件,而這個(gè) input 的默認(rèn)樣式,可以說(shuō)是非常地丑。所以我們希望通過(guò)一張圖片,與這個(gè) input 大小一樣,位置一致地蓋在上面。這個(gè)時(shí)候,顯然,這個(gè)時(shí)候點(diǎn)擊圖片,input 是不會(huì)起作用的。就是因?yàn)?img 隔絕了 click 的穿透,而我們希望的是,這個(gè) img 只是視覺(jué)上遮擋了 input 的樣式,但是點(diǎn)擊的時(shí)候還是點(diǎn)擊到 input。所以,只要讓 img 可穿透即可。
css 代碼如下:
- img {
- pointer-events: none;
- }
2. 實(shí)現(xiàn)自定義原生 select 控件的樣式
由于 select 移動(dòng)端原生樣式很丑,但是原生彈出效果是符合我們?cè)O(shè)計(jì)的原則。直接修改 select 的樣式的時(shí)候,一個(gè)奇怪的現(xiàn)象出現(xiàn)了,在 chrome 上調(diào)試的時(shí)候,自己定義的樣式起了作用,在 Android 手機(jī)上也起了作用,但是到了 ios 手機(jī)上就不行了,典型的不兼容問(wèn)題,這個(gè)時(shí)候禁用原生的樣式即可。
css 代碼如下:
- select {
- -webkit-appearance: none;
- }
3. 文本溢出處理
移動(dòng)設(shè)備相對(duì)來(lái)說(shuō)頁(yè)面較小,很多時(shí)候顯示的一些信息都需要省略部分。最常見(jiàn)的是單行標(biāo)題溢出省略,多行詳情介紹溢出省略?,F(xiàn)在都用框架開(kāi)發(fā)了,這種建議需求建議形成一個(gè)基礎(chǔ)組件,方便快捷。
css 代碼如下:
- //單行
- .single {
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- //多行
- .more {
- display: -webkit-box !important;
- overflow: hidden;
- text-overflow: ellipsis;
- work-break: break-all;
- -webkit-box-orient: vertical;
- -webkit-line-clamp: 2; //指定行數(shù)
- }
4. 開(kāi)啟彈性滾動(dòng)
css 代碼如下:
- body {
- overflow: scroll;
- -webkit-overflow-scrolling: touch;
- }
注意:Android 不支持原生的彈性滾動(dòng),但可以借助第三方庫(kù) iScroll 來(lái)實(shí)現(xiàn)。
5. 一像素邊框設(shè)置
很多時(shí)候,想保持邊框的大小在任何設(shè)置上都是 1px,但是因?yàn)?1px 使用 2dp 渲染,也就是說(shuō)會(huì)顯示為 2px 大小。所以,要采用 css3 縮放一下。
css 代碼如下:
- .folder li {
- position: relative;
- padding: 5px;
- }
- .folder li + li:before {
- position: absolute;
- top: -1px;
- left: 0;
- content: " ";
- width: 100%;
- height: 1px;
- border-top: 1px solid #ccc;
- -webkit-transform: scaleY(0.5);
- }
6. 防止鼠標(biāo)選中事件
- <div class="mask" onselectstart="return false"></div>
- <div class="link">
- <a href="javascrip;;">登錄</a>
- </div>
給元素添加了onslectstart="return false",就可以防止鼠標(biāo)選中事件。
7. 給動(dòng)態(tài)添加的元素綁定事件
利用事件代理達(dá)到這個(gè)效果即可。如:
- $(document).on("click", ".large", slide); //jq中的寫(xiě)法
- //第一個(gè)參數(shù)表示的是對(duì)應(yīng)事件,第二個(gè)是需要綁定事件的元素的id或class,第三個(gè)是綁定的對(duì)應(yīng)的事件函數(shù)名
8. 兼容 IE 瀏覽器的透明度處理
- .ui {
- width: 100%;
- height: 100%;
- opacity: 0.4;
- filter: Alpha(opacity=40); //兼容IE瀏覽器的處理
- }
9. 常用的全屏居中 JS 函數(shù)
- //獲取元素
- function getElement(ele) {
- return document.getElementById(ele);
- }
- //自動(dòng)居中函數(shù)
- function autoCenter(el) {
- var bodyX = document.documentElement.offsetWidth || document.body.offsetWidth;
- var bodyY =
- document.documentElement.offsetHeight || document.body.offsetHeight;
- var elementX = el.offsetWidth;
- var elementY = el.offsetHeight;
- el.style.left = (bodyX - elementX) / 2 + "px";
- el.style.top = (bodyY - elementY) / 2 + "px";
- }
10. 常用的全屏居中 CSS 函數(shù)
- body {
- height: 100vh;
- text-align: center;
- line-height: 100vh;
- }
11. 在輸入框輸入完內(nèi)容并按回車(chē)的時(shí)
- <input type="textbox" id="textbox1" onkeypress="CheckInfo" />
- <script language="javascript" type="text/javascript">
- function CheckInfo()
- {
- if (event.keyCode==13) {
- alert(textbox1.text);
- }
- }
- </script>
12. chrome 調(diào)試快捷鍵
① ctrl+shift+f 全文查找
② ctrl+o 查找文件名
③ ctrl+shift+o 查找 js 函數(shù)名