微语:代码适合中午敲,早晚出BUG
文字超出多少行显示省略... 前端
文本超出多行的时候就显示省略,运用场景很高,记录一下
width: 200px;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
/* 这里是超出几行省略 */
overflow: hidden;
去掉点击div的蓝色背景 前端
做项目的时候发现点击div后有个蓝色的背景,不喜欢,找了很多办法,最后发现了有用的,记录一下。
div:focus{
outline: none;
}
清除a标签点击时的高亮
a {
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
-webkit-user-select: none;
-moz-user-focus: none;
-moz-user-select: none;
}
a标签中包含图片,即点击图片触发超链接时,去掉触发touchstart出现的灰色背景
a,a:hover,a:active,a:visited,a:link,a:focus{
-webkit-tap-highlight-color:rgba(0,0,0,0);
-webkit-tap-highlight-color: transparent;
outline:none;
background: none;
text-decoration: none;
}
去掉ios图片被选中的蓝色背景
img {
-webkit-tap-highlight-color:rgba(0,0,0,0);
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
-webkit-user-select: none;
-moz-user-focus: none;
-moz-user-select: none;
user-select: none;
}
SE5寄生组合式继承 JavaScript
// ES5继承三步骤:
// 1).在子类构造函数中调用父类构造函数,让子类实例化出来的对象拥有父类的属性
// 2).让子类的原型成为父类的实例,让子类实例化出来的对象拥有父类的方法
// 3).找回丢失的构造函数
// 定义父类
function User(username, password) {
this.username = username;
this.password = password;
}
User.prototype.login = function () {
console.log(this.username + "登录成功!");
}
// 定义子类
function Student(uid, ...arr) {
this.uid = uid;
// 1)
User.apply(this, arr);
}
Student.prototype = Object.create(User.prototype)
Student.prototype.constructor = Student
let p1 = new Student("001", "小明", "151568")
console.log(p1);
p1.login()
//寄生组合式继承原理
function create(obj) {
function F() {
};
F.prototype = obj;
return new F();
}
ES6继承 JavaScript
// SE6的继承
class User {
constructor(username, password) {
this.username = username;
this.password = password;
}
login() {
console.log(this.username + "登录成功!");
}
}
class Student extends User {
}
//实例化
let p1 = new Student("张三", 16456486)
console.log(p1);
p1.login()
类型检测-toString JavaScript
// toString可以检测所有类型
// 前言:由于大部分的类型都有 toString()方法,无法通过原型链找到Object的toString() 方法,所以需要强制使用Object.prototype.toString.call(对象)
//基本类型检测
console.log(Object.prototype.toString.call(100)); //返回值:[object Number]
console.log(Object.prototype.toString.call('张三'));//返回值:[object String]
console.log(Object.prototype.toString.call('张三'));//返回值:[object String]
console.log(Object.prototype.toString.call(true));//返回值:[object Boolean]
console.log(Object.prototype.toString.call(undefined));//返回值:[object Undefined]
console.log(Object.prototype.toString.call(null));//返回值:[object Null]
//引用类型检测
function show() {
}
console.log(Object.prototype.toString.call([1, 2, 3, 4, 5]));//返回值:[object Array]
console.log(Object.prototype.toString.call({ name: "tom" }));//返回值:[object Object]
console.log(Object.prototype.toString.call(show));//返回值:[object Function]
// 注:call 指的是修改this指向
检测类型-isArray JavaScript
// isArray判断是否为数组
let arr = [1, 2, 3, 4, 5]
let arr1 = {
name: "张三"
}
console.log(Array.isArray(arr)); //判断arr是否为数组,返回值:true
console.log(Array.isArray(arr1));//判断arr1是否为数组,返回值false
类型检测-instanceof JavaScript
let arr = [1, 2, 3, 4]
// 判断arr是否属于某个类
console.log(arr instanceof Array);//判断是否属于数组类 返回值:true
console.log(arr instanceof Object);//判断是否属于引用类 返回值: true
let obj = {}
console.log(obj instanceof Array);//判断是否为数组类 返回值:false
console.log(obj instanceof Object);//判断是否为引用类 返回值:true
//检测构造函数
function Person(color, like) {
this.color = color;
this.link = like;
}
let p1 = new Person("#ff0000", "旅游")
console.log(p1 instanceof Person); //判断p1是否属于Person类 返回值:true
console.log(p1 instanceof Function); //判断p1是否属于Function类 返回值:false
深拷贝 JavaScript
// 浅拷贝存在的问题:浅拷贝只能拷贝一层数据。
let obj1 = {
name: "小白",
color: "#ff0000",
like: ["爬山", "旅游"]
}
let obj2 = {}
for (let key in obj1) {
obj2[key] = obj1[key]
}
// 修改拷贝后的boj2里面值
obj2.like[0] = "赏花 "
// 发现修改之后会影响到boj1,所以没有拷贝成功
console.log(obj1);
console.log(obj2);
// 解决办法:遍历数组或对象的所有子数据,每一层都单独拷贝
let obj3 = JSON.parse(JSON.stringify(obj1))
obj3.like[0] = "钓鱼"
// 这里修改之后,发现并没有影响到obj1和obj2的数据,说明拷贝成功了
console.log(obj3);