一些小技巧让你的CSS技术更专业

  1. 使用:not()去除导航上不需要的边框

  2. 为body添加行高

  3. 垂直居中任何元素

  4. 逗号分离的列表

  5. 使用负nth-child选择元素

  6. 使用SVG图标

  7. 文本显示优化

  8. 在纯CSS幻灯片上使用max-height

  9. 继承box-sizing

  10. 表格单元格等宽

  11. 使用Flexbox摆脱边界Hack

  12. 使用属性选择器选择空链接

使用:not()添加/去除导航上不需要的边框

添加边框…

/* 添加边框 */

.nav li {

border-right: 1px solid #666;

}

…然后去除最后一个元素的边框…

/* 移除边框 */

.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() 的意图特别清晰,CSS选择器按照人类描述它的方式定义边框。

为body添加行高

你不需要分别为每一个 <p>, <h*> 等元素添加行高,而是为body添加:

body {

line-height: 1;

}

这种方式下,文本元素可以很容易从body继承。

垂直居中任何元素

不,这不是黑魔法,你的确可以垂直居中任何元素:

html, body {

height: 100%;

margin: 0;

}

body {

-webkit-align-items: center;

-ms-flex-align: center;

align-items: center;

display: -webkit-flex;

display: flex;

}

想让其他元素居中?垂直,水平…任何东西,任何时间,任何位置?CSS-Tricks上有 一个不错的文章 来做到这一切。

注意:IE11上flexbox的一些 缺陷行为。

逗号分离的列表

让列表看起来更像一个真正的逗号分离列表:

ul > li:not(:last-child)::after {

content: ",";

}

使用伪类:not() ,这样最后一个元素不会被添加逗号。

使用负 nth-child 选择元素

在CSS使用负nth-child选择1到n的元素。

li {

display: none;

}

/* 选择1到3的元素并显示 */

li:nth-child(-n+3) {

display: block;

}

或者,你已经学习了一些关于 使用 :not(),尝试:

/* select items 1 through 3 and display them */

/* 选择1到3的元素并显示 */

li:not(:nth-child(-n+3)){

display: none;

}

这很简单。

使用SVG图标

没有理由不使用SVG图标:

.logo {

background: url("logo.svg");

}

SVG对所有分辨率类型具有良好的伸缩性,IE9以上的所有浏览器都支持。所以放弃.png,.jpg或gif-jif等任何文件。

注意:如果你使用SVG图标按钮,同时SVG加载失败,下面能帮助你保持可访问性:

.no-svg .icon-only:after {

content: attr(aria-label);

}

文本显示优化

有些字体在所有的设备上并不是最优显示,因此让设备浏览器来帮忙:

html {

-moz-osx-font-smoothing: grayscale;

-webkit-font-smoothing: antialiased;

text-rendering: optimizeLegibility;

}

注意:请使用optimizeLegibility。同时,IE/Edge不支持text-rendering。

在纯CSS实现的内容滑块上使用max-height

在纯CSS实现的内容滑块上使用max-height,同时设置overflow hidden:

.slider ul {

max-height: 0;

overlow: hidden;

}

.slider:hover ul {

max-height: 1000px;

transition: .3s ease; /* animate to max-height */

}

继承box-sizing

从html继承box-sizing:

html {

box-sizing: border-box;

}

, :before, *:after {

box-sizing: inherit;

}

这让插件或使用其他行为的组件能很容易地改变box-sizing。

表格单元格等宽

使用表格会很痛苦,因此使用table-layout:fixed来保持单元格相同的宽度:

.calendar {

table-layout: fixed;

}

无痛表格布局。

使用Flexbox摆脱边界Hack

当使用列约束时,可以抛弃nth-,first- 和 last-child的hacks,而使用flexbox的space-between属性:

.list {

display: flex;

justify-content: space-between;

}

.list .person {

flex-basis: 23%;

}

现在列约束总是等间隔出现。

使用属性选择器选择空链接

显示没有文本值但是 href 属性具有链接的 a 元素的链接:

a[href^="http"]:empty::before {

content: attr(href);

}

这样做很方便。

浏览器支持

这些技巧在当前版本的Chrome,Firefox, Safari, 以及Edge, 和IE11可以工作。

前端开发者应该知道的 CSS 小技巧相关推荐

  1. css 自动换行_前端必备!20个CSS小技巧

    在日常学习和工作中,你是否经常觉得时间不够用?为了帮助你提高效率,今天,就为大家分享一些CSS小技巧,如果你感觉有用,也可以收藏与分享给你的小伙伴们~ 1. 文字水平居中 将一段文字置于容器的水平中点 ...

  2. 12个你可能不知道的CSS小技巧

    本文整理出12个开发中你有可能没有用到过的CSS小技巧,一起来看看吧~ 1. 自定义光标(cursor) 首先来看一下CSS的内置光标样式.平时开发中用到的基本上就是default.pointer.n ...

  3. ?Web开发者需要知道的CSS Tricks

    作为一名Web开发者,CSS是必备技能之一,我一直以为自己对CSS的掌握已经够用了,直到读Lea Verou的<CSS揭秘>时,我发现自己充其量就算个会打CS的选手,书中针对我们常见的网页 ...

  4. 【译】5 个你需要知道的 JavaScript 小技巧

    JavaScript 是目前最流行的编程语言之一.就像其他任何编程语言一样,它也有很多小技巧,从今天开始你就可以使用它们 大多数程序员都应该每天训练这些小技巧,直到熟能生巧. 在这篇文章中,我们将一起 ...

  5. 前端开发者应该知道的 Centos/Docker/Nginx/Node/Jenkins 操作

    点击上方 程序员成长指北,关注公众号 回复1,加入高级 Node 进阶交流群 来源:ask_the_sky https://juejin.cn/post/6951684431597797389 服务器 ...

  6. 前端开发者应该知道的 Centos/Dokcer/Nginx/Node/Jenkins 操作( 长文)

    服务器作为开发的一环,并且现在非常多的商业公司部署在生产环境上的服务器都是CentOS系统! 让我们了解了解也在情理之中! 作为前端开发者,我们应该跳出自己的一亩三分地,跳出舒适区.扩大自己的技术广度 ...

  7. 分享 10 个前端开发者需要知道的 JS 技巧

    英文 | https://javascript.plainenglish.io/as-a-front-end-engineer-10-javascript-tricks-and-tips-you-sh ...

  8. html a text decoration,你未必知道的CSS小知识:text-decoration属性变成了属性简写

    我相信有些小知识会让你大吃一惊. 跟着最新的CSS规范,text-decoration现在的写法是这样的: a { text-decoration: overline aqua wavy; } tex ...

  9. 分享一些前端开发者需要知道的 API 接口常识

    作者: 胡涂阿菌 链接:https://www.cnblogs.com/tanshaoshenghao/p/16215751.html 说实话,我非常希望自己能早点看到本篇文章,大学那个时候懵懵懂懂, ...

最新文章

  1. 戚薇在冰箱放香水,是贫穷限制了想象力!
  2. 在生产集群上运行topology
  3. React Native开发之必备React基础
  4. MariaDB 求和,最大值,最小值,平均数
  5. 【Android 应用开发】 ActionBar 基础
  6. tensorboardX笔记:理解graph
  7. springboot 2.3_Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
  8. UI Automation
  9. RapidMiner教程
  10. 18年,中国互联网的产品墓场
  11. 我内心深处最温柔的痛楚,你是否还能感知?
  12. java 事件冷却,基于“牛顿冷却定律”的机器学习算法
  13. 计算机病毒的常用方法,常用计算机检测病毒的方法
  14. 2022年度猫狗粮销售数据:十大热门品牌排行榜,哪些品牌入围?
  15. ubuntu 中安装 meld 的方式
  16. 江苏大学毕业设计TEX排版(三)
  17. python调用百度地图api定位_python 调用百度地图地点检索webAPI
  18. 刷题回顾(持续更新)
  19. 用C语言去判断一个字符串是否为回文字符串(简单明了)
  20. python获取计算股票技术指标DIF/DEA/MACD

热门文章

  1. arcgis把jpg转成栅格图像_在ArcGIS中配准(TIF、JPEG)栅格图像并矢量化
  2. MPSK通信系统的Monte Carl仿真(matlab实现,附源码)
  3. 小米平板4刷入twrp
  4. PTF渗透测试框架使用
  5. 华为nova7se怎么看云相册_华为nova7如何开启云空间
  6. **京东撸货是什么,京东撸货具体怎么玩,能不能赚钱,我来告诉你**
  7. 团购网站的发展趋势分析
  8. flutter去除阻尼效果
  9. 用网线实现两台电脑之间的文件共享
  10. Flutter listview下拉刷新 上拉加载更多 功能实现