利用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自定义图片上传插件实例代码
Apr 04 jQuery
JQuery实现定时刷新功能代码
May 09 jQuery
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
jQuery ajax动态生成table功能示例
Jun 14 jQuery
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 jQuery
jquery实现下载图片功能
Jul 18 jQuery
jQuery模仿ToDoList实现简单的待办事项列表
Dec 30 jQuery
基于jQuery实现挂号平台首页源码
Jan 06 jQuery
jQuery实现获取多选框的值示例
Feb 07 jQuery
jquery实现简单拖拽效果
Jul 20 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
php的hash算法介绍
2014/02/13 PHP
php的ZipArchive类用法实例
2014/10/20 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
Python os模块介绍
2014/11/30 Python
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
python代码中怎么换行
2020/06/17 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
公司行政经理岗位职责
2013/12/24 职场文书
学校四群教育实施方案
2014/06/12 职场文书
村委会贫困证明范文
2014/09/21 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python