利用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 29 jQuery
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
jQuery修改DOM结构_动力节点Java学院整理
Jul 05 jQuery
jQuery+Cookie实现切换皮肤功能【附源码下载】
Mar 25 jQuery
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
jquery登录的异步验证操作示例
May 09 jQuery
jQuery 选择器用法基础入门示例
Jan 04 jQuery
jquery实现上传文件进度条
Mar 26 jQuery
JQuery复选框全选效果如何实现
May 08 jQuery
jquery绑定事件 bind和on的用法与区别分析
May 22 jQuery
如何解决jQuery 和其他JS库的冲突
Jun 22 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中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
php实现的简单检验登陆类
2015/06/18 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
python匹配两个短语之间的字符实例
2018/12/25 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
Python实现自动整理文件的脚本
2020/12/17 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
小小的船教学反思
2014/02/21 职场文书
酒店管理求职信范文
2014/04/06 职场文书
社区科普工作方案
2014/06/03 职场文书
项目经理任命书
2014/06/04 职场文书
政府法律服务方案
2014/06/14 职场文书
信息合作协议书
2014/10/09 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python