实现原理利用:target,把a标签自身的href以及id设置成一样的。

案例1:实现元素的切换

HTML:

<div id="box">
  <a href="#a" id="a">
    <p>我是P1的内容</p>
  </a>
  <a href="#b" id="b">
    <p>我是P2的内容</p>
  </a>
</div>

CSS:

body,div{
  margin:0;
  padding:0;
}
#box>a{
  display:none;
}
#box>a:first-of-type{
  display:block;
}
#box>a:target{
  display:none;
}
#box>a:target + a{
  display:block;
}

效果

点击后成这样。

再次点击

实现的原理就是先让所有的a标签隐藏,让第一个显示,当点击的时候让自己隐藏让它的下一个兄弟元素显示,其实这里有个坑,一开始实现这个效果的时候我以为会出问题,其实光这句话是不够的,刚刚碰巧我使用了

#box>a:first-of-type{
  display:block;
}

其实很关键,因为+号是匹配不了它的上一个兄弟元素的,不太好解释,自己去想吧。

案例2:通过点击事件结合模拟父元素选择器使用可以看这篇文章:CSS中模拟父元素选择器

案例3:利用target制作的tab切换可以看这篇文章:CSS3选择器的研究,案例 ctrl+f 搜索target

另外一种tab的实现,通过结合z-index

HTML:

<ul class="tabs">
  <li><a href="#tab1">标签一</a></li>
  <li><a href="#tab2">标签二</a></li>
  <li><a href="#tab3">标签三</a></li>
</ul>
<div id="tab1" class="tab_content">
  tab1
</div>
<div id="tab2" class="tab_content">
  tab2
</div>
<div id="tab3" class="tab_content">
  tab3
</div>

CSS:

.tab_content {
  border: 1px solid #ccc;
  background: #fff;
  padding: 20px;
  height: 250px;
  position: absolute;
  top: 150px;
  left: 0;
  width: 600px;
}
div:first-of-type{
  z-index:1;
}
div:target{
  z-index:1;
}

效果:

当然还有其他可以做的,暂时没想到,有新想法再更新。

CSS实现点击事件及实践的更多相关文章

  1. 纯CSS实现点击事件展现隐藏div菜单列表/元素切换

    在写移动端导航的时候经常用到点击按钮出现/隐藏导航条的情况,最常见的方法当然还是前端框架直接调用,省心省力,不易出错:当然还有使用纯JS实现的小代码段.我这里整理了纯CSS实现方式,给需要的人和给自己 ...

  2. css 禁止点击事件触发

    鼠标不可点击主要是两种表现: 1.鼠标不可点击时的显示状态 cursor: not-allowed 2.禁止触发点击事件 pointer-events:none

  3. 纯css实现点击事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. css处理事件透过、点击事件透过

    // 执行一些动作... $("#myModal2").css("pointer-events","none"); // 执行一些动作... ...

  5. css禁用鼠标点击事件

    css禁用鼠标点击事件 .disabled { pointer-events: none; } <div class="main-container disabled"> ...

  6. 项目遇到的小问题(关于vue-cli中js点击事件不起作用和iconfont图片下载页面css样式乱的解答)

     第一个:关于vue-cli中js点击事件不起作用 在vue的methods方法queryBtnFun()中拼接html和click操作事件的时候,发现点击事件一起未起作用: 后来发现是DOM执行顺序 ...

  7. 小程序实践(五):for循环绑定item的点击事件

    微信展示列表效果借助于 wx:for  简单写一个列表(wxml文件中): 对应的数据源(js文件中): 写一个点击监听: 效果: 以上.可以实现列表的item点击效果,但是无法到点击的item对应的 ...

  8. CSS伪类选择器active模拟JavaScript点击事件

    一.说明 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式. IE7及更早浏览器只支持a元素的:active,从IE8开始支持其它元素的:active. 另:如果需要给超链接定义:访问前 ...

  9. CSS 解决z-index上层元素遮挡下层元素点击事件问题

    解决z-index上层元素遮挡下层元素点击事件问题 by:授客 QQ:1033553122 开发环境 Win 10 element-ui  "2.8.2" Vue 2.9.6 需求 ...

随机推荐

  1. 从up6-down2升级到down3

    概述: 添加存储过程down_f_process.sql,down_f_del.sql 更新DnFile.updateProcess,DnFile.Delete 更新down.js 更新down.fo ...

  2. win10周年更新后程序各种卡死,进程无法结束怎么破?

    最近THINKPAD T460P更新了WIN10周年版后程序各种卡死,运行一段时间,各种程序就开始崩溃,进程无法结束,最终只能强制关机. 这个BUG微软已经确认了,安装了SSD+HDD双硬盘的WIN1 ...

  3. 第七章 内存管理单元MMU介绍

    7.1 内存管理单元MMU介绍 7.1.1 S3C2410/S3C2440 MMU特性 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查 特性: 与ARM V4兼容的映射长度.域.访问权 ...

  4. Android多线程

    final Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { ...

  5. Oracle 两个表之间更新的实现

    Oracle 两个表之间更新的实现   来源:互联网 作者:佚名 时间:2014-04-23 21:39 Oracle中,如果跨两个表进行更新,Sql语句写成这样,Oracle 不会通过.查了资料,S ...

  6. JS中innerHTML,innerText,value

    一·.JS初学者易混淆的问题:innerHTML,innerText,value(他们和JQ的区别:JS→value,JQ→value()) 1.getElementById("a" ...

  7. 查看Linux内存状况的命令及工具

    1.cat  /proc/meminfo cat  /proc/<pid>/statm  和 cat  /proc/<pid>/status  获取特定的进程的内存信息: 2. ...

  8. hosts文件的一个小发现

    今天才发现原来同一个ip可以在hosts文件中配置多个域名.之间老是换一个网站就改一下,现在终于不用这么麻烦了 127.0.0.1 gg.pclady.com.cn 127.0.0.1 gg.pcon ...

  9. 使用 CXF 做 webservice 简单例子

    Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 Spring 的轻量 ...

  10. mysql5.7 代价模型浅析

    代价模型 mysql 5.7.10代价计算相对之前的版本有5.7 代价模型浅析较大的改进.例如 代价模型参数可以动态配置,可以适应不同的硬件 区分考虑数据在内存和在磁盘中的代价 代价精度提升为浮点型 ...