作业帮前端

盒模型

这里写图片描述
标准模式下
box = margin+border+padding+content(width/height)
怪异模式下
box = margin+content(border+padding+width/height)

移动设备的自适应

flexbox
rem
之后详细补充

position

relative : 相对于本身在文本流中的位置进行定位,定位后不脱离文本流
absolute : 相对于父元素中非static定位的元素进行定位,定位后脱离文本流
fixed : 相对于浏览器窗口进行定位,定位后脱离文本流
static : 正常文本流渲染

<style>
    .div1{
        width:100px;
        height:100px;
        background-color:red;
        left:20px;
        /*以下两张图分别展示*/
        position:relative;
        position:absolute;
    }
    .div2{
        width:100px;
        height:100px;
        background-color:blue;
    }
</style>
<div class='div1'></div>
<div class='div2'></div>

这里写图片描述

这里写图片描述

事件代理的优点

原理就是利用事件冒泡

优点
可以大量节省内存占用,减少事件注册。比如ul上代理所有li的click事件。
对于动态内容部分尤为合适

缺点
事件代理的常用应用应该仅限于上述需求,如果把所有事件都用事件代理,可能会出现事件误判。即本不该被触发的事件被绑定上了事件。

数组去重

function f(arr){
    var s = [];
    for(var i = 0;i<arr.length;i++){
        if(s.indexOf(arr[i]) == -1){
            s.push(arr[i]);
        }
    }
    return s;
}

如果不能使用indexOf,且需考虑元素类型

function f(arr){
    var s = {};
    for(var i = 0;i<arr.length;i++){
        var type = typeof arr[i];
        var con = type+arr[i];
        if(!s[con]){
            s[con] = 1;
        }else{
            arr.splice(i,1);
            i--;
        }
    }
    return arr;
}

或者直接利用ES6的Set

function f(arr){
    var s = new Set(arr);
    return [...s];
}

实现鼠标滑过头像显示简介

要点:
1、事件如何绑定
我想的是通过事件代理

2、如何保证放置显示,快速划过不显示
利用定时器

下面就用简陋的代码来示例一下。。。

<!DOCTYPE html>
<html>
<head>
<style>
    .div1{
        width:100px;
        height:100px;
        background-color:red;
        border-radius: 50px;
    }
    .div2{
        width:100px;
        height:200px;
        margin-top: 10px;
        background-color:black;
        display: none;
    }
</style>
</head>
<body>
    <div class='div1'></div>
    <div class='div2'></div>
    <script type="text/javascript">
        var d1 = document.getElementsByClassName('div1')[0];
        var d2 = document.getElementsByClassName('div2')[0];
        var timer;
        d1.addEventListener('mouseenter',function(){
            timer = window.setTimeout(function(){d2.style.display="block"},300);
        })
        d1.addEventListener('mouseout',function(){
            window.clearTimeout(timer);
            d2.style.display="none";
        })
    </script>
</body>
</html>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值