前端实用小技巧总结

1.指定文件兼容性模式

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

在html页面的<head>元素里加入以上代码,用来声明:如果安装了GCF(Google Chrome Frame),则当前页面使用chrome内核来渲染;如果未安装GCF,则使用IE的Edge版本来渲染。

2.改变input/textarea的placeholder字体的样式

input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {/*webkit内核的浏览器*/
    color: #666;
}
input:-moz-placeholder, textarea:-moz-placeholder {/*Firefox版本4-18*/
    color:#666;
}
input::-moz-placeholder, textarea::-moz-placeholder {/*Firefox版本19+*/
    color:#666;
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {/*IE浏览器*/
    color:#666;
}

3.输出带样式的文本到浏览器控制台

console.log('%c
Hello World', 'color:red;font-size:24px;')

4.单行文本过长用"..."代替

div {
    width:100px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

5.多行文本过长用"..."代替

.link-name {
    width: 100%;
    word-break: break-word;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

6.去掉input元素focus时的边框

input{
    outline:none;
}

7.回到顶部和回到底部

<a href="javascript:void(0);" onclick="javascript:document.getElementsByTagName('BODY')[0].scrollTop=0;">回到顶部</a>

<a onclick="javascript:document.getElementsByTagName('BODY')[0].scrollTop=document.getElementsByTagName('BODY')[0].scrollHeight;" 
  href="javascript:void(0);">回到底部</a>

8.将页面变成黑白的

with(document.body.style) {
    var vFilter = "grayscale(100%)";
    if (typeof webkitFilter !== "undefined") {webkitFilter = vFilter}
    else if (typeof MozFilter !== "undefined") {MozFilter = vFilter}
    else if (typeof msFilter !== "undefined") {msFilter = vFilter}
    else if (typeof oFilter !== "undefined") {oFilter = vFilter}
    else if (typeof filter !== "undefined") {filter = vFilter}
}

在浏览器的控制台中运行以上代码即可。

9.目前为止见过的最简洁的求阶乘 n! 的方法

(function (n) {return n > 1 ? n * arguments.callee (n - 1): n} ) (7)

10.目前为止见过的最简洁的数组去重的方法

Array.prototype.unique = function () { return this.filter(function (v, i, m) { return i <= m.indexOf(v);}); };
console.log('result:', [1,2,3,12,3,2,1,2,30].unique());

11.文本框只能输入数字

HTML:
<input type="text" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />

React:
<input type="text" onKeyUp={ (e) => { e.target.value=e.target.value.replace(/[^0-9]/g,'') } } />

12.修改浏览器默认滚动条样式

/* 设置滚动条的样式 */
::-webkit-scrollbar {
  width:8px;
  height:8px;
}
/* 滚动槽 */
::-webkit-scrollbar-track {
  border-radius:5px;
  background:rgba(0,0,0,0.05);
  -webkit-box-shadow: rgba(0,0,0,0.1);
}
/* 滚动条滑块 */
::-webkit-scrollbar-thumb {
  border-radius:10px;
  background:rgba(0,0,0,0.1);
  -webkit-box-shadow:rgba(0,0,0,0.2);
}
/*当焦点不在当前区域滑块的状态*/
::-webkit-scrollbar-thumb:window-inactive {
  background:rgba(0,0,0,0.06);
}
/*当鼠标在水平滚动条的状态*/
::-webkit-scrollbar-thumb:hover {
  background:rgba(0,0,0,0.2);
}

13.可计算CSS

.container-widescreen{
    max-width: calc(100% - 170px - 20px);
}

需要注意的是运算符两边都需要有空格,否则不生效,即:`calc(100%-170px)`不生效,而`calc(100% - 170px)`生效

14.修改ng cli默认端口

在angular.json中修改

  "projects": {
    "your-project-name": {
      "architect": {
        "serve": {
          "options": {
            "browserTarget": "ngx-editor:build",
            "port": 4260
          },
        },
      }
    },
  }

15.修改vue cli默认端口

新增vue.config.js文件

module.exports = {
    devServer: {
        port: 4260,     // 端口
    },
    lintOnSave: false   // 取消 eslint 验证
};

附:

一、设备分辨率总结

PC:

1024X768 - 老机器

1280X800 - MacBook Pro(13寸)

1366X768 - 笔记本

1440X900 - MacBook Air(13)

1920X1080 - 台式机、iMac(21寸)

2304X1440 - MacBook(12)

2560X1440 - iMac(27寸)

2560X1600 - rMBP(13)

2880X1800 - rMBP(15)

5120X2880 - 5K iMac
Pad:(横屏)

1024X768 - iPad1/2/mini

2048X1536 - iPad3/4/mini2
Mobile:(竖屏)(太多了,只总结了iOS的手机)

640X960 - iPhone4/4s

640X1136 - iPhone5/5c/5s/se

750X1334 - iPhone6/6s/7/8

1080X1920 - iPhone6/6s/7/8 plus

1125X2436 - iPhone X
Mobile:(竖屏)(Android手机)

480X854 - 小米1

720X280 - 小米2 1080X1920 - 华为

1080X1800 - 魅族3

1152X1920 - 魅族4

1536X2560 - 魅族4 pro

1440X2560 - 乐视max/三星S6

二、判断浏览器类型

stackoverflow中的方法:

// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';

// Safari 3.0+ "[object HTMLElementConstructor]" 
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);

// Internet Explorer 6-11
var isIE = false || !!document.documentMode;

// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;

// Chrome 1+
var isChrome = !!window.chrome && !!window.chrome.webstore;

// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;

利用正则表达式判断userAgent:

    [ 'edge', /Edge/([0-9._]+)/ ],
    [ 'yandexbrowser', /YaBrowser/([0-9._]+)/ ],
    [ 'chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)/([0-9.]+)(:?s|$)/ ],
    [ 'crios', /CriOS/([0-9.]+)(:?s|$)/ ],
    [ 'firefox', /Firefox/([0-9.]+)(?:s|$)/ ],
    [ 'opera', /Opera/([0-9.]+)(?:s|$)/ ],
    [ 'opera', /OPR/([0-9.]+)(:?s|$)$/ ],
    [ 'ie', /Trident/7.0.*rv:([0-9.]+)).*Gecko$/ ],
    [ 'ie', /MSIEs([0-9.]+);.*Trident/[4-7].0/ ],
    [ 'ie', /MSIEs(7.0)/ ],
    [ 'bb10', /BB10;sTouch.*Version/([0-9.]+)/ ],
    [ 'android', /Androids([0-9.]+)/ ],
    [ 'ios', /Version/([0-9._]+).*Mobile.*Safari.*/ ],
    [ 'safari', /Version/([0-9._]+).*Safari/ ]

Opera(OPR)、QQ浏览器(QQBrowser)、360浏览器()、百度浏览器(BIDUBrowser)、猎豹浏览器(LBBROWSER)、搜狗浏览器(SE)、遨游浏览器(Maxthon)、2345浏览器(2345Explorer)

[ "Chrome", ""Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"" ],
[ "Safari", ""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2"" ],
[ "Firefox", ""Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0"" ],
[ "Opera", ""Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36 OPR/45.0.2552.812"" ],
[ "2345", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.108 Safari/537.36 2345Explorer/8.6.1.15524" ],
[ "猎豹", ""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 LBBROWSER"" ],
[ "UC", ""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36"" ],
[ "搜狗", ""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0""],
[ "百度", ""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36""],
[ "遨游", ""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.0.4.2000 Chrome/47.0.2526.73 Safari/537.36""],
[ "QQ浏览器", ""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2658.400 QQBrowser/9.6.11018.400""]
原文地址:https://www.cnblogs.com/kagol/p/6374317.html