H5提示框

1.index.html文件

<!DOCTYPE html>
<html>
    <head lang="en">
        <meta charset="utf-8" />
        <title></title>
        <link type="text/css" rel="stylesheet" href="css/style.css"/>
    </head>
    <body>
        <div class="div" id="div">
            <h3>测试文章</h3>
            <p>这是测试的</p>
            <a class="tooltip" id="weibo">微博</a>
            <a class="tooltip" id="weixin">微信</a>
            <a class="tooltip" id="crow">十六乌鸦</a>
            <a class="tooltip" id="test">百度链接</div>
        </div>
        <script src="js/app.js"></script>
    </body>
</html>

2.style.css文件

*{
    margin:0;/*外边距*/
    padding: 0;/*左右边距*/
    font-size: 14px;/*字体大小*/
    line-height: 1.8;/*行高*/
    font-family: "microsoft yahei","微软雅黑";/*字体样式*/
}
.div{
    width: 500px;
    margin:30px auto;/*外边距自适应*/
    padding:20px 30px ;
    position:relative;/*定位*/
    background-color: #fff;
    border-radius: 10px;/*该属性允许您为元素添加圆角边框*/
    box-shadow: 0px 0px 0px 10px rgba(0,0,0,1);
}

.div h3{
    clolor:#000fff;
    font-size: 20px;
}

.div .tooltip{
    color: #099FFF;
    cursor: pointer;/*鼠标点击事件*/
}

.tooltip-box{
    display: block;
    background: #fff;
    line-height: 1.6;
    border: 1px solid #66ccff;/*边框*/
    color: #333;
    padding: 20px;
    font-size: 12px;
    border-radius: 5px;
    overflow: auto;/*滚动条*/
}

3.app.js文件
在编程中我们可以将公共的部分提取出来打包成一个类这样子便于维护和减少代码量。其中我们在div中多次使用提示框的情况下我们可以使用冒泡的方式也就是switch来简写代码;其中注意不要把"<img src='img/part4.png'>"中的写成"<img src="img/part4.png">"

var className = "tooltip-box";

//提取公共部分
var getDID = function(id){
    return document.getElementById(id);
}

//div中的事件冒泡
var parentdiv = getDID("div");

function showTooltip(obj,id,html,width,height){
    if(getDID(id) == null){
        var tooltipBox;
        tooltipBox = document.createElement("div");//创建div
        tooltipBox.className = className;
        tooltipBox.id = id ;
        tooltipBox.innerHTML=html;//添加html内容
        
        obj.appendChild(tooltipBox);//事件产生
        //判断传入的宽度是否超过,是就让其自适应
        tooltipBox.style.width = width?width+"px":"auto";
        //判断高度
        tooltipBox.style.height = height?height+"px":"auto";
        
        //防止内容被挤到下面对提示框进行位置定位
        tooltipBox.style.position="absolute";
        tooltipBox.style.display="block";
        
        //准确定位提示框位置
        var left = obj.offsetLeft;
        var top = obj.offsetTop+20;//防止挡到内容
        //定义提示框的位置
        tooltipBox.style.left = left+"px";
        tooltipBox.style.top = top+"px";
        
        //当鼠标移开时候的事件监听
        obj.addEventListener("mouseout",function(){
            setTimeout(function(){
                getDID(id).style.display="none";//隐藏
            },200)
        });
        // obj.onmouseout = function(){
        //  //延时操作
        //  setTimeout(function(){
        //      getDID(id).style.display="none";//隐藏
        //  },500);
        // }
    }
    else{
        getDID(id).style.display="block";
    }
}

//监听鼠标事件当鼠标移动到上面的时候
parentdiv.addEventListener("mouseover",function(e){
    var target = e.target;
    if(target.className == "tooltip"){
        var _html;
        var _id;
        var _width;
        switch(target.id){
            case"weibo":
                _id="wb";
                _html="这是微博";
                _width=150;
                break;
            case"weixin":
                _id="wx";
                _html="这是微信";
                _width=150;
                break;
            case"crow":
                _id="slwy";
                _html="<img src='img/part4.png'>";
                _width=350;
                break;
            case"test":
                _id="t";
                _html="<iframe src='http://www.baidu.com' width='500' height='300'></iframe>";
                _width=500;
                break;
        }
        showTooltip(target,_id,_html,_width);
    }
});
// var wb = getDID("weibo");
// var wx = getDID("weixin");
// var slwy = getDID("crow");
// var t = getDID("test");
// 
// wb.onmousemove = function(){
//  showTooltip(this,"wb","这是微博",150);
// }
// 
// wx.onmousemove = function(){
//  showTooltip(this,"wx","这是微信",150);
// }
// 
// slwy.onmousemove = function(){
//  showTooltip(this,"slwy","<img src='img/part4.png'>",350);
// }
// 
// t.onmousemove = function(){
//  var geek = "<iframe src='http://www.baidu.com' width='500' height='300'></iframe>"
//  showTooltip(this,"t",geek,500);
// }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,568评论 0 7
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 7,097评论 2 19
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,077评论 0 3
  • 转载 前端开发面试题 <a name='preface'>前言</a> 本文由我收集总结了一些前端面试题,初学者阅...
    小九喵喵阅读 456评论 0 0
  • 老师说:一段时间以来,有的人一直坚持着写作,取得了一定的成绩;有的人走着走着停下了,这些同学一定是遭遇了比诗和远方...
    花瓣雨66阅读 262评论 2 4