封装基于Jquery的鼠标移入弹框组件(可换行,可自定义样式)

jquery项目,bootsrtape自带的鼠标移入弹框组件无法满足大段换行文字的需求,实现了一个

 

样式部分

.tjfInformations{
			position: relative;
			font-style: normal;
			cursor: pointer;
		}
.tjfInformations>.contentbox-top{
		   z-index: 1099;
			background-color: #fff;
			color: #000;
			position: absolute;
			left:50%;
			top:-15px;
			transform: translate(-50%,-100%);
			width: 150px;
			border: 1px solid #000;
			border-radius:6px;
			padding: 5px;
		}
.tjfInformations .triangle-top{
			position: absolute;
			left: 50%;
			top: 100%;
			transform: translate(-50%,0);
			border-left: 5px solid transparent;
			border-right: 5px solid transparent;
			border-top: 10px solid black;
		}
.tjfInformations>.contentbox-bottom{
			z-index: 1099;
			background-color: #fff;
			color: #000;
			position: absolute;
			left:50%;
			transform: translate(-50%,15px);
			width: 150px;
			border: 1px solid #000;
			border-radius:6px;
			padding: 5px;
		}
.tjfInformations .textline{
		  line-height: 20px;
		  text-align: start;
		  font-size: 13px;
		}

.tjfInformations .triangle-bottom{
			position: absolute;
			left: 50%;
			top: 0px;
			transform: translate(-50%,-100%);
			border-left: 5px solid transparent;
			border-right: 5px solid transparent;
			border-bottom: 10px solid black;
		}

js部分

tjfaddInformation()
	
	
		function tjfaddInformation(){
			$('.tjfInformations').each(function(index, ele){
				$(ele).on('mouseover',function(){
					let position = $(ele).attr('tjfposition')
					let content = $(ele).attr('tjftitle')
					let arr = content.split('</br>')
					// 对盒子位置进行判断
					if(position == 'bottom'){ // 下盒子
						let tjfdiv = $('<div class="contentbox-bottom">')
						let tjftextdiv = $('<div class="textbox">')
						let triangle = $('<div class="triangle-bottom">')
						tjftextdiv.append(triangle)
						arr.forEach(function(ele, index){
							let tjfcontent = $('<div class="textline">').html(ele)
							tjftextdiv.append(tjfcontent)
						})
						tjfdiv.append(tjftextdiv)
						$(ele).append(tjfdiv)
					} else if(position == 'top') { // 上盒子
						let tjfdiv = $('<div class="contentbox-top">')
						let tjftextdiv = $('<div class="textbox">')
						let triangle = $('<div class="triangle-top">')
						tjftextdiv.append(triangle)
						arr.forEach(function(ele, index){
							let tjfcontent = $('<div class="textline">').html(ele)
							tjftextdiv.append(tjfcontent)
						})
						tjfdiv.append(tjftextdiv)
						$(ele).append(tjfdiv)
					}
					// 对盒子的样式进行处理
					let tjfstyle = $(ele).attr('tjfstyle') ? $(ele).attr('tjfstyle').split(';') : ''
					if(tjfstyle){
						tjfstyle.forEach(function(eles,index){
							let attr = eles.split(':')[0]
							let value = eles.split(':')[1]
							if(position == 'top'){
								$(ele).find('.contentbox-top').css(attr,value)
							} else if(position == 'bottom'){
								$(ele).find('.contentbox-bottom').css(attr,value)
							}
						})
					}
					
				})
				$(ele).on('mouseout',function(){
					$(ele).find('.contentbox-top, .contentbox-bottom').remove()
				})
		})
	}

使用说明

	tjfposition属性支持top,bottom两种
	tjfstyle属性支持样式书写,格式为tjfstyle="background-color: #ccc;color: #000"
	tjftitle属性支持内容书写,添加</br>可换行"




<i class="tjfInformations" tjfposition="top" tjfstyle="color: red;width: 200px" tjftitle="1.一曲肝肠断</br>2.天涯何处觅知音">可以</i>
		
<i class="tjfInformations" tjfposition="bottom" tjftitle="标题<br>天不生夫子</br>剑道万古如长夜">剑道</i>

效果图

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值