tip是当鼠标放到控件上显示的提示文本,下面说下实现思路
方法一:

使用hover:before,hover:after组合一个三角符号和一个圆角矩形实现,以右三角为例

        .jgui-tip:after {
content: attr(data-tip);
visibility: hidden;
position: absolute;
padding: 5px 10px;
right: -10px;
transform:translateX(100%);
bottom: 50%;
margin-left: 12px;
font-size: 16px;
background: #000;
color: #fff;
cursor: default;
border-radius: 5px;
line-height: 20px;
}
.jgui-tip:before {
content: " ";
position: absolute;
visibility: hidden;
right: -10px;
bottom: 50%;
margin-bottom: 5px;
width:;
height:;
border-left: 5px solid transparent;
border-right: 5px solid #000;
border-top: 5px solid transparent;
border-bottom: 5px solid #000;
}
.jgui-tip:hover:before,
.jgui-tip:hover:after {
visibility: visible;
}
<button class="jgui-btn jgui-tip" data-tip="测试右方弹出三角提示框(不支持IE8)" id="test">button</button>

显示效果如下

看起来效果不错,可惜不支持IE8,最开始以为是,z-index无效,改变z-index无法解决,经过查找资料,增加一个

overflow: visible;可显示了
 .jgui-btn {
position: relative;
display: block;
width: 200px;
font-size: 20px;
cursor: pointer;
overflow: visible;
}

但是会默认按钮会变色,这个回头统一定按钮样式即可解决,而且影响按钮的默认overflow属性。
总结下:

1、button一个:after实现一个tip,
2、超出被遮挡问题:在ie下,button需要加一个overflow:visible
3、如果将button换成 a标签不需要加,在chrome浏览器下,可以不加overflow:visible,都显示正常
网上关于伪元素与z-index的一篇总结

父元素不设置z-index值,伪元素设置负z-index 值,父元素位移效果不使用transform,简单说下原因。

  • 同一个层叠上下文里面, 层叠顺序从后向前依次是: 背景和边框、负z-index、块级盒、浮动盒、行内盒、z-index:0、正z-index.
  • 伪元素相当于子元素,也就是包含在元素内的,二者不在同一个层叠上下文中。

如果想实现层叠效果,需要元素和对应的伪元素在同一层叠上下文中,所以不能让元素创建层叠上下文。以下情况会创建层叠上下文

  • 即便是 position 不为 static 的元素, 如果没有指定一个非 auto 值的 z-index, 该元素就不会建立一个层叠上下文。
  • 元素的transform值不是none

当然还有其他情况本文就不列出了,因为transform 会创建层叠上下文,所以缓动的时候只能使用top 进行变换了。
原地址:https://fatesinger.com/100258

方法二:mouseover,mouseout事件。
代码如下,此方法比较麻烦,不适合动态创建的元素。


.jgui-tipinfo
{
display:none;
z-index:999;
position:absolute;
background:#222;
padding:5px 10px;
color: #fff;
border-radius: 5px;
font-size: 16px;
line-height: 20px;
}
 
<script type="text/javascript">
function ShowTip(event,obj,tipinfo)
{
$('body').append( '<div id="tipinfo" class="jgui-tipinfo">'+tipinfo+'</div>');
$('#tipinfo').css("top", $(obj).position().top+$(obj).height()/2 + "px").css("left", $(obj).position().left+$(obj).width()+"px").fadeIn("slow");
}
function HideTip()
{
$("#tipinfo").fadeOut("slow").remove();
}
</script>
 <button class="jgui-btn" onmouseover="ShowTip(event,this,'测试弹出tooltip(支持IE8)')" onmouseout="HideTip()">button2</button>

三、经过界面优化,以上两种方法,最终显示效果如下,后面将封装成支持左右上下四个位置的tip控件。

演示地址:www.jgui.com

JGUI源码:Tip实现(14)的更多相关文章

  1. JGUI源码:从头开始,建一个自己的UI框架(1)

    开篇 1.JGUI是为了逼迫自己研究底层点的前端技术而做的框架,之前对web底层实现一直没有深入研究,有了技术瓶颈,痛定思痛从头研究, 2.虽然现在vue技术比较火,但还在发展阶段,暂时先使用JQue ...

  2. Java_io体系之PipedWriter、PipedReader简介、走进源码及示例——14

    Java_io体系之PipedWriter.PipedReader简介.走进源码及示例——14 ——管道字符输出流.必须建立在管道输入流之上.所以先介绍管道字符输出流.可以先看示例或者总结.总结写的有 ...

  3. JGUI源码:鼠标中键滚动再次优化(5)

    //电脑端中键滚动事件 var mousewheel = getBrowserInfo() == "Firefox" ? "DOMMouseScroll" : ...

  4. JGUI源码:Accordion鼠标中键滚动和手机端滑动实现(2)

    本文是抽屉组件在PC端滚动鼠标中键.手机端滑动时,滚动数据列表实现方法,没有使用iscroll等第三方插件,支持火狐,谷歌,IE8+等浏览器. 演示在:www.jgui.com Github地址:ht ...

  5. 2018-11-21 手工翻译Vue.js源码第一步:14个文件重命名

    背景 对现有开源项目的代码进行翻译(文件名/命名/注释) · Issue #107 · program-in-chinese/overview 简单地说, 通过翻译源码, 提高项目代码可读性(对于母语 ...

  6. JGUI源码:实现简单进度条(19)

    程序效果如下 实现进度条动画主要有两种方法:(1)使用缓动,(2)使用Jquery Animate,本文使用第二种方法,先实现代码,后续进行控件封装 <style> .jgui-proce ...

  7. JGUI源码:实现蒙版层显示(18)

    有的时候需要显示一个蒙版层,蒙版层显示的主要原理是在指定元素比如div上创建一个子元素div,设置absolute.宽高100%.设置z-index置于顶层,设置半透明效果,fadein,fadeou ...

  8. JGUI源码:实现日期控件显示(17)

    本文实现一个日期控件显示,日期控件看起来很复杂,其实原理很简单,大部分情况下我们直接使用别人做得好的日期控件就行,但有时候特殊需求,比如显示提醒之类的,恐怕第三方控件就不好实现了, 为了使程序逻辑看起 ...

  9. JGUI源码:实现简单MVVM单项绑定学习笔记(15)

    前面几节都是jquery界面方面的东西,本节研究些数据方面的东西:MVVM. MVVM由三部分组成:Model <=> ViewModel <=> View,当Model数据改 ...

随机推荐

  1. 配置MySQL的数据源

    首先查看自己是否有这个驱动 有就进行以下操作,没有那就找下载 安装mysql-for-visualstudio 1)双击   mysql-for-visualstudio-2.0.5.msi 2)点击 ...

  2. C#格式化

    格式化表示的一般格式 { N [ , M ] [ :格式码 ] } N:  指定参数序列中的输出序号,比如{0} , {1}, {2}等. M: 指定参数输出的最小长度. 如果参数长度小于M,则空格填 ...

  3. mstsc远程连接发生身份验证错误要求的函数不受支持

    在win7电脑上使用远程连接连接一台服务器时,出现发生身份验证错误要求的函数不受支持的错误,原因是本地组策略配置错误,如下图: 解决办法: 进入windows命令行模式输入命令: 会弹出本地策略组编辑 ...

  4. Java Web Token - JWT

    JWT认证过程:https://www.codetd.com/article/3602378 JWT官方文档:https://jwt.io/introduction/

  5. 多态练习题(通过UML建模语言来实现饲养员喂养动物)

    项目需求如下图: package com.Summer_0428.cn; /** * @author Summer * 1.构建一个食物抽象类,Bone和Fish分别为其实现类,通过super传参. ...

  6. SpringBoot通过RedisTemplate执行Lua脚本

    如果你对Redis和Lua的关系不太清楚,请先阅读:Redis进阶之使用Lua脚本开发 1.RedisScript 首先你得引入spring-boot-starter-data-redis依赖,其次把 ...

  7. Excel阅读模式/单元格行列指示/聚光灯开发 技术要点再分享

    1. 引言 文题中所谓技术要点再分享,本意是想在大神Charltsing Liu的博文“简单介绍Excel单元格行列指示的实现原理(俗称聚光灯功能)”的基础上写一点个人开发体会.写本文的初衷有三点,一 ...

  8. P2801 教主的魔法(分块入门)

    两个月之前听yyr学长讲的分块,感觉是个很神奇的暴力,但到现在还是懵的一匹 #include<bits/stdc++.h> using namespace std; ; int belon ...

  9. golang文件操作

    一.读写文件 1.读文件操作 os.File 封装所有文件相关操作 例子: package main import ( "fmt" "os" "io/ ...

  10. poj-3177(无向图缩点)

    题意:给你n个点,m条边的无向联通图,问你最少增加几条边,使得这个图每对点至少有两条路径 解题思路:考虑每个环内的点必定有>=2条路径,所以先把这个无向图中的环去掉,用并查集缩环,然后剩下的图一 ...