控制提示框不溢出父级盒子

需求:移入a标签,把对应的详情显示出来并且根据位置判断当前详情是否超出父级可视区范围,

  如果超出就定位的距离方向应该正好父级的可视区域范围内

HTML

<div id="box">
	<p>1975年7月32日,3号<a href="javascript:;">台风<span>台风(英语:Typhoon)是赤道以北,日界线以西,亚洲太平洋国家或地区对热带气旋的一个分级。
	在气象学上,按世界气象组织定义,热带气旋中心持续风速达到12级(即64节或以上、每秒32.7米或以上,又或者每小时118公里或以上)称为飓风(Hurricane)或其他在地近义字。</span>
	</a>在太平洋上空行程。8月7日,台风进入驻马店地区。</p><p>在台风尚未到达时,<a href="javascript:;">驻马店<span>驻马店是河南省下辖地级市,位于河南中南部,北接漯
	河,南临信阳,地处淮河上游的丘陵平原地区。古为交通要冲,因历史上南来北往的信使、官宦在此驻驿歇马而得名。素有“豫州之腹地、天下之最中”的美称。京广铁路、京珠、大广高速和107、
	106国道纵贯南北,新阳高速横跨东西,上武高速和焦桐高速穿境而过,省道、县道纵横交错。2015年户籍905.21万;常住695.55万。</span></a>地区就已经普降暴雨。8月4日至8日,暴雨
	中心最大过程雨量达1631毫米,8月5日至7月3日的最大降雨量为1605毫米,相当于驻马店地区年平均雨量的1.8倍。4日至8日,超过400毫米的降雨面积达19410平方公里,大于1000毫米
	的降水区集中在<a href="javascript:;">京广铁路<span>京广铁路(北京-广州)是一条从首都北京市通往广东省广州市的铁路,于1957年全线建成,全长2302千米。原分为北南两段。
	北段从北京市到湖北汉口,称为“京汉铁路”(1949年以前称“平汉铁路”),于1897年4月动工到1906年4月建成。南段从广东广州到湖北武昌,称为“粤汉铁路”,于1900年7月动工到1936年
	4月建成。在1957年武汉长江大桥建成通车后,两条铁路接轨,并改名为京广铁路。京广铁路是中国最重要的一条南北铁路干线,其连接了6座省会、直辖市,以及多座大中城市。</span></a>以西
	板桥水库、石漫滩水库到方城一带。暴雨的降水强度,在暴雨中心——位于板桥水库的林庄,最大6小时<a href="javascript:;">雨量<span>从气象学上的角度来讲,雨量通常指空气中水汽凝
	结下降及地之水量,露,霜,雹,雪等等,凝结并不包括在内。所谓雨量,就是在一定时段内,降落到水平面上(无渗漏、蒸发、流失等)的雨水深度。用雨量计测定。以毫米为单位。气象台站在有
	降水的情况下,每隔6小时测量一次。把一个地方多年的年降水量平均起来,就称为这个地方的“平均年雨量”。</span></a>为830毫米,超过了当时世界最高纪录——美国滨州密士港的782毫米;最大
	24小时雨量为1060毫米,也创造了<a href="javascript:;">中国<span>中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家,通用汉语、汉字,汉族与少数民族
	被统称为“中华民族”,又自称为炎黄子孙、龙的传人。</span></a>同类指标的最高纪录。
	</p>
</div>

CSS

*{
	margin: 0;
	padding: 0;
}
#box{
	width: 500px;
	margin: 20px auto;
	border: 5px solid #2052A3;
	padding: 10px;
	position: relative;
}
#box p{
	text-indent: 28px;
	line-height: 24px;
}
#box p a{
	color: red;
	position: relative;
}
#box p a span{
	padding: 5px;
	border: 1px solid #000;
	background: #fff;
	position: absolute;
	color: #333;
	width: 300px;
	z-index: 999;
	left: 0;
	top: 20px;
	display: none;
}
#box p a:hover span{
	display: -webkit-box;
    -webkit-box-orient: vertical;/*显示省略号*/
    -webkit-line-clamp: 3;/*显示三行文字*/
    overflow: hidden;
}

JS

var Box=document.getElementById("box");
var aS=document.getElementsByTagName("a");
var aSpan=document.getElementsByTagName("span");

var BoxW=Box.clientWidth;
var BoxH=Box.clientHeight;

for (var i=0;i<aS.length;i++) {
	aS[i].onmouseover=function(){
		var W=this.children[0].offsetWidth;
		var H=this.children[0].offsetHeight;

		var Left=this.offsetLeft;
		var Top=this.offsetTop;

		//当提示框横向超出box
		if(W+Left>BoxW){
			this.children[0].style.left=-(W+Left-BoxW+10)+"px";
		}
		//当提示框纵向超出box
		if(H+Top>BoxH){
			this.children[0].style.top=-H+"px";
		}
	}
}

  

时间: 2024-10-17 08:07:17

控制提示框不溢出父级盒子的相关文章

父级盒子无高度,子盒子浮动,高度自适应

利用浮动实现三列布局,中间宽度自适应 #box{ border: 1px solid red; } #left{ width: 120px; height: 300px; float:left; background-color: grey; } #main{ height: 500px; margin: 0 220px 0 140px; background-color:skyblue; } #right{ width: 200px; height: 600px; float: right;

如何使用CSS创建巧妙的动画提示框

原文:https://webdesign.tutsplus.co...原作:Jase Smith翻译:Stypstive 当你的用户需要漂亮的图标给出额外的文字信息时,亦或是当他们在点击了按钮之后需要确认自己没点错时,又或是带图片和字幕的复活节彩蛋,提示框是用来增强用户界面的绝佳手段.现在,让我们来做几个动画提示框,没有别的,只有HTML和CSS. 样例 这是我们之后要做的: http://jsfiddle.net/kcschaefe... 在我们沉浸在写代码的过程中之前,让我们先来看看我们的意

UI基础——提示框

提示框的种类有很多,废话不多说,直接上代码 一.文本提示框 运行结果如下: 代码实现如下: 1 @interface ViewController () 2 // 添加方法 3 - (IBAction)add; 4 // 移除方法 5 - (IBAction)remove; 6 // 商品容器 7 @property (weak, nonatomic) IBOutlet UIView *shopsView; 8 9 @property (weak, nonatomic) IBOutlet UIB

Devexpress TreeList选择父级联动

Treelist当显示复选框后,父级和子级的复选框没有关联,使用过程中很不便,如图所示 自己给treelist添加父子级联动 /// <summary> /// 初始化TreeList,父子节点选择关联 /// </summary> public class TreeListInitial { TreeList Tree; /// <summary> /// 初始化TreeList,父子节点选择关联 /// </summary> /// <param

JS弹出框、对话框、提示框,JS关闭窗口、关闭页面和JS控制页面跳转

一.JS弹出框.对话框.提示框 //====================== JS最常用三种弹出对话框 ======================== //1弹出对话框并输出一段提示信息 function ale() { //弹出一个对话框 alert("提示信息!"); } //2弹出一个询问框,有确定和取消按钮 function firm() { //利用对话框返回的值 (true 或者 false) if (confirm("你确定提交吗?")) { a

js 弹出窗口 选值后提交回父级页(不刷新)的文本框

在父级页 设置两个 文本框 id 和 name和 一个弹出窗口按钮 在弹出窗口中列出若干条记录,现需要将任意一条记录点击提交.将该条记录的 id 和 name 字段 返回到父级对应的文本框中.不刷新父级页面. 父窗口代码:(命名随意)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&

echarts中tooltip提示框位置控制

option = { title: { text: '折线图堆叠' }, tooltip: { trigger: 'axis', position: function(point, params, dom, rect, size){ //其中point为当前鼠标的位置,size中有两个属性:viewSize和contentSize,分别为外层div和tooltip提示框的大小 var x = point[0];// var y = point[1]; var viewWidth = size.v

解决element生成的下拉菜单,不在父级之下,而是在body之下,通过父级控制该下拉菜单的样式,达到不跟别的地方冲突的目的

项目中存在多个下拉菜单,每个下拉菜单的样式可能不同 不能直接拿到element里面的类名来修改,这样会导致全局统一 在下拉菜单上定义一个父级类名,通过这个父级类名来定义这些下拉菜单的样式,达到私有化 遇到问题,生成的下拉菜单跟父类不在同一个节点,无法通过父级类来指定样式 解决方案:在下拉菜单的结构上添加 ref,页面加载后动态添加父级类名 原文地址:https://www.cnblogs.com/wuhefeng/p/12530803.html

(转)js弹出框、对话框、提示框、弹窗总结

一.JS的三种最常见的对话框 [javascript] view plain copy //====================== JS最常用三种弹出对话框 ======================== //弹出对话框并输出一段提示信息 function ale() { //弹出一个对话框 alert("提示信息!"); } //弹出一个询问框,有确定和取消按钮 function firm() { //利用对话框返回的值 (true 或者 false) if (confirm