Label和input实现纯CSS切换

Label和input直接有一个关联,那就是聚焦选中的关系。

<label for="tab1">1</label>

<label for="tab2">2</label>

<label for="tab3">3</label>

 

<input type="text" id="tab1">

<input type="text" id="tab2">

<input type="text" id="tab3">
复制代码

打开之后点击label,你会发现焦点会聚焦到for对应的id上面,正因为这个关系,我们可以纯CSS实现tab切换。

先说一下思路,因为点击label的时候会自动聚焦到for对应的id,那么我们把这个input定位到一个框里面,高百分百占满这个框,然后绝对定位设置z-index为负的。点击label的时候,相当于scroll到当前聚焦的input。

标签:

<div>

  <div style="text-align: center">

    <label for="tab1">tab1</label>

    <label for="tab2">tab2</label>

    <label for="tab3">tab3</label>

    <label for="tab4">tab4</label>

  </div>

<div>

    <div style="background: red">

      <input type="text" id="tab1">

      <p>tab1</p>

    </div>

    <div style="background: blue">

      <input type="text" id="tab2">

      <p>tab2</p>

    </div>

    <div style="background: green">

      <input type="text" id="tab3">

      <p>tab3</p>

    </div>

    <div style="background: yellow">

      <input type="text" id="tab4">

      <p>tab4</p>

    </div>

  </div>

</div>

 

CSS:

.content{

  width: 800px;

  height: 500px;

  margin: 30px auto;

  border: solid 1px red;

}

label{

  display: inline-block;

  width: 80px;

  border: solid red 1px;

  ine-height: 40px;

  text-align: center;

}

.tab-content{

  width: 300px;

  height: 300px;

  overflow: hidden;

  border: solid blue 1px;

  margin: 20px auto;

  scroll-behavior: smooth;

}

.tab-content .item{

  position: relative;

  width: 300px;

  height: 300px;

}

.tab-content input{

  position: absolute;

  top: 0;

  height: 100%;

  z-index: -1;

}
复制代码

这样就能实现CSS切换tab,不需要任何js。

有一点缺陷就是没有滑动的效果,我这边用了scroll-behavior: smooth;这个属性,能够使scroll平滑的滑动,不过这个属性暂时兼容性还不够好。

欢迎关注Coding个人笔记 公众号

转载于:https://juejin.im/post/5c54f38ce51d45012d064324

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS图片切换页面效果可以通过使用CSS动画来实现。下面是一个简单的例子: HTML代码: ```html <div class="image-slider"> <input type="radio" name="slide" id="slide-1" checked> <input type="radio" name="slide" id="slide-2"> <input type="radio" name="slide" id="slide-3"> <div class="slides"> <div class="slide1"></div> <div class="slide2"></div> <div class="slide3"></div> </div> <div class="controls"> <label for="slide-1"></label> <label for="slide-2"></label> <label for="slide-3"></label> </div> </div> ``` CSS代码: ```css .image-slider { position: relative; width: 100%; max-width: 600px; margin: 0 auto; } .slides { position: relative; } .slides > div { position: absolute; top: 0; left: 0; width: 100%; height: 300px; opacity: 0; transition: opacity 0.5s; } #slide-1:checked ~ .slides .slide1, #slide-2:checked ~ .slides .slide2, #slide-3:checked ~ .slides .slide3 { opacity: 1; } .controls { position: absolute; bottom: 10px; width: 100%; text-align: center; } .controls label { display: inline-block; width: 15px; height: 15px; background: #333; border-radius: 50%; margin: 0 5px; cursor: pointer; } #slide-1:checked ~ .controls label:nth-child(1), #slide-2:checked ~ .controls label:nth-child(2), #slide-3:checked ~ .controls label:nth-child(3) { background: #fff; } ``` 这段代码中,我们使用了radio input来控制图片的切换,每个radio input对应一个图片,通过CSS选择器和:checked伪类来控制当前需要显示的图片。同时,添加了一组控制按钮,通过点击按钮来切换不同的图片。这样就实现CSS图片切换页面效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值