伸缩栏

一.通过动画

实现思路

1.新建一个容器 Telescopic,此处设置弹性盒子使其水平居中;
2.容器中新建一个ul列表 给li高;
3.列表中存放两个div,分别命名tsctop和tscfoot 用来存放标题与内容;
注意:在tscfoot中写上overflow: hidden样式,防止tscfoot溢出,height设置为0;
4.jquery思路
(1)给tsctop添加点击事件,目的当点击tsctop时通过animate()事件改变tscfoot的高度。
(2)用$(this)获取到tsctop(this表示当前对象的引用),然后用next()方法获取到tscfoot(next()表示下一个兄弟节点)
(3)当改变tscfoot的高度时,使用siblings()方法获取到同胞节点的tscfoot类 还原高度

实现代码

html

		<div class="Telescopic">
			<ul>
				<li>
					<div class="tsctop">
						<h1>首页</h1>
					</div>
					<div class="tscfoot">
						内容
					</div>
				</li>
				<li>
					<div class="tsctop">
						<h1>栏目1</h1>
					</div>
					<div class="tscfoot">
						内容
					</div>
				</li>
				<li>
					<div class="tsctop">
						<h1>栏目2</h1>
					</div>
					<div class="tscfoot">
						内容
					</div>
				</li>
				<li>
					<div class="tsctop">
						<h1>栏目3</h1>
					</div>
					<div class="tscfoot">
						内容
					</div>
				</li>

			</ul>
		</div>

css

* {
				margin: 0px;
				padding: 0px;
				list-style: none;
			}

				
			html{
				    background: #84848473;
			}
			.Telescopic {
				margin: auto;
				width: auto;
				display: flex;
				justify-content: center;
			}

			li {
				width: 500px;
			}

			.tsctop {
				width: 100%;
				height: 50px;
				background-color: #ecffff;
				transition: .55s ease;
				border-bottom: 1px solid #ddd;
			}

			.tsctop:hover {
				cursor: pointer;
			}

			.tsctop h1 {
				color: #616161;
				font-size: 16px;
				text-align: center;
				line-height: 50px;
			}

			.tscfoot {
				width: 100%;
				height: 0px;

				background-color: skyblue;
				overflow: hidden;
				/* 防止tscfoot溢出 */



			}

javascript

			$(function() {
				$(‘.tsctop‘).click(function() {
					$(this).next().animate({
						"height": "500px"
					}, 200).parent().siblings().find(‘.tscfoot‘).animate({
						"height": "0px"
					}, 200);
				})

			})

示例
伸缩栏

二.通过slideToggle()

这种方法与第一种方法相比 添加了切换的按钮和再次点击时隐藏

实现思路

1.切换按钮 为按钮添加类样式ico 并通过jquery遍历方法使点击同胞元素时删除类样式ico 通过累加器判断i是否为奇数 使用html()或者replaceWith()改变按钮节点
2.伸缩 给tsctop添加slideToggle()事件;
注意:(1)给tscfoot 高(2)将tscfoot设置为display:none;

实现代码

html

<div class="Telescopic">
			<ul>
				<li>
					<div class="tsctop ss">
						<div>
							<h1>首页</h1>
						</div>
						<div class="lick">
							<p>十</p>
						</div>
					</div>
					<div class="tscfoot">
						内容
					</div>
				</li>
				<li>
					<div class="tsctop">
						<div>
							<h1>栏目1</h1>
						</div>

						<div class="lick">
							<p>十</p>
						</div>
					</div>
					<div class="tscfoot">
						内容
					</div>
				</li>
				<li>
					<div class="tsctop">
						<div>
							<h1>栏目2</h1>
						</div>

						<div class="lick">
							<p>十</p>
						</div>
					</div>
					<div class="tscfoot">
						内容
					</div>
				</li>
				<li>
					<div class="tsctop">
						<div>
							<h1>栏目3</h1>
						</div>

						<div class="lick ico">
							<p>十</p>
						</div>
					</div>
					<div class="tscfoot  ss">
						内容
					</div>
				</li>

			</ul>
		</div>
		

css

	* {
				margin: 0px;
				padding: 0px;
				list-style: none;
			}


			html {
				background: #84848473;
			}

			.Telescopic {
				margin: auto;
				width: auto;
				display: flex;
				justify-content: center;
			}

			li {
				width: 500px;
			}

			.tsctop {
				width: 100%;
				height: 50px;
				background-color: #ecffff;
				transition: .55s ease;
				border-bottom: 1px solid #ddd;
				overflow: hidden;
				display: flex;
				justify-content: space-between;
				align-items: center;
			}
			}

			.tsctop:hover {
				cursor: pointer;
			}

			.tsctop h1 {
				color: #616161;
				font-size: 16px;
				text-align: center;
				line-height: 50px;
			}

			.tscfoot {
				/*
					(1)给高
					(2)隐藏
					
				*/
				width: 100%;
				height: 450px;
				display: none;
				background-color: skyblue;
				overflow: hidden;
				/* 防止tscfoot溢出 */



			}

			.lick p {
				font-size: 16px;
			}

			.lick:hover {
				cursor: pointer;
			}

javascript

			$(function() {
				let i=0;
				$(‘.lick‘).click(function() {
					// 1.按钮
					$(this).addClass(‘ico‘).parents(‘li‘).siblings().find(‘.lick‘).removeClass(‘ico‘);
					i++;
					(i%2==1)?($(‘.ico‘).find(‘p‘).html("<p>一</p>")):($(‘.ico‘).find(‘p‘).html("<p>十</p>"))
					// 伸缩
					$(‘.ico‘).parents(‘.tsctop‘).next().slideToggle();

				})

			})

示例
伸缩栏

伸缩栏

上一篇:思维|从函数到分段函数


下一篇:7网络与通信-