CSS标签切换代码实例教程 比较漂亮

yizhihongxing

ChromeJS网站专栏上的“CSS标签切换代码实例教程 比较漂亮”是一篇介绍如何实现CSS标签切换效果的教程,该文主要从以下几个方面进行讲解:

1. 目录结构

首先,该文介绍了整个教程所需要的文件结构以及所用到的文件,其中主要包括index.html、index.css和index.js三个文件和一个img文件夹。

2. 实现思路

其次,该文详细介绍了如何实现CSS标签切换效果的实现思路。主要思路是通过JS控制HTML中标签的class属性,从而实现标签样式的切换。具体来说,文章介绍了如何使用JS监听页面加载完毕事件,然后通过获取相应的DOM元素、添加和删除类名等方式来实现标签切换。

3. 代码实现

最后,该文提供了两个完整的代码实例。第一个实例是基础版,通过改变标签的class实现了标签切换效果。第二个实例是升级版,引入了动画效果和鼠标事件监听,让标签切换更加生动有趣。

下面分别通过代码块的形式来展示这两个实例,具体代码实现详见以下示例:

基础版代码实现

<!-- index.html -->
<div class="container">
  <div class="header">
    <ul class="tabs">
      <li class="active"><a href="#" data-target="#tab1">Tab 1</a></li>
      <li><a href="#" data-target="#tab2">Tab 2</a></li>
      <li><a href="#" data-target="#tab3">Tab 3</a></li>
    </ul>
  </div>
  <div class="content">
    <div id="tab1" class="active">This is tab 1</div>
    <div id="tab2">This is tab 2</div>
    <div id="tab3">This is tab 3</div>
  </div>
</div>

<!-- index.css -->
.container {
  max-width: 800px;
  margin: 0 auto;
  background-color: #f5f5f5;
  box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.3);
}

.header {
  display: flex;
  justify-content: center;
}

.tabs {
  display: flex;
  justify-content: center;
  list-style: none;
  margin: 0;
  padding: 0;
}

.tabs li {
  margin-right: 10px;
}

.tabs li a {
  display: block;
  padding: 10px;
  text-decoration: none;
  background-color: #ddd;
  color: #333;
}

.tabs li.active a {
  background-color: #3388dd;
  color: #fff;
}

.content div {
  display: none;
}

.content div.active {
  display: block;
}

<!-- index.js -->
let tabs = document.querySelectorAll('.tabs li a');

for (let i = 0; i < tabs.length; i++) {
  tabs[i].addEventListener('click', (e) => {
    e.preventDefault();
    let target = e.target.getAttribute('data-target');
    let tab = document.querySelector(target);
    let activeTab = document.querySelector('.content .active');
    activeTab.classList.remove('active');
    tab.classList.add('active');
    let activeLink = document.querySelector('.tabs .active');
    activeLink.classList.remove('active');
    e.target.parentElement.classList.add('active');
  })
}

升级版代码实现

<!-- index.html -->
<div class="container">
  <div class="header">
    <ul class="tabs">
      <li class="active"><a href="#" data-target="#tab1">Tab 1</a></li>
      <li><a href="#" data-target="#tab2">Tab 2</a></li>
      <li><a href="#" data-target="#tab3">Tab 3</a></li>
    </ul>
  </div>
  <div class="content">
    <div id="tab1" class="active"><img src="./img/image1.jpg"></div>
    <div id="tab2"><img src="./img/image2.jpg"></div>
    <div id="tab3"><img src="./img/image3.jpg"></div>
  </div>
</div>

<!-- index.css -->
.container {
  max-width: 800px;
  margin: 0 auto;
  background-color: #f5f5f5;
  box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.3);
}

.header {
  display: flex;
  justify-content: center;
}

.tabs {
  display: flex;
  justify-content: center;
  list-style: none;
  margin: 0;
  padding: 0;
}

.tabs li {
  margin-right: 10px;
}

.tabs li a {
  display: block;
  padding: 10px;
  text-decoration: none;
  background-color: #ddd;
  color: #333;
}

.tabs li.active a {
  background-color: #3388dd;
  color: #fff;
}

.content div {
  position: relative;
  width: 100%;
  height: 0;
  padding-top: 56.25%; /* 16:9 aspect ratio */
  overflow: hidden;
}

.content div img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 300ms ease;
}

.content div.active img {
  opacity: 1;
}

<!-- index.js -->
let tabs = document.querySelectorAll('.tabs li a');

for (let i = 0; i < tabs.length; i++) {
  tabs[i].addEventListener('click', (e) => {
    e.preventDefault();
    let target = e.target.getAttribute('data-target');
    let tab = document.querySelector(target);
    let activeTab = document.querySelector('.content .active');
    activeTab.classList.remove('active');
    tab.classList.add('active');
    let activeLink = document.querySelector('.tabs .active');
    activeLink.classList.remove('active');
    e.target.parentElement.classList.add('active');
  })
}

let content = document.querySelector('.content');

content.addEventListener('mouseenter', () => {
  content.classList.add('hover');
})

content.addEventListener('mouseleave', () => {
  content.classList.remove('hover');
})

以上就是这篇“CSS标签切换代码实例教程 比较漂亮”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS标签切换代码实例教程 比较漂亮 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • JQuery模拟实现网页中自定义鼠标右键菜单功能

    下面是「JQuery模拟实现网页中自定义鼠标右键菜单功能」的完整攻略: 1. 实现思路 要模拟实现网页中自定义鼠标右键菜单功能,我们需要以下几个步骤: 绑定页面元素的右键菜单事件。 阻止默认的右键菜单事件。 创建自定义的菜单元素。 在页面上显示自定义的菜单元素。 根据用户的点击位置,调整自定义菜单的显示位置。 定义菜单元素的点击事件,实现对应功能。 接下来,…

    css 2023年6月10日
    00
  • CSS元素的6种显示类型

    CSS元素显示类型是指一个HTML元素在页面上以什么样的方式呈现。在CSS中,元素显示类型分为以下几种: 块级元素(Block) 块级元素以块的形式展现在页面上,每个块级元素都会自动换行。块级元素可以包含内联元素和其他块级元素。常见的块级元素包括div、h1、p等。 代码示例: <div>This is a block level element…

    Web开发基础 2023年3月20日
    00
  • css 如何清除浮动的示例代码

    清除浮动是指解决浮动元素对后面的元素造成的影响,一般使用 clear:both 来清除浮动,但有时会产生新的问题,因此需要使用其他的方法来清除浮动。 清除浮动的方式 通过定义父元素的高度来进行清除浮动,例如: <div style="overflow: hidden;"> <div style="float: …

    css 2023年6月10日
    00
  • CSS弹性盒模型flex在布局中的应用详解

    CSS弹性盒模型flex在布局中的应用详解 什么是弹性盒模型flex 弹性盒模型(Flexible Box Layout)是一种用于页面布局的CSS3模块。它可以在不同大小的屏幕上自适应地调整布局,使得页面看起来更加美观和统一。弹性盒模型主要依靠flex容器、flex项目、方向、对齐等概念来实现布局效果。 如何定义弹性盒模型flex 在一个盒子中定义一个灵活…

    css 2023年6月10日
    00
  • avalon js实现仿google plus图片多张拖动排序附源码下载

    下面是“avalon js实现仿google plus图片多张拖动排序附源码下载”的完整攻略: 确定需求 首先要明确需求:实现一个类似于 Google Plus 那样的多张图片拖动排序功能,需要使用 AvalonJS,对应的 HTML 还要使用 Bootstrap。 搭建 HTML 首先,需要布局页面和引入依赖。 <!DOCTYPE html> …

    css 2023年6月11日
    00
  • CSS3中新增的对文本和字体的设置

    当我们在使用CSS对网页进行样式设置时,文本和字体的设置通常是相当重要的部分。CSS3中新增了一些针对文本和字体的设置方法,可以让我们更加方便地对网页元素进行样式设置。下面是一份完整攻略,详细讲解了CSS3中文本和字体设置的方法,包含了两个示例说明。 1. CSS3中的文本设置 1.1 文本颜色设置 CSS3中可以通过color属性来设置文本的颜色。例如,以…

    css 2023年6月9日
    00
  • CSS之宽高比例布局的方法示例

    接下来我将详细讲解“CSS之宽高比例布局的方法示例”的完整攻略。 什么是宽高比例布局 宽高比例布局是指通过对元素的宽度和高度进行比例调整来实现相对稳定的布局。宽高比例布局在响应式设计中广泛使用,可以让页面随着设备尺寸的变化而自动调整元素大小,从而适应不同的屏幕尺寸。 CSS实现宽高比例布局的方法 CSS实现宽高比例布局的方法有多种,下面介绍其中的两种常见方法…

    css 2023年6月10日
    00
  • div模拟滚动条当div宽度小于18时滚动条不滚动

    下面是详细讲解“div模拟滚动条当div宽度小于18时滚动条不滚动”的攻略。 简介 在使用div模拟滚动条的时候,当内容宽度小于滚动条宽度时,滚动条不应该出现。这个问题可以通过CSS和JavaScript两种方式来实现。我们将详细地介绍这两种方式的实现方法。 CSS方式 在CSS中,我们可以通过控制div的overflow属性来控制它是否滚动,同时通过伪元素…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部