利用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中关于bind()方法的使用技巧分享
Mar 30 jQuery
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
jQuery 中msgTips 顶部弹窗效果实现代码
Aug 14 jQuery
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 jQuery
关于jquery中attr()和prop()方法的区别
May 28 jQuery
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
jQuery实现的点击按钮改变样式功能示例
Jul 21 jQuery
jquery实现轮播图特效
Apr 12 jQuery
jquery实现手风琴案例
May 04 jQuery
jquery实现抽奖功能
Oct 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 获取ip地址代码汇总
2015/07/05 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
python的Jenkins接口调用方式
2020/05/12 Python
Python如何转换字符串大小写
2020/06/04 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
分布式数据库需要考虑哪些问题
2013/12/08 面试题
竞选演讲稿范文
2013/12/28 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
个人自我剖析材料
2014/02/07 职场文书
5.12护士节活动总结
2015/02/10 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
农村老人去世追悼词
2015/06/23 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书