CSS实用技巧:伪元素&伪类的妙用
时间:2023-03-12 22:11:44
科技观察
CSS在网页中占有非常重要的地位。近年来,随着CSS的发展,伪元素/伪类也开始得到广泛应用:在性能越来越被看重的当下,文档流之外的CSS伪元素/伪类当之无愧“无冕之王”!作者总结如下希望对你有所帮助:关于CSS的一些“滚动操作”::hover和:focus显示浮动层我们可以直接使用CSS父子选择器(用于“父子嵌套”)/siblingselector(用于“同级并排”)+伪类:hover实现【鼠标滑入时显示xxx】,无需JS!例如:鼠标滑入链接时显示图片imagelinkimg{visibility:hidden;position:absolute;transition:visibility.2s;/**设置延迟**/}a:hover+img,img:hover{visibility:visible;}最后加入img:hover,当鼠标在图片上滑动时保持图片显示——到防止图像覆盖链接显示。但这在一种情况下会“失败”:没有鼠标环境。例如:移动终端、智能设备。我们可以在img中添加一个伪类:focus来优化体验——focus状态:a:focus+img,img:focus{visibility:visible;transition:none;}:focus:hover上面的代码肯定想到了更多的好应用场景:纯CSS实现下拉列表(二级菜单)其实就是在下拉列表中。我不建议使用“没有父子关系的协调元素”——如果你只是单纯地使用css。问题是焦点::focus仅在当前元素获得焦点时匹配。那么,这就需要一系列的方案来简单的解决这个问题。比如上面为这个效果设置的transitiondelay。但实际上,这仍然“不是问题”:因为浏览器支持新的规范::focus-within,它规定“当当前元素或当前元素的任何子元素处于焦点时匹配”!它本质上是一个“父选择器行为”:MyMessages我的回答我的私信我的订单我的关注我的最爱
.cs-list{display:none;position:absolute;border:1pxsolidred;background-color:#fff;}.y-table:focus-within.cs-list{display:block;}:focus-within:not()判断显示的元素是否在[Search]按钮中在网页中,有一个场景是根据输入的关键字显示一个列表。作者曾经写过一篇文章,用JavaScript来解释场景:(JavaScript)百度/谷歌搜索的即时自动补全功能是如何“工作”的?其实我们也可以使用CSS的:not()来优化显示——判断符合条件的信息不是xxx:.list:not([class="show"]){display:none;}在CSS3选择器中,有个东西叫属性选择器,包括:[attr](有这个属性),[attr=xxx](属性值为xxx),[attr^=xxx](属性值以xxx开头),[attr$=xxx](属性值以xxx结尾),[attr*=xxx](属性值包含xxx)这些用法。然后在过滤的时候根据“是否满足条件”动态的给返回列表中的一些item加上showclassname。我们甚至可以配合“自定义数据属性”::不点击按钮显示菊花图说一个很常见的使用场景:在表单中,当你点击提交按钮时,如果可以让用户看到“更多的反馈效果”看来这个页面会更受欢迎。那么,当你“提交表单”时让用户知道他们正在等待似乎是一个不错的选择:通过JavaScript控制类名,在单击时将loading-name应用于按钮按钮,使其文本透明,并设置加载图片的背景!当你看到“click”的时候,我想你应该会暂时想到“伪类:focus”或者“伪类:active”,试试重写吧!:active实现“数据上报”其实网页还有一个小问题:如果用户禁用JavaScript/浏览器不支持JavaScript怎么办?当然,后一种情况现在基本不会出现,但这确实是一个棘手的问题,吸引了一大批前端开发者已经应接不暇!这个问题在笔者的其他文章中也有提到。这里只讲“数据上报”:如果没有表单,不支持JavaScript(不能用ajax),数据怎么传到后台呢?好在有一个伪类:active——点击状态!以前只针对a,现在也支持所有的html标签。但是你可能会问:这个伪类不就是用来改变链接的颜色的吗?当然,光有这个元素是不够的,不知道大家有没有想到【判断点击次数】这个经典demo!我们通常使用active和after结合:就算你不信,它确实会向服务器发送请求并上传数据!这里为什么要用url?如果不使用图片格式,只能在after-content的字符串格式中写入固定值。::after和::before的场景在伪元素/伪类中用作“实践”。after和before怎么能不提呢?使用场景太多:常见的"'|'textSymbols之间”,”textbeforeandafter水平线“,”一些特殊的模式甚至组合模式“可以看到::一个“搜索图标”样式实现后,纯CSS实现的一个很酷的“加载”这篇文章是转载自微信公众号“前端匠人”,可关注以下二维码,转载请联系前端匠人公众号。