当前位置: 首页 > news >正文

css自学框架之选项卡

这一节我们学习切换选项卡,两种切换方式,一种是单击切换选项,一种是鼠标滑动切换,通过参数来控制,切换方法。
请添加图片描述

一、参数

属性默认值描述
tabBar.myth-tab-header span鼠标触发区域
tabCon.myth-tab-content主体区域
classNamecurrent切换时追加的样式
tabEventclick触发事件,可以换成mousemove
index0默认第一个为打开,默认当前状态索引(从0开始)

二、Js代码

参数合并代码。

function extend() {// 默认不进行深拷贝var deep = false;var name, options, src, copy;var length = arguments.length;// 记录要复制的对象的下标var i = 1;// 第一个参数不传布尔值的情况下,target默认是第一个参数var target = arguments[0] || {};// 如果第一个参数是布尔值,第二个参数是才是targetif (typeof target == 'boolean') {deep = target;target = arguments[i] || {};i++;}// 如果target不是对象,我们是无法进行复制的,所以设为{}if (typeof target !== 'object') {target = {}}// 循环遍历要复制的对象们for (; i < length; i++) {// 获取当前对象options = arguments[i];// 要求不能为空 避免extend(a,,b)这种情况if (options != null) {for (name in options) {// 目标属性值src = target[name];// 要复制的对象的属性值copy = options[name];if (deep && copy && typeof copy == 'object') {// 递归调用target[name] = extend(deep, src, copy);} else if (copy !== undefined) {target[name] = copy;}}}}return target;};

功能时限代码。这段代码还是需要加到我们以前的基础框架中。

mythTable: function(options, callback) {var defaults = {tabBar: '.myth-tab-header span',tabCon: ".myth-tab-content",className: "current",tabEvent: "click",index: 0,}var options = extend(defaults, options);var that = this;var headspan = that.dom[0].querySelectorAll(options.tabBar);var contentTable = that.dom[0].querySelectorAll(options.tabCon);			for (var i = 0; i < headspan.length; i++) {	if(options.tabEvent=="mousemove"){headspan[i].onmouseover=function(){					for (var i = 0; i < headspan.length; i++) {						if(headspan[i]==this){headspan[i].classList.add(options.className)contentTable[i].style.display = "block";}else{headspan[i].classList.remove(options.className)contentTable[i].style.display = "none";}}}}else if(options.tabEvent=="click"){headspan[i].onclick=function(){for (var i = 0; i < headspan.length; i++) {						if(headspan[i]==this){headspan[i].classList.add(options.className)contentTable[i].style.display = "block";}else{headspan[i].classList.remove(options.className)contentTable[i].style.display = "none";}}}}}headspan[options.index].classList.add(options.className)contentTable[options.index].style.display = "block";}

三、css代码

/* 选项卡 */.myth-tab .myth-tab-header {border-bottom: 1px solid #e8e8e8;}.myth-tab .myth-tab-header span {cursor: pointer; display: inline-block; height: 40px;line-height: 40px;padding: 0 20px;border-bottom: solid 2px #fff;}.myth-tab .myth-tab-header span.current {border-bottom-color: #1890ff;}.myth-tab .myth-tab-content {display: none;padding-top: 20px;}

这段代码同样需要加入我们的CSS基础代码内。

四、html调用代码

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><link rel="stylesheet" href="css/myth.css"><script src="js/myth.js"></script><meta name="viewport" content="width=device-width, maximum-scale=1, initial-scale=1" /></head><body><div class="mythBox mid"><div class="myth-tab" id="mytable"><div class="myth-tab-header"><span role="tab">选项卡一</span><span role="tab">选项卡二</span><span role="tab">自适应宽度</span></div><div class="myth-tab-content">内容一</div><div class="myth-tab-content">内容二</div><div class="myth-tab-content">内容三</div></div></div><script>myth("#mytable").mythTable({ tabEvent:"mousemove",index:0});</script></body>
</html>

ok这样选项卡就实现了,需要源代码的请单击下载。

http://www.lryc.cn/news/185121.html

相关文章:

  • Element Plus组件库中的input组件如何点击查看按钮时不可编辑,点击编辑时可编辑使用setup
  • 小米、华为、iPhone、OPPO、vivo如何在手机让几张图拼成一张?
  • 物联网AI MicroPython传感器学习 之 WS2812 RGB点阵灯环
  • 【GPU常见概念】GPU常见概念及分类简述
  • JVM篇---第九篇
  • 探索 GAN 和 VAE 之外的 NLP 扩散模型
  • 发现很多人分不清 jwt session token 的区别?
  • GPT系列论文解读:GPT-3
  • 神经网络中的知识蒸馏
  • jmeter利用自身代理录制脚本
  • 【漏洞复现】时空智友企业流程化管控系统 session泄露
  • 获取泛型的类型
  • [Python进阶] Pyinstaller打包问题
  • 计算机竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python
  • 竞赛选题 机器学习股票大数据量化分析与预测系统 - python 竞赛选题
  • 智慧驿站:为城市带来全新智慧公厕未来形态
  • Java获取汉字首字母
  • 基于or-tools的人员排班问题建模求解(JavaAPI)
  • 设备管理团队如何做好停机维护工作_基于PreMaint设备数字化平台
  • c++ qt--线程(二)(第九部分)
  • ​企业数据泄露不断,深信服EDR助企业构建数据“安全屋”
  • 单线复用iptv影响网速吗?
  • C语言中常用的字符串处理函数(strlen、strcpy、strcat、strcmp)
  • Suricata – 入侵检测、预防和安全工具
  • vscode 乱码解决
  • SpringCloud(37):Spring Cloud Alibaba 综合集成架构演示
  • 【单片机】15-AD和DA转换
  • 基于FPGA的I2C读写EEPROM
  • Viva Employee Communications Communities部署方案
  • WPF向Avalonia迁移(三、项目结构)