css checkbox_如何使用CSS Checkbox Hack构建简单的幻灯片

css checkbox

在这个新教程中,我们将学习如何从头开始创建具有缩略图的功能齐全的响应式图像幻灯片。 为此,我们不需要编写任何JavaScript代码。 实际上,再次利用“ CSS复选框黑客技术”,我们将仅使用HTML和CSS。

我们的响应式CSS幻灯片

这是我们将在本教程中创建的幻灯片 (请确保查看完整的CodePen版本以防止页面跳至顶部):


1.从HTML标记开始

在本练习中,我们将从Unsplash中获取三张图像。

然后,我们将创建相应的单选按钮,并将其分组在image关键字下:

<input type="radio" id="image1" name="image" checked>
<input type="radio" id="image2" name="image">
<input type="radio" id="image3" name="image">

接下来,我们将.featured-wrapper.thumb-list元素放入容器中。

.featured-wrapper元素将包含三个列表:

  • 第一个列表将保存幻灯片图像。 一次只会显示一个图像。
  • 其他两个相同的列表将用于在图像/幻灯片之间导航。 两个列表都将包含其for值与上述单选按钮的id值匹配的标签。

提示:在我们的示例中,我们将单选按钮与多个标签相关联。 这是完全有效的

.thumb-list元素还将包括幻灯片图像及其描述。 但是,与.featured-list元素的图像不同,这些图像将始终可见并用于缩略图导航。

简而言之,我们的幻灯片演示将使用户能够通过点,箭头和缩略图在幻灯片之间切换。 Niiice!

最终HTML结构

默认情况下,第一张图像应该是可见/活动的。 考虑到这一点,我们将checked属性添加到第一个单选按钮。

放在一起,这是我们容器的结构:

<div class="container">
  <div class="featured-wrapper">
    <ul class="featured-list">
      <li>
        <figure>
          <img src="IMG_SRC" alt="">
        </figure>
      </li>
      <!-- other two list items here -->
    </ul>
    <ul class="arrows">
      <li>
        <label for="image1"></label>
      </li>
      <li>
        <label for="image2"></label>
      </li>
      <li>
        <label for="image3"></label>
      </li>
    </ul>
    <ul class="dots">
      <li>
        <label for="image1"></label>
      </li>
      <li>
        <label for="image2"></label>
      </li>
      <li>
        <label for="image3"></label>
      </li>
    </ul>
  </div>
  <ul class="thumb-list">
    <li>
      <label for="image1">
        <img src="IMG_SRC" alt="">
        <span class="outer">
          <span class="inner">...</span>
        </span>
      </label>
    </li>
    <!-- other two list items here -->
  </ul>
</div>

注意:在里面每个标签.thumb-list ,我不使用的块级figurefigcaption元素,因为W3C验证将抛出一个错误。 我们将坚持使用内联元素。

2.定义样式

在样式方面,我们首先将单选按钮移出屏幕以可视方式隐藏它们:

input[type="radio"] {
  position: absolute;
  bottom: 0;
  left: -9999px;
}

注意 :我添加了bottom: 0属性值,以防止每次单击标签时浏览器跳至页面顶部。 显然,这不是理想的方法,但它似乎在这里发挥了作用。 作为一般经验法则,请记住,此属性的值(或与之相对的top )应取决于幻灯片的大小。 另外,作为一种更稳定的解决方案,我可以设置display: none ,但是由于键盘的可访问性限制,不建议使用此方法。 具体而言,该样式将防止箭头键更改所选的单选按钮。

和往常一样,我们的容器的最大宽度将为水平居中的内容:

.container {
  max-width: 450px;
  padding: 0 20px;
  margin: 0 auto;
}

大图

默认情况下,所有精选图像都将堆叠在另一个图像之上。 除了与选中的单选按钮关联的图像之外,它们都将被隐藏。

要堆叠图像,令人惊讶的是,我们将不使用common position属性。 通常,您可能期望将图像转换为绝对定位的元素。 但是该方法有一个很大的缺点:从常规文档流中删除了绝对元素,因此我们必须找到一种方法来保留图像的宽高比。 例如,一个粗略,不雅致的解决方案可能是在图像容器中添加固定高度。

这是新CSS网格之类的新功能,尤其是在您仅对现代浏览器感兴趣的情况下。 因此,首先,我们使列表表现为一个网格容器,然后通过为它们提供grid-row: 1grid-column: 1将其项放置在同一单元grid-row: 1

这是相应CSS:

.featured-wrapper .featured-list {
  display: grid;
}

.featured-wrapper .featured-list li {
  grid-column: 1;
  grid-row: 1;
  opacity: 0;
  transition: opacity 0.25s;
}

点导航将绝对定位并位于.featured-wrapper元素的底部。 每个标签都将具有圆形外观,如下所示:

以下是相关样式:

/*CUSTOM VARIABLES HERE*/

.featured-wrapper {
  position: relative;
}

.featured-wrapper .dots {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
}

.featured-wrapper .dots li:not(:last-child) {
  margin-right: 8px;
}

.featured-wrapper .dots label {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 1px solid var(--white);
  transition: background 0.25s;
}

.featured-wrapper .dots label:hover {
  background: currentColor;
}

导航箭头将绝对位于.featured-wrapper元素内:

请记住,只会显示与选中的单选按钮关联的标签箭头。 要创建它们,我们将使用目标标签的::before::after伪元素。

以下是必需的样式:

/*CUSTOM VARIABLES HERE*/

.featured-wrapper .arrows label::before,
.featured-wrapper .arrows label::after {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  color: var(--black);
  background-position: center;
  background-repeat: no-repeat;
  background-size: 24px 24px;
  background-color: var(--white);
  opacity: 0.5;
  transition: opacity 0.25s;
}

.featured-wrapper .arrows label::before {
  left: 10px;
}

.featured-wrapper .arrows label::after {
  right: 10px;
}

缩图

每个缩略图将覆盖父级宽度的三分之一,如下所示:

要将标题放置在其图像的顶部,而不是使用传统CSS定位,我们将利用之前学习CSS Grid技巧。

我们将把标签变成一个网格元素,并迫使孩子覆盖整个尺寸。 默认情况下,将仅显示与选中的单选按钮关联的标题。 同样,由于CSS Grid,其内容将在水平和垂直方向上居中。

以下是目标样式:

/*CUSTOM VARIABLES HERE*/

.thumb-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-column-gap: 20px;
  margin-top: 20px;
}

.thumb-list label {
  display: grid;
}

.thumb-list img,
.thumb-list .outer {
  grid-column: 1;
  grid-row: 1;
}

.thumb-list .outer {
  display: grid;
  place-items: center;
  transition: background 0.25s;
}

.thumb-list .inner {
  font-size: 18px;
  opacity: 0;
  transform: translateY(20px);
  transition: all 0.25s;
}


3. Checkbox Hack:在幻灯片之间切换

现在让我们玩得开心! 我们将通过复选框hack和模仿JavaScript的click事件来突破CSS的界限。

因此,每次单击缩略图,点或箭头(即变为活动状态),都会发生以下情况:

  • 活动幻灯片将变得可见。
  • 活动点将收到白色背景色。
  • 活动缩略图的标题将出现。
  • 活动幻灯片的上一个和下一个箭头将出现。 这些将分别链接到其上一张幻灯片和下一张幻灯片。

以下是处理此功能的样式:

/*CUSTOM VARIABLES HERE*/

[id="image1"]:checked ~ .container .featured-list li:nth-child(1),
[id="image2"]:checked ~ .container .featured-list li:nth-child(2),
[id="image3"]:checked ~ .container .featured-list li:nth-child(3),
[id^="image"]:checked ~ .container .arrows [for^="image"]:hover::before,
[id^="image"]:checked ~ .container .arrows [for^="image"]:hover::after {
  opacity: 1;
}

[id="image1"]:checked ~ .container .arrows [for="image3"]::before,
[id="image2"]:checked ~ .container .arrows [for="image1"]::before,
[id="image3"]:checked ~ .container .arrows [for="image2"]::before {
  content: ’’; 
  background-image: url(arrow-prev-slideshow.svg);
}

[id="image1"]:checked ~ .container .arrows [for="image2"]::after,
[id="image2"]:checked ~ .container .arrows [for="image3"]::after,
[id="image3"]:checked ~ .container .arrows [for="image1"]::after {
  content: ’’; 
  background-image: url(arrow-next-slideshow.svg);
}

[id="image1"]:checked ~ .container .dots [for="image1"],
[id="image2"]:checked ~ .container .dots [for="image2"],
[id="image3"]:checked ~ .container .dots [for="image3"] {
  background: currentColor;
}

[id="image1"]:checked ~ .container [for="image1"] .outer,
[id="image2"]:checked ~ .container [for="image2"] .outer,
[id="image3"]:checked ~ .container [for="image3"] .outer {
  background: var(--overlay);
}

[id="image1"]:checked ~ .container [for="image1"] .inner,
[id="image2"]:checked ~ .container [for="image2"] .inner,
[id="image3"]:checked ~ .container [for="image3"] .inner {
  opacity: 1;
  transform: none;
}

您可能需要一些时间来了解上述样式的工作方式。 在这种情况下,浏览器检查器是您最好的朋友!

结论

就是这样,伙计们! 在本教程中,我们利用“ CSS checkbox hack技术”设法构建了一个带有缩略图的响应式纯CSS幻灯片。 希望您喜欢这个练习,并将其纳入下一个项目中。

这提醒我们建立了什么:

最后,我想说毫无疑问,CSS复选框黑客技术是增强CSS知识的好方法。 另一方面,在实际项目中,我们应该意识到它的局限性(可访问性,标记),以及何时应该使用lt代替JavaScript替代方法。

您是否曾经使用复选框hack构建了一些有趣的东西? 让我们知道!

翻译自: https://webdesign.tutsplus.com/tutorials/how-to-build-a-simple-slideshow-with-the-css-checkbox-hack--cms-34465

css checkbox

金蝶云星空API实战:从零到一,用Postman打通业务数据流 本文详细介绍了如何使用Postman调试金蝶云星空API,从创建第三方应用到实战调试技巧,帮助开发者快速打通业务数据流。文章重点讲解了API配置的关键细节、常见问题排查方法以及自动化测试方案,提升开发效率与准确性。 阅读详情

相关推荐

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

zhengzaifeidelushang的博客 3248

css中:checked和[checked]的区别

:checked伪类选择器来表示该元素是否被选中,如果被选中则显示定义的样式,没选中则不显示。 [checked]是表示含有checked属性的元素,无论选没选中都会显示定义的样式。 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-

qq_46176479的博客 2146

1、电路分析知识全解析:从基础到实践应用

本博客全面解析电路分析知识体系,涵盖从基础的电压、电流、电阻概念到复杂的交流电路、瞬态分析和高级应用如滤波器与变压器等内容。适合电子技术专业学生和技术爱好者学习,提供详细的知识结构、学习路径、实践示例以及丰富的学习资源,包括计算机模拟工具Multisim和PSpice的使用指导。通过理论与实践结合,帮助学习者掌握电路分析的核心技能,为电子工程和电力系统等相关领域打下坚实基础。

iii12的专栏 144

CSS 状态机:利用 Radio/Checkbox Hack 管理复杂的 UI 状态切换

状态机,英文叫做 State Machine,是一种抽象的计算模型。它描述了一个系统在不同状态之间转换的行为。状态 (State): 系统可能存在的不同情况。事件 (Event): 触发状态转换的因素。转换 (Transition): 从一个状态到另一个状态的改变。动作 (Action): 在状态转换过程中执行的操作。举个例子,一个简单的电灯开关就是一个状态机。开 (On)和关 (Off)。按下开关 (Event) 会导致状态从关 (Off)转换到开 (On), 或者从开 (On)转换到。

weixin_41455464的博客 980

使用 CSS Checkbox Hack 技术纯手工撸一个手风琴组件

在本篇文章里,我们将一起学习下如何使用 CSS checkbox hack 技术纯手工撸一个响应式的手风琴组件,这个组件完全基于CSS,没有JavaScript脚本,同时又基于窗口大小进...

前端达人 1344

css checkbox_如何使用CSS Checkbox Hack构建简单的拨动开关组件

在这个简短的教程中,我们将学习如何利用“ CSS checkbox hack技术”构建CSS的开关组件。 在此过程中,我们还将研究Codepen上的其他开关实现。 听起来像一个很好的挑战? 我们的开关组件 这是我们在本教程中将要构建的内容-一个简单的待办事项清单: 为了获得设计灵感,我们将使用Envato Elements上的Hngry UI Kit-Food Delivery UI...

Web design 教程小屋 391

uniapp项目里那个烦人的Sass除法警告,我是这样解决的(附版本锁定和math.div两种方法)

本文详细解析了Uniapp项目中Sass除法警告的根源及解决方案,包括版本锁定和使用math.div函数两种方法。针对Dart Sass最新版本对传统除法运算符的弃用,提供了实战指南和工程化建议,帮助开发者高效解决问题并提升代码质量。

weixin_30552811的博客 457

html点击按钮切换图片代码_动手练一练,用 CSS Checkbox Hack 技术制作一个响应式图片幻灯...

大家好,今天我们将一起学习下如何从零开始创建一个具有缩略图功能的响应式图片幻灯。这个案例我们无需编写任何 JavaScript 代码,这里主要运用了 CSS checkbox hack 的技术进行实现。这个案例除了运用 CSS checkbox hack 技术之外,还运用了复杂的CSS选择器、以及 flex box 和 Grid 布局的相关特性。一、 首先看看幻灯的效果展示如视频所示,一...

weixin_39980903的博客 810

s1html用图片做提交按钮,动手练一练,用 CSS Checkbox Hack 技术制作一个响应式图片幻灯...

大家好,今天我们将一起学习下如何从零开始创建一个具有缩略图功能的响应式图片幻灯。这个案例我们无需编写任何 JavaScript 代码,这里主要运用了 CSS checkbox hack 的技术进行实现。这个案例除了运用 CSS checkbox hack 技术之外,还运用了复杂的CSS选择器、以及 flex box 和 Grid 布局的相关特性。一、 首先看看幻灯的效果展示如视频所示,一个功能还算...

weixin_42117267的博客 357

css画布背景_快速提示:如何使用CSS创建画布外反馈表单

在这个超级快速的教程中,我们将逐步完成创建画布外反馈表单的过程。 我们不会使用任何JavaScript来完成此操作,实际上,我们将利用“ CSS checkbox hack技术”来构建它。 听起来很有趣? 这是我们将要构建的: 让我们开始吧! 1.从页面标记开始 我们将从复选框,标签和表格开始。 在表单中,我们将放置一些常见的表单元素。 请记住,这里的顺序很重要。 首先,我...

Web design 教程小屋 264

美化浏览器的radio和checkbox样式

先讲一下原理:checkboxhack技术我们使用 CSS 一些特殊的选择器,然后配合单选框以及复选框自带的一些特性,可以实现元素的显示隐藏效果。然后通过一些简单的扩展,我们可以不使用任何 JavaScript 代码实现类似:自定义的单复选框,“更多”展开与收起效果,选项卡切换效果,或是多级下拉列表效果等等。相信很多前端开发人员都会遇到 boss 让修改 checkbox 和 radio 样式,毕...

前端小贤 800

CSS HackCSS美化Checkbox

CSS Hack 只在特定浏览器生效的写法就叫css hack Hack即不合法但生效的写法 主要用于区分不同浏览器 缺点:难理解 难维护 容易失效 替代方案:特性检测 替代方案: 针对性加class 注意: 标准属性写前面,hack写后面 案例-checkbox <!DOCTYPE html> <html> <head> <meta charse...

Hello 298

美化浏览器自带的 radio ,checkbox 属性

美化浏览器自带的 radio ,checkbox 属性需求设计师:你那个单选框按钮好丑啊,跟我的设计稿差好远。程序员:我有什么办法,浏览器就是这样的。。。记得刚开始写页面时候,被浏览器各种默认的 UI 样式恶心到了,当初确实也没啥办法,反正也不影响功能,就那样吧。先讲一下原理:checkbox hack技术我们使用 CSS 一些特殊的选择器,然后配合单选框以及复选框自带的一些特性,可以实现元素的显...

Martin 的博客 1676

【译】使用Checkbox Hack技术可以做的事

本文首发于:https://github.com/bigo-frontend/blog/ 欢迎关注、转载。 本文由bigo前端翻译小组翻译,原文链接:The “Checkbox Hack” (and things you can do with it) 什么是Checkbox Hack Checkbox Hack技术就是复选框 <input type=“checkbox”>结合<label>标签,通过复选框的选中来控制一些元素的样式,比如: <label for="toggl.

yeyeye0525的博客 281

css checkbox_如何使用CSS Checkbox Hack构建手风琴组件

您将要创造的 在这个简短的教程中,我们将学习如何利用“ CSS checkbox hack技术”构建CSS的灵活手风琴组件。 最重要的是,我们的组件将完全响应,其布局将根据视口大小在水平和垂直之间切换。 在此过程中,我们将讨论CSS Checkbox Hack的工作原理,并查看CodePen开发人员提供的其他Checkbox Hack启发。 听起来很有趣? 我们的响应式CSS手风琴 ...

Web design 教程小屋 343

csscheckbox样式,css自定义checkbox样式的方法总结

在我们日常的开发工作中,html的开发是不可少的,那么CheckBox是在HTML中让使用者与首页上的素材发生交互作用的一种方法。其中包含CheckBox控件就是我们一般所说的复选框,通常用于某选项的打开或关闭,那么今天就给大家介绍css自定义checkbox样式的方法总结!css自定义checkbox样式1.使用CSS自定义radio、checkbox样式的示例详解以前做自定义样式的radio,...

weixin_32386693的博客 4156

使用css修改input框中checkbox的样式

概述    在页面设计时,我们经常使用input复选框。由于界面设计的需要,我们需要修改复选框的样式,使得界面更美观或者适应新的需求。由于CheckBox伪类修改比较复杂,通常修改的方式有两种,一个是链入图片,另一个是使用css的方法进行修改。链入图片的设计方式比较简单,但是需要预先设计或者下载图片,比较麻烦。纯css的方法,只需要在css文件中编写代码,个人觉得比较方便,因此,本文使用该方式对...

天涯的博客 17万+

css使用checkbox来打造switch开关按钮

css3打造switch开关按钮

胡世林的博客 5839

html css 实现自定义复选框 checkbox

html 默认的复选框样式很难看,于是想着自定义实现checkbox样式 思路是:通过字体图标实现 步骤: 1https://www.iconfont.cn/ 字体图标网站,选择复选框 选中和未选中时的图标,并下载下来 2 下载下来解压后文件如下图,把iconfont.ttf 复制到 工程 /font/iconfont.ttf 3 html 页面 引入字体文件 @font-face {font-family: "iconfont"; src:url('/fonts/icon...

仗剑天涯的专栏 3386

下拉菜单HTML/CSS/JS实现

本笔记系统讲解下拉菜单的实现原理与技术细节。结构上采用ul-li嵌套,通过子选择器与绝对定位精准控制层级。交互实现区分悬停版(鼠标移入移出自动显隐)与点击版(点击切换+空白收回)。CSS过渡动画详解transition用法,强调display不支持过渡,需用height变化配合overflow:hidden实现平滑展开收起。JS部分涵盖动态高度计算、元素加载时机、事件冒泡机制及stopPropagation阻止传播,适合初学者掌握常见交互组件的完整开发流程。

carlos20031004的博客 418

四、Tailwind CSS——间距与尺寸

本文讲解 Tailwind CSS 的间距与尺寸体系,涵盖间距刻度、内外边距、子元素间隔、宽高与统一尺寸,以及最大最小尺寸、视口单位和百分比等常用写法,帮助读者统一控制页面布局节奏。

nsdhakshda的博客 158

轮播图HTML/CSS/JS基础实现

本笔记记录轮播图的"窗口+胶卷"实现原理:父容器overflow:hidden形成窗口,胶卷通过flex横向排列,left属性控制平移切换。JS封装通用切换函数,setInterval驱动自动轮播,按钮绑定事件实现手动控制。任意页切换采用直接赋值法,点击页码跳转至对应left值(0、-800、-1600)。并强调CSS left初始化、parseInt转换单位等关键细节。

carlos20031004的博客 518

Pytorch代码,EMD-LSTM时间序列风速气候预测(完整源码和数据)

Pytorch代码,EMD-LSTM时间序列风速气候预测(完整源码和数据)

数据结构课程设计:基于B树为索引的图书管理系统.zip

数据结构课程设计:基于B树为索引的图书管理系统.zip

上一篇: css实现贝塞尔静态图_使用高级CSS条形图构建静态投资组合
下一篇: 项目:继续与Middleman建立我们的网站
daique1908
博客等级 码龄10年 29粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值