html浮动提示框功能的实现代码

所属分类: HTML/Xhtml / 网页制作 阅读数: 252
收藏 0 赞 0 分享

一般的表单提示总会占据表单的位置,让表单边长,或者变宽,影响布局,但如果让提示框像对话框一样浮在所需内容旁边就可以解决这一问题。

HTML及样式

首先做一张表单

<div id="form-block">
        <h1>注册</h1>
        <form id="form-form" class="center-block">
            <div>
                <input id="email" class="form-control" placeholder="电子邮箱">
            </div>
            <div>
                <input id="vrf" class="form-control" placeholder="验证码">
        </form>
    </div></div>

 

然后我们需要设计一下对话框

提示框

大概就是这样,由一个三角形和矩形组成。

 

  #tips{
            padding-top: 6px;
            z-index: 9999;
            /*让对话置顶以免被其他元素遮挡*/
            position: fixed;
            width: 1000px;
        
}
        #form-tips{
            background-color: black;
            color: #ffffff;
            padding: 0 6px;
            position: absolute;
        
}
        #triangle{
            border:10px solid;
            border-color: transparent black transparent transparent;
        
}
<div id="alter">
    <label id="triangle"></label>
    <label id="form-alert">这是一个提示</label></div>

 

三角形怎么来的?参考这篇经验

js实现浮动

页面已经做好了,现在我们需要一个函数来改变对话框的内容和位置。

 

const TIPS = document.getElementById("tips");//msg是提示信息,obj是需要提示的元素function showTips(msg, obj) {
        TIPS.style.display = "block";//显示隐藏的对话框        var domRect = obj.getBoundingClientRect();//获取元素的位置信息        var width = domRect.x+obj.clientWidth; //显示在元素后面,所以加上元素的宽        var height = domRect.y;
        TIPS.style.top = height+"px";
        TIPS.style.left = width+"px";
        document.getElementById("form-tips").innerHTML = msg; //改变对话框文字        obj.onblur = function () {
            TIPS.style.display = "none";//元素失焦时隐藏对话框            //这里由于我是用在表格,所以使用了失焦,根据需要修改        
}
;
        window.onresize = function (ev) {
            showTips(msg, obj);//当窗口改变大小时重新计算对话框位置        
}
    
}

 

效果图

在这里插入图片描述

完整代码d

 

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="../static/css/bootstrap.css">
    <style>
        body,html{
            background-color: #70a1ff;
            margin: 0;
            padding: 0;
            width: 100%;
            height: 100%;
        
}
        body *{
            transition-duration: 500ms;
        
}
        #form-block{
            text-align: center;
            position: absolute;
            top: 50%;
            left: 50%;
            width: 500px;
            height: 200px;
            background-color: #f1f2f6;
            transform: translateY(-50%) translateX(-50%);
            box-shadow: 0 0 10px #000000;
        
}
        #form-form{
            width: 70%;
        
}
        #form-form > *{
            margin: 10px;
        
}
        #email-warning{
            display: none;
        
}
        #tips{
            padding-top: 6px; ds            z-index: 9999;
            position: fixed;
            width: 1000px;
        
}
        #form-tips{
            background-color: black;
            color: #ffffff;
            padding: 0 6px;
            position: absolute;
        
}
        #triangle{
            border:10px solid;
            border-color: transparent black transparent transparent;
        
}
    </style></head><body><div id="tips">
    <label id="triangle"></label>
    <label id="form-tips">这是一个提示</label></div>
    <div id="form-block">
        <h1>注册</h1>
        <form id="form-form" class="center-block">
            <div>
                <input onfocus="showTips('电子邮箱的提示',this)" id="email" class="form-control" placeholder="电子邮箱">
                <div id="email-warning" class="label-warning">请输入正确的邮箱地址!</div>
            </div>
            <div>
                <input onfocus="showTips('测试文字', this)" id="vrf" class="form-control" placeholder="验证码">
                <div id="vrf-warning" class="label-warning hidden">请输入正确的邮箱地址!</div>
            </div>
        </form>
    </div><!--    <button οnclick="changeFormHeight('500')">测试</button>--><script>
    const TIPS = document.getElementById("tips");
    function showTips(msg, obj) {
        TIPS.style.display = "block";
        var domRect = obj.getBoundingClientRect();
        var width = domRect.x+obj.clientWidth;
        var height = domRect.y;
        TIPS.style.top = height+"px";
        TIPS.style.left = width+"px";
        document.getElementById("form-tips").innerHTML = msg;
        obj.onblur = function () {
            TIPS.style.display = "none";
        
}
;
        window.onresize = function (ev) {
            showTips(msg, obj);
        
}
    
}
</script></body></html>

以上所述是小编给大家介绍的html浮动提示框功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

更多精彩内容其他人还在看

Html屏蔽右键菜单和左键划字功能的示例

禁止右键菜单<body oncontextmenu=self.event.returnValue=false>禁止左键划字复制<body onselectstart="return false">采用CSS来控制是否可以选择文字.uns... 查看详情
收藏 0 赞 0 分享

html+css+js 实现拍照预览上传图片功能

前言:我们在做网页时经常会需要有上传图片的需求,可能是选择图片或者拍照上传,如果简单的使用<input type="file"/>这种方式虽然也能实现功能,但用户体验上可能会差了一些,所以本文记录了使用css+js实现图片选中后的预览及压缩上传功能... 查看详情
收藏 0 赞 0 分享

HTML阻止iframe跳转页面并使用iframe在页面内嵌微信网页版的实现方法

就想弄一个winform结合html5的一个小东西,突有兴致,想在里面嵌套一个微信网页版。好了,想法一出来,就行动吧,最终效果如下图:一开始就打算在页面里面嵌套一个iframe指向https://wx.qq.com就OK了,但是我还是太天真,微信网页版会自动跳转。结果如下图:于是... 查看详情
收藏 0 赞 0 分享

详解HTML常用的标签中行内元素和块级元素

块元素(block element) HTML标签分类明细     * address - 地址     * blockquote - 块引用     * center - 举中对... 查看详情
收藏 0 赞 0 分享

解决移动端跳转问题(CSS过渡、target伪类)

前言很多刚刚接触移动端的小伙伴都可能对于点击跳转路由这方面有些疑惑,特别是运用了Vue路由,因此这篇文章就带领小伙伴一起尝试用css进行页面跳转效果如图,由于是移动端,所以选择预览的手机模拟:HTML <body> <main> ... 查看详情
收藏 0 赞 0 分享

浅谈HTML中src和href之间的区别

简单来说 src 就是 “我想加载这个资源”,而 href 就是 “我想和这个资源建立关联”src 主要用于元素替换,href 用于和相关文档和外部资源建立相关链接。href 属性说明本地Web资源和定义的资源建立了链接。如:<... 查看详情
收藏 0 赞 0 分享

HTML中的if判断用法

在django的web开发过程中,编写html时,从后端传入同名列表变量,但是内容格式有所区别,需要分别判断,查阅了很多文章试了好几种方法,格式似乎都不太对(本人没有系统学习过前端,基本都是照葫芦画瓢)后来找到django框架下html的if用法形式大致如下  ... 查看详情
收藏 0 赞 0 分享

详解html的几种水平垂直居中的方式(基础)

前言我们在编写马过程中,想必大家对水平垂直居中的方法了解并不多。所以我给大家总结式的列出几种常用的水平垂直居中的方法。第一种方法<!--html盒子代码--><!--水平垂直居中--><div class="Centered1"&... 查看详情
收藏 0 赞 0 分享

纯css实现(无脚本)Html指令式tooltip文字提示效果

 分析执行流程 鼠标移入节点 检测是该节点是否存在开启实现 tooltip 实现的标识(类名,属性等) 检测主题、位置(类名,属性等) 生成 / 显示气泡 借鉴他人让我们先来看看 element-ui的tooltip 样式很明显, 气泡的位置 是通过 javascrip... 查看详情
收藏 0 赞 0 分享

Markodwn 标题对齐的同步滚动实现思路详解

前言需要给正在写的Markodwn编辑器加上同步滚动的功能,百度了一通,没找到比较好的思路。就自己写了一个。Github上是写好的库,和更直观的Demo。Github这篇文章主要讲的是实现的思路。介绍同步滚动的实现方式有很多种。简单粗暴的就直接让 HTMLElement.scro... 查看详情
收藏 0 赞 0 分享
查看更多