利用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拖动改变div大小
Jul 04 jQuery
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 jQuery
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 jQuery
jquery实现左右轮播切换效果
Jan 01 jQuery
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
Vue引入jquery实现平滑滚动到指定位置
May 09 jQuery
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
jQuery zTree树插件的使用教程
Aug 16 jQuery
jQuery cookie的公共方法封装和使用示例
Jun 01 jQuery
jQuery+ThinkPHP实现图片上传
Jul 23 jQuery
jquery实现拖拽添加元素功能
Dec 01 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学习笔记之二
2011/01/17 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
js 页面元素的几个用法总结
2013/11/18 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
Python实现批量下载文件
2015/05/17 Python
在MAC上搭建python数据分析开发环境
2016/01/26 Python
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
python开头的coding设置方法
2019/08/08 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
韩国现代百货官网:Hmall
2018/03/21 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
教育技术职业规划范文
2014/03/04 职场文书
电子专业自荐信
2014/07/01 职场文书
高中军训的心得体会
2014/09/01 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
Python 线程池模块之多线程操作代码
2021/05/20 Python
Spring 使用注解开发
2022/05/20 Java/Android