整个代码如下:

  1. <template>
  2. <div style="width:400px;margin:100px auto;">
  3. <div class="con">
  4. <div class="same_module">
  5. <div class="title up" @click="slide($event)"><span>标题一</span><i class="arrow"></i></div>
  6. <div class="detail" style="height:0">
  7. <div class="inner">
  8. <p>这是一段文本</p>
  9. <p>这是一段文本</p>
  10. <p>这是一段文本</p>
  11. <p>这是一段文本</p>
  12. </div>
  13. </div>
  14. </div>
  15. </div>
  16. </div>
  17. </template>
  18.  
  19. <script>
  20. export default {
  21. data () {
  22. return {
  23.  
  24. }
  25. },
  26. methods:{
  27. slide:function(event){
  28. let curTarget = event.currentTarget,
  29. containsCurClass = curTarget.classList.contains("up"),
  30. nextSibling = curTarget.nextSibling;
  31. while(nextSibling.nodeType == 3 && /\s/.test(nextSibling.nodeValue)){
  32. nextSibling = nextSibling.nextSibling;
  33. };
  34. let detailScrollHeight = nextSibling.scrollHeight;
  35. if(containsCurClass){
  36. curTarget.classList.remove("up");
  37. this.toggleSlide(nextSibling,detailScrollHeight,'500');
  38. }else{
  39. curTarget.classList.add("up");
  40. this.toggleSlide(nextSibling,0,'500');
  41. }
  42. },
  43. toggleSlide:function(dom,height,time){
  44. dom.style.transition = 'height ' + time + 'ms';
  45. dom.style.height = height + 'px';
  46. }
  47. }
  48. }
  49. </script>
  50. <style scoped>
  51. .same_module{border:1px solid grey;}
  52. .title{color:#fff;height:30px;line-height:30px;background:blue;padding:0 10px;cursor: pointer;overflow: hidden;}
  53. .title span{vertical-align:middle;}
  54. .title .arrow{float: right;}
  55. .detail{overflow: hidden;}
  56. .detail .inner{padding:5px 10px;background: #808080;color:#fff;}
  57. .detail p{line-height: 26px;}
  58. .arrow{
  59. display: inline-block;
  60. border-top: 2px solid;
  61. border-right: 2px solid;
  62. width: 8px;
  63. height: 8px;
  64. border-color: #EA6000;
  65. transform: rotate(315deg);
  66. position: relative;
  67. transition: all 0.5s ease-in;
  68. transform-origin: center center;
  69. top:50%;
  70. margin-top:-10px;
  71. }
  72. .up .arrow{
  73. transform: rotate(135deg);
  74. }
  75.  
  76. </style>

参考地址:vue也可以 slidedown

vue+原生JavaScript实现slideDown与slideUp[简单思路]的更多相关文章

  1. jQuery学习之路(7)- 用原生JavaScript实现jQuery的某些简单功能

    ▓▓▓▓▓▓ 大致介绍 学习了妙味,用原生的JavaScript实现jQuery中的某些部分功能 定义自己的函数库lQuery ▓▓▓▓▓▓ $()选择器的实现 jQuery是面向对象的,所以自己编写 ...

  2. javascript学习-原生javascript的小特效(简单的运动效果)

    前些日子看了个视频所以就模仿它的技术来为大家做出几个简单的JS小特效 一:运动特效(主要是通过改变元素的left,right,height,width,opacity来达到运动的效果) 我们今天做一个 ...

  3. 原生 JavaScript 代替 jQuery【转】

    目录 用原生JavaScript代替jQuery Query Selector CSS & Style DOM Manipulation Ajax Events Utilities Promi ...

  4. 抛弃jQuery,拥抱原生JavaScript

    前端发展很快,现代浏览器原生 API 已经足够好用.我们并不需要为了操作 DOM.Event 等再学习一下 jQuery 的 API.同时由于 React.Angular.Vue 等框架的流行,直接操 ...

  5. 原生javascript封装动画库

    ****转载自自己发表于牛人部落专栏的文章**** 一.前言 本文记录了自己利用原生javascript构建自己的动画库的过程,在不断改进的过程中,实现以下动画效果: 针对同一个dom元素上相继发生的 ...

  6. 你可能不需要 jQuery!使用原生 JavaScript 进行开发

    很多的 JavaScript 开发人员,包括我在内,都很喜欢 jQuery.因为它的简单,因为它有很多丰富的插件可供使用,和其它优秀的工具一样,jQuery 让我们开发人员能够更轻松的开发网站和 We ...

  7. 原生javascript模仿win8等待进度条。

    一.序言 一直很中意win8等待提示圆圈进度条.win8刚出来那会,感觉好神奇!苦于当时没思路,没去研究.通过最近网上找找资料,终于给搞出来了!先上Demo,献丑了!预览请看:win8进度条. 二.简 ...

  8. 原生javascript写的侧栏跟随效果

    浏览网站时经常看到有的网站上,当一个页面很长的时候,设定侧栏内容会跟随滚动条滚动,我们把这种效果叫做“侧栏跟随滚动”.这种特效对提高网站浏览量.文章点击率.广告点击量都有一定效果. 侧栏跟随滚动的实现 ...

  9. 四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现

    原文:四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现 虽然说现在官方的自带插件已经有很多了,但是有时候往往不能满足我们 ...

随机推荐

  1. WebRTC系列(1)-手把手教你实现一个浏览器拍照室Demo

    1.WebRTC开发背景 由于业务需求,需要在项目中实现实时音视频通话功能,之前基于浏览器开发的Web项目要进行音视频通话,需要安装flash插件才能实现或者使用C/S客户端进行通信.随着互联网技术的 ...

  2. .NET Core中使用AutoMapper

    何为AutoMapper AutoMapper是对象到对象的映射工具.在完成映射规则之后,AutoMapper可以将源对象转换为目标对象. 安装AutoMapper 这里我们在NuGet中下载安装Au ...

  3. vue-router中元信息meta的妙用

    { path:"/test", name:"test", component:()=>import("@/components/test&quo ...

  4. ArcGIS Engine 笔记-控件类型

    控件 MapControl Map         地图控件 PageLayouControl      布局地图控件 TOCControl                目录控件 ToolbarCo ...

  5. LNMP shell

    #!/bin/bash #set -x #date: 2018-12-13 #Description: 一键安装LNMP环境 or LAMP 环境 #Version: 0.4 #Author: sim ...

  6. LeetCode算法题-Prime Number of Set Bits in Binary Representation(Java实现)

    这是悦乐书的第311次更新,第332篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第180题(顺位题号是762).给定两个正整数L和R,在[L,R]范围内,计算每个整数的 ...

  7. June 29th. 2018, Week 26th. Friday

    Real love is always worth waiting for. 真爱永远值得等待. From Westworld. Real love is rare, but it does exis ...

  8. 永久更改pip源和创建虚拟环境

    一.永久更改pip源 1.windows 编辑%APPDATA%/pip中的pip.ini(若无则新建): C:\Users\v_xmmxhli λ cd %APPDATA%/pip C:\Users ...

  9. tcp/ip协议详解

    1. 概念介绍 互联网协议(Internet Protocol Suite)是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构.它常被通称为 TCP/IP 协议族(英语:TCP/I ...

  10. spring-boot-starter-mail技术总结

    1. spring-boot-starter-mail技术总结 1.1. 配置读取类SMTPTransport 在application中需要配置的信息,在此类中都可以看到,可以在此类打断点查看 1. ...