基础前端1

前端

对HTML的理解

用正确的标签做正确的事情。 html语义化让页面的内容结构化,便于对浏览器、搜索引擎解析; 即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的; 搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO; 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

cookies,sessionStorage 和 localStorage 的区别?

cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。
cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递。
sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
存储大小:
cookie数据大小不能超过4k。
sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
有期时间:
localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
sessionStorage 数据在当前浏览器窗口关闭后自动删除。
cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

前端特殊css样式

nth-child(N)

选择父元素下的第N个子元素,N可以为数字、关键字、或公式(odd代表奇数行,even代表偶数行)

    <style type="text/css">
        /* odd:奇数行 */
        li:nth-child(odd){
            color:red;
        }
        /* even:偶数行*/
        li:nth-child(even){
            color:yellow;
        }
    </style>
</head>
<body>
    <ul>
        <li>第1行</li>
        <li>第2行</li>
        <li>第3行</li>
        <li>第4行</li>
        <li>第5行</li>
        <li>第6行</li>
        <li>第7行</li>        
    </ul>
    </body>
</html>

禁止用户复制文本

body{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
  • -webkit 代表safari、chrome私有属性
  • -khtml Safari浏览器
  • -moz 代表firefox浏览器私有属性
  • -ms 代表ie浏览器私有属性
    -touch-callout 这个CSS 属性禁用了默认的callout展示, callout是指当触摸并按住一个元素的时候出现的提示。

-user-select 选中文本【取值】

  • none:文本不能被选择
  • text:可以选择文本
  • all:当所有内容作为一个整体时可以被选择。如果双击或者在上下文上点击子元素,那么被选择的部分将是以该子元素向上回溯的最高祖先元素。
  • element:可以选择文本,但选择范围受元素边界的约束

数组去重

// indexOf实现
var arr= [a, a, 'a'];

function unique(array) {
    var res = [];
    for (var i = 0, len = arr.length; i < len; i++) {
        var current = arr[i];
        if (res.indexOf(current) === -1) {
            res.push(current)
        }
    }
    return res;
}
console.log(unique(array));

// 排序后去重(不推荐使用)  concat()  -- 连接两个或多个数组,并将新的数组返回,该方法不会对原数组产生影响
// sort() 默认的是字母排序,而不是按照数字大小排序,而在比较数字时它会先将开头的第一个数字变成字符串后比较   [12,25,6,30]排序后为[12,25,30,6] 
                  
var array = [1, 1, '1'];
function unique(array) {
    var res = [];
    var sortedArray = array.concat().sort();
    var seen;
    for (var i = 0, len = sortedArray.length; i < len; i++) {
        // 如果是第一个元素或者相邻的元素不相同
        if (!i || seen !== sortedArray[i]) {
            res.push(sortedArray[i])
        }
        seen = sortedArray[i];
    }
    return res;
}

console.log(unique(array));

//过滤方法实现
var array = [1, 2, 1, 1, '1'];
function unique(array) {
    var res = array.filter(function(item, index, array){
        return array.indexOf(item) === index;
    })
    return res;
}
console.log(unique(array));

// 排序后过滤去重
var array = [1, 2, 1, 1, '1'];
function unique(array) {
    return array.concat().sort().filter(function(item, index, array){
        return !index || item !== array[index - 1]
    })
}
console.log(unique(array));

// Object键值对去重
var array = [{value: 1}, {value: 1}, {value: 2}];

function unique(array) {
    var obj = {};
    return array.filter(function(item, index, array){
        console.log(typeof item + JSON.stringify(item))
        return obj.hasOwnProperty(typeof item + JSON.stringify(item)) ? false : (obj[typeof item + JSON.stringify(item)] = true)
    })
}
console.log(unique(array)); // [{value: 1}, {value: 2}]

// ES6 Set实现
 var unique = (a) => [...new Set(a)]

正则表达式

vue父子组件生命周期的顺序及作用

vue父子组件生命周期vue运行顺序

网页验证码作用

主要是为是防止黑客的入侵。有些黑客为了故意攻击一个系统,可能会使用攻击工具,连续不断地重试用户名或密码登录系统。如果我们不加入验证码,那么就有可能会被破解用户名和密码的。所以加入验证码是非常有必要的。

标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的?

CSS盒子模型:由四个属性组成的外边距(margin)、内边距(padding)、边界(border)、内容区(width和height);

标准的CSS盒子模型和低端IE CSS盒子模型不同:宽高不一样

标准的css盒子模型宽高就是内容区宽高;

低端IE css盒子模型宽高 内边距﹢边界﹢内容区;

position的值relative和absolute定位原点

absolute生成绝对定位的元素,相对于值不为 static的第一个父元素进行定位。
fixed (老IE不支持)生成绝对定位的元素,相对于浏览器窗口进行定位。
relative  生成相对定位的元素,相对于其正常位置进行定位。
static    默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right z-index 声明)。
inherit    规定从父元素继承 position 属性的值。

浏览器的兼容性问题

浏览器默认的margin和padding不同。解决方案是加一个全局的{margin:0;padding:0;}来统一。*

  • IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性。解决方法:统一通过getAttribute()获取自定义属性。
  • IE下,even对象有x,y属性,但是没有pageX,pageY属性;
  • Firefox下,event对象有pageX,pageY属性,但是没有x,y属性。
    解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。
  • Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,
    可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。
  • 超链接访问过后hover样式就不出现了 被点击访问过的超链接样式不在具有hover和active了解决方法是改变CSS属性的排列顺序:
    L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}

CSS优化、提高性能的方法

  • 提取项目的通用公有样式,增强可复用性,按模块编写组件;
  • 增强项目的协同开发性、可维护性和可扩展性;
  • 使用预处理工具或构建工具(对css进行语法检查、自动补前缀、打包压缩、自动优雅降级);

修改chrome记住密码后自动填充表单的黄色背景

情景一:input文本框是纯色背景的
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px white inset;
border: 1px solid #CCC!important;
}
思路二: 关闭浏览器自带填充表单功能
设置表单属性 autocomplete="off/on" 关闭自动填充表单,自己实现记住密码
 
<!-- 对整个表单设置 -->
<form autocomplete="off" method=".." action="..">
<!-- 或对单一元素设置 -->
<input type="text" name="textboxname" autocomplete="off">

将浮点数点左边的数每三位添加一个逗号

function commafy(num){
  	return num && num
  		.toString()
  		.replace(/(\d)(?=(\d{3})+\.)/g, function($1, $2){
  			return $2 + ',';
  		});
  }

This对象的理解

    this总是指向函数的直接调用者(而非间接调用者); 如果有new关键字,this指向new出来的那个对象;
在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window;

eval

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
(不建议使用 不安全,非常耗性能(2次,一次解析成js语句,一次执行))

什么是window对象? 什么是document对象

  • document是window的一个对象属性。
  • Window 对象表示浏览器中打开的窗口。
  • 区别
    1、window 指窗体。document指页面。document是window的一个子对象。
    2、用户不能改变 document.location(因为这是当前显示文档的位置)。但是,可以改变window.location ( 用其它文档取代当前文档)window.location本身也是一个对象,而document.location不是对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值