js和css两种实现鼠标经过图片时显示透明框的遮罩条文字

介绍两种方法

1.js实现

2.css实现


先说js实现

1.将图片设置为div的背景,鼠标移动到上面的时候触发事件,代码如下

<div class="img" onmouseover="play(this)" onmouseout="playout(this)">
    <p>美丽的三亚</p>
</div>
2.中间文字p的css样式,display设置为none,不显示,鼠标移动到上面时才显示

.img p{
            position: absolute;
            bottom: 0;
            text-align: center;
            background-color: white;
            opacity: 0.3;
            width:500px;
            height:40px;
            line-height: 40px;
            display: none;
            color: black;
        }
3.js代码,很简单的两个函数

function play(obj) {
    var play = obj.getElementsByTagName("p")[0];
    play.style.display = "block";
}

function playout(obj) {
    var play = obj.getElementsByTagName("p")[0];
    play.style.display = "none";
}

没有实现缓动的效果,有缺陷


下面说css实现

1.图片作为元素加入div中,要显示的标题作为自己新建的属性加入

<div class="mask" data-title="美丽的三亚">
<img src="2.jpg">
</div>
2.css代码如下

 .mask{
            position: relative;
            width:400px;
            height:300px;
            overflow: hidden;
        }
        .mask:after{
            content: attr(data-title);
            position: absolute;
            width:100%;
            top:100%;
            left:0;
            padding: 0.7em 0;
            text-align: center;
            color: #fff;
            background-color: rgba(52,47,41,.5);
            -webkit-transition:all .3s ease-in-out;
            transition:all .3s ease-in-out;
            opacity: 0;
        }
        .mask:hover:after{
            opacity: 1;
            -webkit-transform:translate(0,-100%);
            transform:translate(0,-100%);
        }
鼠标移动到图片的时候,显示一个透明度为0的背景色为(52,47,41)的方框,里面的内容就是data-title的内容。

而且实现了一个缓动渐进的效果












猜你喜欢

转载自blog.csdn.net/weixin_37719279/article/details/79105170