利用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 EasyUI $.Parser
Jun 02 jQuery
jquery操作ul的一些操作笔记整理(干货)
Aug 31 jQuery
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 jQuery
jquery登录的异步验证操作示例
May 09 jQuery
jQuery实现简单弹幕效果
Nov 28 jQuery
jQuery实现消息弹出框效果
Dec 10 jQuery
jQuery 隐藏/显示效果函数用法实例分析
May 20 jQuery
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
May 29 jQuery
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 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使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
Python计算一个文件里字数的方法
2015/06/15 Python
python字典快速保存于读取的方法
2018/03/23 Python
python实现log日志的示例代码
2018/04/28 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
python保留小数位的三种实现方法
2020/01/07 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
python中如何打包用户自定义模块
2020/09/23 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
毕业生就业自荐书
2013/12/15 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
化学教育专业自荐信
2014/07/04 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
python tkinter实现定时关机
2021/04/21 Python
MySQL笔记 —SQL运算符
2022/01/18 MySQL
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技