首页 > 其他分享 >使用纯css来创建一个滑块

使用纯css来创建一个滑块

时间:2024-12-03 09:22:44浏览次数:10  
标签:flex container 滑块 slider 创建 width slide slideIndex css

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Slider</title>
<style>
.slider-container {
  width: 300px; /* Adjust as needed */
  position: relative;
  overflow: hidden; /* Hide overflowing content */
}

.slider {
  display: flex;
  transition: transform 0.5s ease-in-out; /* Add smooth transition */
}

.slide {
  min-width: 100%; /* Each slide takes full width */
  flex-shrink: 0; /* Prevent slides from shrinking */
}

.slide img {
  width: 100%;
  display: block; /* Prevent image from creating extra space */
}

/* Navigation buttons */
.slider-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
  display: flex;
  justify-content: space-between;
  z-index: 1; /* Ensure buttons are on top */
}

.slider-nav button {
  background: rgba(0, 0, 0, 0.5); /* Semi-transparent background */
  color: white;
  border: none;
  padding: 10px;
  cursor: pointer;
}


/* Example styling for slides - adjust as needed */
.slide:nth-child(1) {
  background-color: lightblue;
}

.slide:nth-child(2) {
  background-color: lightcoral;
}

.slide:nth-child(3) {
  background-color: lightgreen;
}


/* JavaScript to handle slider logic (can be done with pure CSS, but less flexible) */
<script>
  const slider = document.querySelector('.slider');
  const prevButton = document.querySelector('.prev-slide');
  const nextButton = document.querySelector('.next-slide');
  let slideIndex = 0;

  nextButton.addEventListener('click', () => {
    slideIndex++;
    if (slideIndex > slider.children.length - 1) {
      slideIndex = 0;
    }
    updateSliderPosition();
  });

  prevButton.addEventListener('click', () => {
    slideIndex--;
    if (slideIndex < 0) {
      slideIndex = slider.children.length - 1;
    }
    updateSliderPosition();
  });

  function updateSliderPosition() {
    slider.style.transform = `translateX(-${slideIndex * 100}%)`;
  }
</script>

</style>
</head>
<body>

<div class="slider-container">
  <div class="slider">
    <div class="slide"><img src="image1.jpg" alt="Image 1"></div>
    <div class="slide"><img src="image2.jpg" alt="Image 2"></div>
    <div class="slide"><img src="image3.jpg" alt="Image 3"></div>
  </div>
  <div class="slider-nav">
    <button class="prev-slide">&lt;</button>
    <button class="next-slide">&gt;</button>
  </div>
</div>

</body>
</html>

Explanation and Key Improvements:

  • HTML Structure: Sets up the container, slider, individual slides, and navigation buttons. Uses image placeholders; replace "image1.jpg", etc. with your actual image URLs.
  • CSS Styling:
    • .slider-container: Provides the fixed width and hides overflowing slide content.
    • .slider: Uses display: flex and transition for the sliding animation.
    • .slide: min-width: 100% ensures each slide occupies the full width of the container. flex-shrink: 0 prevents slides from shrinking if the container is too narrow.
    • .slider-nav: Positions the navigation buttons absolutely over the slider.
    • Responsive Design Considerations: The width of the .slider-container is currently fixed. For responsive behavior, consider using percentage widths or viewport units (e.g., vw).
  • JavaScript Logic: This code handles the actual sliding functionality:
    • `slide

标签:flex,container,滑块,slider,创建,width,slide,slideIndex,css
From: https://www.cnblogs.com/ai888/p/18583325

相关文章

  • iframe可以使用父页面中的资源吗(如:css、js等)?
    是的,iframe可以使用父页面中的资源,例如CSS和JavaScript。这取决于iframe的src属性以及父页面和iframe页面之间的关系。以下几种情况:同源策略下的iframe:如果iframe的src指向与父页面同源的URL(协议、域名和端口都相同),那么iframe可以完全访问父页面的资源,包括CSS、JavaScript......
  • 为什么说css中能用子代选择器的时候不要用后代选择器?
    在CSS中,提倡尽可能使用子代选择器(>)而不是后代选择器(空格),主要是因为性能和可预测性方面的原因:性能更高:子代选择器只选择直接子元素,而后代选择器会选择所有后代元素,包括子元素、孙元素等等。这意味着使用后代选择器时,浏览器需要遍历更多的DOM节点来确定匹配的元素,尤其在......
  • 宝塔面板如何一键创建和管理网站?
    宝塔面板提供了一键创建和管理网站的功能,使用户能够轻松地管理和配置网站。以下是详细的操作步骤和注意事项:操作步骤:登录面板:首先,登录到宝塔面板的管理界面,通常可以通过浏览器访问 http://你的服务器IP:8888 进入面板。进入网站管理:在面板首页,点击左侧菜单栏中的“网站”,......
  • 【Azure ADLS】为Azure Data Lake Storage的Container赋予了操作权限后创建子文件夹遇
    问题描述在ADF操作StorageAccount(AzureDataLakeStorage),在已经为根Container赋予了权限后,创建子文件夹的时候还是报错403"Thisrequestisnotauthorizedtoperformthisoperationusingthispermission"403  问题解答这是因为ADLSContainer的ACL权限有两......
  • H5-16 CSS 的引入方式
    1、内联样式(行内样式)要使用内联样式,你需要在相关的标签内使用样式(style)属性。Style属性可以包含任何CSS属性温馨提示:缺乏整体性和规划性,不利于维护,维护成本高<pstyle="color:red;font-size:30px;">内联样式</p>2、内联样式温馨提示:单个页面内的CSS代码......
  • 使用Tauri创建桌面应用
    当前是在Windows环境下1.准备系统依赖项MicrosoftC++构建工具WebView2(Windows10v1803以上版本不用下载,已经默认安装了)下载安装Rust下载安装Rust需要重启终端或者系统重新打开cmd,键入rustc--version,出现rust版本号,说明安装成功2.开始#npmnpmcr......
  • H5-15 H5里面的CSS
    1、CSS简介使用CSS的目的就是让网页具有美观一致的页面2、CSS概念CSS(CascadingStyleSheets)层叠样式表,又叫级联样式表,简称样式表CSS文件后缀名为.cssCSS用于HTML文档中元素样式的定义3、为什么需要CSS使用css的目的就是让网页具有美观一致的页面4......
  • idea创建web项目并连接数据库
    1.在idea中连接数据库在连接的数据库中,可以写SQL语句,创建数据库、表等。2.我的项目结构---学生请假系统Dao层:写一个学生实体类Servlet层:业务层具体的怎么实现相关操作1)最开始加上这个之后就不用配置映射文件了2)然后是这个就不用另外的建立连接了3)在resouces中不用存......
  • 如何实现将创建的vue项目导入到码云中(gitee)
    首先你需要拥有一个码云gitee账号第二部创建仓库:https://www.bilibili.com/video/BV1TJ411E7cY?spm_id_from=333.788.player.switch&vd_source=b52b201a0dc32836867cb0e0d825cddc&p=7在其中可能会遇到的问题有:这表明Git无法通过你设置的代理服务器(127.0.0.1,端口33210)建立连接......
  • jQuery和CSS3折叠卡片式下拉列表框特效
    这是一款使用JQUERY和CSS3制作的效果非常炫酷的折叠卡片式下拉列表框特效。该下拉列表框特效将每一个列表项都制作为卡片的样式,打开和关闭它有打开和关闭百叶窗的感觉,效果非常不错。预览  下载  使用方法 HTML结构该下拉列表框特效的列表项使用一个无序列表来制作,用......