当前位置: 首页 > news >正文

CSS实用技巧干货

一、使用 :not() 在菜单上应用/取消应用边框

clipboard.png

我们通常的做法是先给每个菜单项设置边框,然后在设置最后一个菜单的边框为零

/* add border */
.nav li {
  border-right: 1px solid #666;
}

//* remove border */
.nav li:last-child {
  border-right: none;
}

不过不要这么做,使用 :not() 伪类来达到同样的效果:

.nav li:not(:last-child) {
  border-right: 1px solid #666;
}

当然,你也可以使用 .nav li + li 或者 .nav li:first-child ~ li ,但是 :not() 更加清晰,具有可读性

.nav li + li{
    border-left:1px solid #666;}
    
/*.nav li:first-child ~ li{
    border-left:1px solid #fff;
}*/

二、使用:nth-child(n)选择项目

(注:第一个子元素的下标是 1)

:nth-child(3) 表示选择列表中的第三个元素

:nth-child(2n)表示列表中的偶数标签,即选择第2、第4、第6……标签

:nth-child(2n-1) 表示选择列表中的奇数标签,即选择 第1、第3、第5、第7……标签

:nth-child(n+3) 表示选择列表中的标签从第3个开始到最后(>=3)

:nth-child(-n+3) 表示选择列表中的标签从0到3,即小于3的标签(<=3)

:nth-last-child(3) 表示选择列表中的倒数第3个标签

:nth-of-type(n) 匹配属于父元素的特定类型的第 N 个子元素的每个元素

三、隐藏没有静音、自动播放的影片

video[autoplay]:not(:muted){
    display:none;
}

再次,利用了:not()的优点

四、IE 条件注释

IE 中的条件注释对 IE 的版本和 IE 非 IE 有优秀的区分能力,是 Web 开发中常用的hack方法,能对 IE 系列产品进行单独的 HTML 代码处理

<!--[if lt IE 9]>
//解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题
  <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.js"></script> 

//让不支持css3 Media Query的浏览器包括IE6-IE8等其他浏览器支持查询
  <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<![endif]—>
  • gt : greater than,选择条件版本以上版本,不包含条件版本
  • lt : less than,选择条件版本以下版本,不包含条件版本
  • gte : greater than or equal,选择条件版本以上版本,包含条件版本
  • lte : less than or equal,选择条件版本以下版本,包含条件版本
  • ! : 选择条件版本以外所有版本,无论高低

五、固定表格table-layout:fixed;

注:未完待续,发现新的技巧会持续更新,如有更好的技巧,欢迎留言讨论

相关文章:

  • Objective-C 中关联引用的概念
  • 鱼骨图 - 如何绘制?
  • Centos安装gerrit
  • 模型微调
  • 专属程序员的西游记,不是程序员读不懂哦?
  • 第十八天-企业应用架构模式-基本模式
  • 人脸识别最新开发经验demo
  • 百度地图api文档实现任意两点之间的最短路线规划
  • 链表
  • Spark一些必须知道的概念
  • Linux系列(5)linux基础命令
  • 08r2活动目录迁移升级2012r2--(DHCP迁移)
  • 唯一分解定理
  • 关于 es6的 let 特性在 for 循环结构 的个人理解
  • 蚂蚁数据分析平台的演进及数据分析方法的应用
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [译]CSS 居中(Center)方法大合集
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 2017 年终总结 —— 在路上
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Computed property XXX was assigned to but it has no setter
  • JavaScript的使用你知道几种?(上)
  • Python爬虫--- 1.3 BS4库的解析器
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Terraform入门 - 1. 安装Terraform
  • TypeScript迭代器
  • 多线程 start 和 run 方法到底有什么区别?
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前嗅ForeSpider教程:创建模板
  • 微服务核心架构梳理
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #{} 和 ${}区别
  • #《AI中文版》V3 第 1 章 概述
  • $GOPATH/go.mod exists but should not goland
  • (26)4.7 字符函数和字符串函数
  • (4) PIVOT 和 UPIVOT 的使用
  • (arch)linux 转换文件编码格式
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (SpringBoot)第二章:Spring创建和使用
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (一)认识微服务
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)为C# Windows服务添加安装程序
  • *2 echo、printf、mkdir命令的应用
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET使用存储过程实现对数据库的增删改查
  • .NET运行机制