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)

相关推荐

  • 体育模拟

    技术体育模拟 体育模拟import randomdef printInfo(): print("模拟体育竞技") print("学号后两位:26,曾俊谌")
    def getInputs():

    礼包 2021年11月14日
  • SAP Fiori编程模型规范里如何进行@ObjectModel.readOnly工作原理解析

    技术SAP Fiori编程模型规范里如何进行@ObjectModel.readOnly工作原理解析本篇文章为大家展示了SAP Fiori编程模型规范里如何进行@ObjectModel.readOnly工作原理解析,内容简

    攻略 2021年12月3日
  • CodeChef Weird Product

    技术CodeChef Weird Product CodeChef Weird ProductCodeChef Weird Product
    ? 设 \(p_k=\sum\limits_{i=1}^kA

    礼包 2021年12月16日
  • JAVA虚拟机的几个命令行参数是什么

    技术JAVA虚拟机的几个命令行参数是什么这篇文章将为大家详细讲解有关JAVA虚拟机的几个命令行参数是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

    攻略 2021年12月2日
  • 千层榴莲蛋糕,榴莲千层蛋糕的做法君之的有吗

    技术千层榴莲蛋糕,榴莲千层蛋糕的做法君之的有吗材料250g 奶油 , 7 蛋黄 , 3 蛋白 , 1tsp ovalette蛋糕乳化剂 , 200g 幼糖,300g 面粉 , 1/2tsp 苏打粉 , 200g 榴莲肉做

    生活 2021年10月26日
  • 抖音刷赞平台推广软件,抖音刷赞软件是真是假

    技术抖音刷赞平台推广软件,抖音刷赞软件是真是假抖音刷粉丝分三个步骤:1.选择抖音刷粉丝通道,2.准备刷粉丝账号,3.选择需要的套餐下订单刷粉,4.解释刷粉原理和方法。
    抖音粉丝最重要的就是选择一个可靠可靠的渠道,一家好的

    测评 2021年11月9日