JS实现简易日历过程中遇到的问题和原因以及解决方式。

下面是部分代码,主要错误在css样式部分(改错前)

html

<div id="container">
    <ul>
        <li class="active"><h1>1月</h1><p>JAN</p></li>
        <li><h1>2月</h1><p>FEB</p></li>
        <li><h1>3月</h1><p>MAR</p></li>
        <li><h1>4月</h1><p>APR</p></li>
        <li><h1>5月</h1><p>MAY</p></li>
    </ul>
    <div class="notes" style="display:block;">
        <h1>1月活动</h1>
        <p>快过年了!大家去干点啥呢?~</p>
    </div>
</div>

css样式

ul li{
    width: 100px;
    height: 100px;
    background-color: #40403F;
    list-style: none;
    text-align: center;
    margin: 11px;
    float: left;
    color: white;
}
ul li:hover{
    background-color: white;
    color: #FF95BC;
    border: 1px solid gray;
}

js

window.onload = function (){
    var myArr = [
        '快过年了!大家去干点啥呢?~',
        '二月了,干点啥好呢???哈哈哈~开学快乐',
        '阳春三月!走走走去春游~',
        '四月嘛,好好学习进实验室,哈哈哈~',
        '啦啦啦~五月啦!劳动假,走起!'
    ];
    var myLi = document.getElementsByTagName('li');
    var myNotes = document.getElementById('container').getElementsByTagName('div')[0];

    for (var i = 0; i < myLi.length; i++) {
        myLi[i].index = i;
        myLi[i].onmouseover = function(){
            for(i = 0;i < myLi.length; i++){
                myLi[i].className = '';
            }
            this.className = 'active';
            myNotes.innerHTML = '<h1>'+(this.index+1)+'月活动</h1><p>'+ myArr[this.index] +'</p>';
        };
    }
}

这部分代码的bug会这样显示:

*鼠标覆盖在前两列的时候会导致下一行的格子统一向下向右移*

==这是因为我在hover之前并没有给它加border边框,所以在hover的时候如果加了border边框就会导致下一行的格子不能如期放在它该放的位置。这又是为什么呢,因为每一个li都有它唯一确定的高度和宽度,而hover上去宽和高都会多出两个像素,所以下一行的每一个li肯定不能放下,只能从多出的两个像素的位置开始摆放。但是最后一列却又似乎是对的是为什么呢?这是因为最后一列的hover上去超出两个像素影响的是下一行所有的li,而我们肉眼对两个像素又不能清楚分辨出来,所以感觉是对的,而实际上它是整体向下移动了。==

那么该如何解决这个问题呢?很简单,就只需要在hover之前也给它加上和hover之后的border边框就行。

改正后的代码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值