利用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 相关文章推荐
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
jquery Ajax实现Select动态添加数据
Jun 08 jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 jQuery
浅谈jQuery框架Ajax常用选项
Jul 08 jQuery
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 jQuery
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
JS拖动选择table里的单元格完整实例【基于jQuery】
May 28 jQuery
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
Jul 11 jQuery
jQuery实现电梯导航模块
Dec 22 jQuery
jquery插件实现图片悬浮
Apr 16 jQuery
jQuery实现广告显示和隐藏动画
Jul 04 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读取msn上的用户信息类
2008/12/05 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
使用python实现BLAST
2018/02/12 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
新春文艺演出主持词
2014/03/27 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
安全生产演讲稿
2014/05/09 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
Oracle中update和select 关联操作
2022/01/18 Oracle