CSS中利用伪类、伪元素和相邻元素选择器的技巧有哪些

技术CSS中利用伪类、伪元素和相邻元素选择器的技巧有哪些CSS中利用伪类、伪元素和相邻元素选择器的技巧有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望

在CSS中使用伪类、伪元素和相邻元素选择器有哪些技巧?很多新手对此不是很清楚。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。需要的人可以从中学习,希望你能有所收获。

几天前,我遇到了这样一个页面需求:

CSS中利用伪类、伪元素和相邻元素选择器的技巧有哪些

一个评论框,后面的按钮有两种状态:赞或者发评论。发送按钮可以根据输入框中是否有文字分为可点击和不可点击两种状态。

需求:

没有文字,没有焦点;mdash竖起大拇指

没话说,专注于mdashmdash灰色发送

有词mdashmdash发送红色

如果用JS实现的话,在输入框中监控变化和焦点事件就比较麻烦了。但是,在CSS中使用伪类也可以达到类似的效果。

type=' text ' class=' input ' required ddiv class=' like ' like/div div class=' send ' send//div . send { display : none;}.input:focus~。发送{ display:block}.input:valid~。发送{ display:blockcolor:red}.input:focus~。比如, input:valid~。像{ display:none}(如果注释框由contenteditable属性的div元素实现,则可以使用:空的伪类来代替:valid。)

因此,CSS3中有很多伪类和伪元素,其中一些如果运用巧妙,可以达到很多原来JS需要的效果。

contenteditable属性的div占位符

出于某些原因,我们有时使用带有contenteditable属性的div,而不是input或textarea作为输入框。比如div可以根据内容自动调整高度。但是,div元素不支持占位符属性。当div内容为空时,如何显示默认文本?可以使用:空伪类。

div class=' input ' contentitableplaceholder='请在{content3360 attr(占位符)前输入text '/div . input : empty :3360;}画格子

这是在美团手机页面看到的:

CSS中利用伪类、伪元素和相邻元素选择器的技巧有哪些

我们需要在城市列表的这个区域画一个网格。当然,我们首先想到的是使用边框属性,但是设计师有一个要求,如果* * *线只有一两个城市,为了美观,后面应该有一个空白网格。像这样:

CSS中利用伪类、伪元素和相邻元素选择器的技巧有哪些

美团的页面上,网格的竖线是怎么画的?它是用:after和: after元素绘制的。

{ content : }之前的. table :位置:绝对;宽度:25%;left :25%;高度:nb

sp;100%;   border-left: 1px solid #ddd8ce;   border-right: 1px solid #ddd8ce; }  .table:after {   content: '';   position: absolute;   width: 10%;   left: 75%;   height: 100%;   border-left: 1px solid #ddd8ce;   border-right: none; }

分别创造了两个高度为100%的伪元素,利用它们的边框作为表格的竖线。这种方案可以实现设计师的要求,又不会增加空白的页面元素,破坏语义。但是局限性就是最多只能画四条竖线,也就是说表格最多有5列。

Tab切换

纯CSS实现Tab切换也是可以的。主要是利用了单选框元素的:checked伪类和相邻选择器。因为是单选框,所以保证了同一时间只有一个tab处于激活状态。如果不要求更复杂的效果,这样纯CSS实现的tab切换效果,要比JS简单可靠很多。

  <input id="tab1" type="radio" name="tabs" checked>   <label for="tab1">TAB1</label>   <input id="tab2" type="radio" name="tabs">   <label for="tab2">TAB2</label>    <div id="content1" class="tab-content">CONTENT1<div>     <div id="content2" class="tab-content">CONTENT2</div>
input, .tab-content{     display: none;   }   #tab1:checked ~ #content1,   #tab2:checked ~ #content2 {     display: block;   }

另外利用表单元素的伪类,可以label元素来代替单选框、复选框等表单元素的本身,因为为表单元素本身定义样式十分困难。

感知子元素的个数

这个是我看过的最复杂的一个技巧之一,来自这篇文章,不依靠JS实现了根据子元素的个数来应用不同的样式。

比如这样的CSS:

.list li:nth-last-child(n+4) ~ li, .list li:nth-last-child(n+4):first-child {   color: red }

可以实现这样的效果:如果.list里面li元素个数大于等于4,则显示为红色。

这是怎么实现的呢?

:nth-last-child(n+4)这一个选择器的意思就是倒数第四个以及之前的元素,后面加了~  li,就是表示符合前面条件的元素之后的li元素。

如果元素总数不足4,则不会存在符合:nth-last-child(n+4)的元素(一共没有四个,也就不存在倒数第四个),那么li:nth-last-child(n+4)  ~ li就不会选择任何的元素了。

但是如果只用~ li,是不会匹配到那个li的,所以又加上了li:nth-last-child(n+4):first-child。

这样也就实现了根据元素个数的多少来应用不同的样式。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/97015.html

(0)

相关推荐

  • 抖音刷粉会被限流吗,抖音刷粉有什么影响?

    技术抖音刷粉会被限流吗,抖音刷粉有什么影响?抖音的爆火引发了新的产业链的产生,点开百度输入关键词抖音上热门涨粉等等,就会出现很多的机构打着上热门,涨粉的这种幌子,制定出各种诱人的套餐,对抖音进行刷量,刷赞,换句话说只要你

    测评 2021年11月10日
  • dna聚合酶作用部位,DNA聚合酶作用部位及功能

    技术dna聚合酶作用部位,DNA聚合酶作用部位及功能DNA聚合酶作用部位是磷酸二酯键dna聚合酶作用部位。 1、聚合作用:在引物RNA-OH末端,以dNTP为底物,按模板DNA上的指令,即A与T,C与G的配对原则,逐步逐

    生活 2021年10月24日
  • 怎么实现Zynq-7000开发环境的搭建

    技术怎么实现Zynq-7000开发环境的搭建本篇文章给大家分享的是有关怎么实现Zynq-7000开发环境的搭建,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

    攻略 2021年12月10日
  • redis的sentinel配置文件(redis 的sentinel原理)

    技术Redis中的Sentinel机制怎么用这篇文章将为大家详细讲解有关Redis中的Sentinel机制怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 概述Redis-Se

    攻略 2021年12月15日
  • http工具类 james

    技术http工具类 james http工具类 jamespackage com.shsnc.south.znpact.server.util;import com.shsnc.south.znpact

    礼包 2021年11月15日
  • 在这里不得不说一下我们的ADAMoracle预言机

    技术在这里不得不说一下我们的ADAMoracle预言机 在这里不得不说一下我们的ADAMoracle预言机说到预言机,可能很多人都会懵圈,都会疑惑,这是个啥我怎么没听过区块链为什么需要预言机因为预言机可

    礼包 2021年11月13日