利用jquery去掉时光轴头尾部线条的方法实例


Posted in jQuery onJune 16, 2017

前言

以前做类似时光轴的结构,几乎都是一条灰色线飞流直下,没有尽头。今天这个线条是从第一个圆点到最后一个圆点,那么问题来了,内容的高度还不是固定的,线条的长度怎么确定?怎么就能刚刚好从第一个点到最后一个点首尾相连呢?这就是下面所要做的。

先看效果,如下图:

利用jquery去掉时光轴头尾部线条的方法实例

思路:

1、写一个div包住整个内容,就能知道所有列表的总高度;

2、写一条细线定位到右边,对,高度100%,内容多高,细线就多高;

3、开始的小点距离顶部多高,细线就距离顶部多高;

4、使用js设置细线的高度 = 总高度 - 最后一个列表的高度;

!!!什么??看不懂??没关系,那我总结成一句话:细线的高度减掉最后一个内容的高度就刚刚好。

实现方法

第一步:写结构

<div class="line_box">
  <div class="line"></div>
  <ul>
   <li><i></i>就是这么帅,就是这么不要脸!写多长都没关系,反正右边线条会自适应!<span></span></li>
   <li><i></i>没办法,就是这么帅,就是这么叼!<span></span></li>
   <li><i></i>帅到自然醒,帅到闪到腰!<span></span></li>
  </ul>
 </div>

(1) 定一条灰色细线.line

(2) 每一个内容就是一个li

(3) i就是那个三角形(什么??不会用CSS画三角形?百度一下,你就知道了)

(4) span 就是那个小红点

第二步:写样式

<style type="text/css">
 .line_box {width: 200px;margin: 0 auto;position: relative;}
 .line {width: 2px;height: 100%;background-color: #ccc;position: absolute;left: 0;top: 20px;}
 ul {padding-left: 20px;}
 li { padding: 10px;background-color: #cb3636;color: #fff;position: relative;margin-bottom: 20px;}
 li i {border: 10px solid;border-color:transparent #cb3636 transparent transparent;position: absolute;left: -18px;top: 10px;}
 li span {width:10px;height: 10px;background-color:#cb3636; position: absolute;left: -24px;top: 15px;border-radius: 50%;}
</style>

(1) 好像没什么要说的。。。

(2) 哈哈,想到了。画三角形的原理就是把一条边框设置为红色,其它三边都设置为透明,就像这样:

border-color:transparent red transparent transparent; 方向依次为 上 右 下 左

第三步:写js代码

(function hei(){

 var li = $("li"),
  len = li.length,
  he = $(".line_box").outerHeight(),
  old = li.eq(len - 1).outerHeight();

 $(".line").height( Number(he) - Number(old) );

}());

(1) 获取最外层的高度he

(2) 再获取最后一个内容的高度old

(3) 最总的高度就是(1) - (2)

(4) 这里之所以用outerHeight(),就是想把padding和border的高度也算进来

总结:

本次使用的是总高度减去最后一个内容的高度来算出细线的高度,当然还有其它的办法,不过最好还是加个resize监听浏览器变化就重新设置细线的高度就比较完善了。

这里使用百度CDN:

<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

完整的代码为:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style type="text/css">
.line_box {width: 200px;margin: 0 auto;position: relative;}
.line {width: 2px;height: 100%;background-color: #ccc;position: absolute;left: 0;top: 20px;}
ul {padding-left: 20px;}
li { padding: 10px;background-color: #cb3636;color: #fff;position: relative;margin-bottom: 20px;}
li i {border: 10px solid;border-color:transparent #cb3636 transparent transparent;position: absolute;left: -18px;top: 10px;}
li span {width:10px;height: 10px;background-color:#cb3636; position: absolute;left: -24px;top: 15px;border-radius: 50%;}
</style>
</head>
<body>
<div class="line_box">
 <div class="line"></div>
 <ul>
  <li><i></i>就是这么帅,就是这么不要脸!就是这么帅,就是这么不要脸!<span></span></li>
  <li><i></i>没办法,就是这么帅,就是这么叼!<span></span></li>
  <li><i></i>帅到自然醒,帅到闪到腰!<span></span></li>
 </ul>
</div>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
$(function(){

(function hei(){

 var li = $("li"),
  len = li.length,
  he = $(".line_box").outerHeight(),
  old = li.eq(len - 1).outerHeight();

 $(".line").height( Number(he) - Number(old) );

}());

})

</script>
</body>
</html>

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

jQuery 相关文章推荐
jQuery轻松实现无缝轮播效果
Mar 22 jQuery
使用 jQuery 实现表单验证功能
Jul 05 jQuery
jQuery Pagination分页插件_动力节点Java学院整理
Jul 17 jQuery
原生js jquery ajax请求以及jsonp的调用方法
Aug 04 jQuery
jQuery使用each遍历循环的方法
Sep 19 jQuery
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
JQueryDOM之样式操作
Mar 27 jQuery
jQuery层叠选择器用法实例分析
Jun 28 jQuery
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
jQuery实现简单评论区功能
Oct 26 jQuery
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 jQuery
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
jQuery实现 RadioButton做必选校验功能
Jun 15 #jQuery
jQuery ajax动态生成table功能示例
Jun 14 #jQuery
jQuery.form.js的使用详解
Jun 14 #jQuery
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
Jun 13 #jQuery
jquery+css实现侧边导航栏效果
Jun 12 #jQuery
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 #jQuery
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 #jQuery
You might like
56.com视频采集接口程序(PHP)
2007/09/22 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
护理专科毕业推荐信
2013/11/10 职场文书
库房主管岗位职责
2013/12/31 职场文书
解除财产保全担保书
2014/05/20 职场文书
淘宝店策划方案
2014/06/07 职场文书
招标授权委托书样本
2014/09/23 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
2016年教师节慰问信
2015/12/01 职场文书