CSS伪类:empty让我眼前一亮
最近看过我文章的都知道:我最近在负责一个微信小程序的项目,在其中遇到了很多有趣的事和一些“奇思妙想”。本文的背景就是某天早上我看着wxml文件中一堆wx:if/else
和hidden
突然很烦躁,先不说wx:if导致的性能问题,就是标签上也是冗杂的。
接着上一篇文章【微信小程序自定义组件库yPicker组件分析及省市区三级联动实现】,在其中我分析了这么一个例子 —— 省市区三级联动的自定义实现,在其中有详细代码这里就不多说,说说如何调用:
我当时是这么想的:一方面出于“不在JavaScript里写太多东西”的考虑,另一方面,由于省、市、区我是分别用三个变量来实现的,所以JavaScript里就关注这三个变量,比如之间的空格或其它东西都拿到wxml文件里。就像这样:
<view class="departments location" bindtap="fixedshow"><view class="depart_title">所在位置</view><view wx:if="{{provinces&&citys&&areas}}" class="placeholder depart_content">{{provinces}} {{citys}} {{areas}}</view><view class="placeholder depart_content befselect" wx:else>请选择当前位置</view><view class="desc">如有变动请修改后再次提交</view>
</view>
(因为调用涉及到后来改动的只有在点击弹窗里的“确认”按钮时在事件中将那三个变量分别赋给这段代码中出现的三个变量 —— 否则会只要改动不管是点取消还是确认已经发生改变了,这样不妥!)
其布局是这样的:
.departments{width: 100%;height: 96rpx;display: flex;align-items: center;font-size: 36rpx;font-weight: 347;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;
}
.location{position: relative;border-bottom: 1rpx solid rgba(0,0,0,.009);display: flex;align-items: flex-start;padding-top: 20rpx;
}.desc{position: absolute;right: 19rpx;bottom: 4rpx;color: rgb(63,142,255);font-size: 23rpx;
}
.departments .depart_title{width: 20%;
}
.departments .depart_content{margin-left: 10%;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;
}
.departments .placeholder{width: 69%;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;
}
在决定了要替换这里的wx:if以后,你首先要想:用什么替换?
wx:if
作用是判断“是否存在”,如果不存在(条件不满足)就切换到wx:else
或是wx:elif
的逻辑里!
OK,想到这里,你应该能想到一个css伪类::empty
!它的作用和我们想要的效果一样:判断如果元素(内容)为空的话…
我迅速对代码做了改动:
<view class="departments location" bindtap="fixedshow"><view class="depart_title">所在位置</view><view class="placeholder depart_content">{{provinces}} {{citys}} {{areas}}</view><view class="desc">如有变动请修改后再次提交</view>
</view>
然后在class - depart_content上加了这个伪类:
.placeholder:empty::before{content: "请选择当前位置";color: rgba(0,0,0,.6);
}
一片空白!
经过查阅资料::empty
伪类表示如果标签内容为空,那么内容区域如果带有空格,也是不会被匹配到的!
在写标签时一定要注意这一点:标签内是否有空格或换行!(换行常常被解析为一个空格)
遇到非单标签一定注意闭合标签!
最后解决办法是:在js中将三个变量用空格相连接,再渲染到页面上即可!
(其实这里是一个自定义的选择器,而自动定位就是往高德地图发送了请求获取到省市区字段而已,代码就不写了。。。)
到这里我们会发现一个事:上面我们不仅用了empty伪类,还用了before伪元素!
其实这一点很平常 —— 毕竟只有empty是添加不了内容的(似乎纵观css,只有before和after这样伪元素可以向页面中添加内容,不管是文字还是图片之类的)
我认为更应该关注到的是两个地方:
- 伪元素中没有用position定位!一般来说对一个(存在内容的)元素来说,为其设置“前置”(before)/“后置”(after)样式都需要定位:规定其显示的地方。不然大概率伪元素中的文字是显示不出来的,通过本文的empty可以猜测:他被原本存在的内容覆盖住了。
- 从第一点可以得出:
:before
和:after
伪元素向标签内插入内容、图形,并不会影响empty伪类的匹配!
这个特性实用的一批。
由上,可见此伪类最大的用处就是“字段缺失提示”!这是非常实用的。而且把这项任务交给CSS也可以减轻许多“(布局)负担”、体验更好、维护起来也更方便!
比如:我在项目优化时就将所有有请求的字段都加上了统一类名:
.ym-empty:empty::before{content: "暂无数据,请重试",display: block;text-align: center;color: rgba(0,0,0,.6);/** 其它定位、字体更改操作 */
}
CSS伪类:empty让我眼前一亮相关推荐
- :empty css 可以用在哪些标签,CSS伪类:empty让我眼前一亮(实例代码)
最近看过我文章的都知道:我最近在负责一个微信小程序的项目,在其中遇到了很多有趣的事和一些"奇思妙想".本文的背景就是某天早上我看着wxml文件中一堆wx:if/else和hidde ...
- CSS 伪类选择器:如何使用 CSS3 伪类
CSS 伪类选择器:如何使用 CSS3 伪类 CSS3 是个好东西,但也很容易被她的变形(transform)和动画(其中许多特性因浏览器厂商而异)特性所迷惑,因而忘了那些已经被添加到标准规范中的最为 ...
- css修改select选择框option被选中的背景颜色_这 16 个 CSS 伪类,助你提升布局效率!
作者:Chidume Nnamdi 译者:前端小智 来源:mediuum 大家都说简历没项目写,我就帮大家找了一个项目,还附赠[搭建教程]. css 伪类是用于向某些选择器添加特殊的效果,是动态的,指 ...
- 2天驾驭div+css_老婆竟然只知道几个css伪类,不行得惩罚她了
最近在教我老婆学习前端,她说想要学习前端,自己在家赚点外快,自己赚点家用.我也拗不过她,而且其实我也挺佩服的.所以就教她了.最近我想考一考她对css中伪类的了解,所以就问了她了解css多少个伪类,伪类 ...
- 【重识 HTML + CSS】CSS 伪类、伪元素
CSS 伪类.伪元素 伪类 (pseudo-classes) 动态伪类 (dynamic pseudo-classes) :link.:visited.:hover.:active :focus 目标 ...
- CSS 伪类选择器详解:为网页添加交互与美感
介绍 CSS 伪类选择器是一种非常有用的 CSS 选择器,它能够根据元素的状态.位置或其他属性来选择元素并应用样式.伪类选择器的语法为 :pseudo-class,其中 pseudo-class 是一 ...
- CSS伪类选择器详细讲解
前言 伪类选择器在CSS中起到的作用可以说是至关重要的,如果CSS没有伪类选择器,有很多效果都要借助js来完成,这样不仅代码量增加,维护起来你难度也大.这样程序员的工作量大,也违背了CSS诞生的作用, ...
- CSS伪类布局菜单框学习+总结
CSS伪类 伪类的定义是:添加一些选择器的特殊效果. 选择器常见的有:id,tag,class,属性[attr=attrval]等.我暂时还不懂这个伪类是什么意思,但是我们知道CSS是html网页的表 ...
- CSS 伪类: 什么是 CSS 伪类?CSS 伪类怎么分类? CSS 伪类有哪些?以及分类对应的伪类
本章讲解的内容为 CSS 伪类 . 废话不多说, 直接上代码以及图例 (为了让大家方便阅读, 都有自己验证过程的一些图片作为分享) . 一: 什么是 CSS 伪类? 1. CSS 伪类是用来添加一些 ...
最新文章
- 在非互联网公司?!算法工程师的工作内容及心得建议
- javascript宿主对象之window.history
- 【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
- 服务器维护菜单,Romley平台BIOS常用操作
- 包含min函数的栈 python_面试题_设计包含 min函数的栈
- 计算机学院五名学生开发手语app,大学生团队研发成功“聋人自然手语翻译器”APP...
- layUI数据表格可编辑表格单元格值修改之后获取修改前的值
- 图片文字提取之路-01预处理
- 世界名着100部简介
- 华为交换机基于IP地址划分VLAN配置实验
- 校园网连不上,火绒检测dns错误但修复不了,360直接搞定,nice!
- android EditText 设置弹出数字输入法键盘
- 零基础如何入门学习电脑编程?
- 目标检测评价指标:精确度mAP
- 科技爱好者周刊(第 153 期):机器翻译是对译者的侮辱吗?
- 支付宝小程序控制硬件②】 全网首篇,个人支付宝小程序控制智能硬件esp8266,从设计电路到设计协议控制两盏LED灯调节亮度。
- java —— 不高兴的津津
- 解决:Linux版百度云客户端 BCloud网络错误 问题
- python 下载大文件,断点续传 | Python工具类
- 蔡高厅老师 - 高等数学阅读笔记 - 09 - 罗必塔法则 - 和最值定理和函数的单调性最值 (37、38、39、40~43)