24个 CSS 高级技巧合集(上)

简介: CSS复位可以在不同的浏览器上保持一致的样式风格。您可以使用CSS reset 库Normalize等,也可以使用一个更简化的复位方法

1.使用CSS复位



CSS复位可以在不同的浏览器上保持一致的样式风格。您可以使用CSS reset 库Normalize等,也可以使用一个更简化的复位方法:

*,
*::before,
*::after {
 box-sizing: border-box;
 margin: 0;
 padding: 0;
}


现在元素的 margin 和padding 已为0,box-sizing可以管理您的CSS盒模型布局。

注意:如果你遵循接下来继承 box-sizing讲解的这个技巧, 你不需要在以上代码中添加 box-sizing 属性。


2.继承 box-sizing



从 html 元素继承box-sizing :

html {
 box-sizing: border-box;
}
*,
*::before,
*::after {
 box-sizing: inherit;
}


如此在插件或其它组件里改变 box-sizing 变得简单。


3.使用unset而不是重置所有属性



重置元素的属性时,不需要重置每个单独的属性:

button {
 background: none;
 border: none;
 color: inherit;
 font: inherit;
 outline: none;
 padding: 0;
}


你可以用all简写來指定所有元素的属性。 将该值设置为unset会将元素的属性更改为其初始值:

button {
 all: unset;
}


注意: 所有速记在IE11中不被支持,目前正在考虑Edge的支持。 IE11不支持unset。


4.使用 :not() 选择器来决定表单是否显示边框



先为元素添加边框

/* 添加边框 */
.nav li {
 border-right: 1px solid #666;
}


为最后一个元素去除边框

/* 去掉边框 */
.nav li:last-child {
  border-right:none;
}


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

/* 去掉边框 */
.nav li:last-child {
  border-right:none;
}


当然,你也可以使用 .nav li + li,但是 :not() 更加清晰,具有可读性。


5.为 body 元素添加行高



不必为每一个 ,元素逐一添加 line-height,直接添加到 body 元素:

body {
 line-height: 1.5;
}


文本元素可以很容易地继承 body 的样式。


6.为表单元素设置:focus



有视力的键盘用户依靠焦点来确定键盘事件在页面中的位置。 使表单元素的焦点脱颖而出,然后与浏览器的默认实现保持一致:

a:focus,
button:focus,
input:focus,
select:focus,
textarea:focus {
 box-shadow: none;
 outline: #000 dotted 2px;
 outline-offset: .05em;
}


7.垂直居中任何元素



不!这绝不是黑魔法,真的可以垂直居中任何元素:

html,
body {
 height: 100%;
 margin: 0;
}
body {
 -webkit-align-items: center;
 -ms-flex-align: center;
 align-items: center;
 display: -webkit-flex;
 display: flex;
}


...還有CSS Grid:

body {
 display: grid;
 height: 100vh;
 margin: 0;
 place-items: center center;
}


这还不够?垂直方向,水平方向?任何元素,任何时间,任何地点?CSS-Tricks 有篇好文讲到了各种居中的技巧。

注意: IE11 对 flexbox 的支持有点 bug。


8.逗号分隔列表



使列表的每项都由逗号分隔:

ul > li:not(:last-child)::after {
 content: ",";
}


因最后一项不加逗号,可以使用 :not() 伪类。

注意: 这一技巧对于无障碍,特别是屏幕阅读器而言并不理想。而且复制粘贴并不会带走CSS生成的内容,需要注意。


9.使用负的 nth-child 来选择元素



使用负的 nth-child 可以选择1 至 n 个元素。

li {
 display: none;
}
/* 选择第 1 至第 3 个元素并显示出来 */
li:nth-child(-n+3) {
 display: block;
}


或许你已经掌握了如何使用 :not()这个技巧,试下这个:

/* 选择除前3个之外的所有项目,并显示它们 */
li:not(:nth-child(-n+3)) {
 display: none;
}


如此简单!

10.使用 SVG 图标



没有理由不使用 SVG 图标:

.no-svg .icon-only::after {
 content: attr(aria-label);
}


SVG 在所有分辨率下都可以良好缩放,并且支持所有 IE9 以后的浏览器,丢掉你的 .png, .jpg, 或 .gif-jif-whatev 文件吧。

注意: 针对仅有图标的按钮,如果 SVG 没有加载成功的话,以下样式对无障碍有所帮助:

* + * {
 margin-top: 1.5em;
}
相关文章
|
7月前
|
前端开发 JavaScript 开发者
学习CSS动画的高级技巧
【7月更文挑战第1天】学习CSS动画的高级技巧
72 2
|
弹性计算 前端开发
技巧篇:CSS高级技巧详解
  display -- block;(转换为块元素&& 显示) none(隐藏 && 不保留原来的位置) -- 重要!   visibility -- visible(显示) hidden (隐藏 && 保留原来的位置 )   复习:overflow:hidden; 1.之前解决父子关系垂直嵌套的合并塌陷问题。2.清除浮动
140 0
|
前端开发
CSS高级技巧——鼠标样式,轮廓,文本域防拖拽,vertical-align 垂直对齐,文字溢出问题
CSS高级技巧——鼠标样式,轮廓,文本域防拖拽,vertical-align 垂直对齐,文字溢出问题
253 0
CSS高级技巧——鼠标样式,轮廓,文本域防拖拽,vertical-align 垂直对齐,文字溢出问题
CSS高级技巧(提高现有基础水平)
CSS高级技巧(提高现有基础水平)
CSS高级技巧(提高现有基础水平)
|
Web App开发 前端开发 iOS开发
24个 CSS 高级技巧合集(下)
11.使用 “形似猫头鹰” 的选择器
173 0
|
前端开发 程序员 编解码
好程序员web前端分享12个CSS高级技巧汇总
好程序员web前端分享下面这些CSS高级技巧,一般人我可不告诉他哦。   使用 :not() 在菜单上应用/取消应用边框   给body添加行高   所有一切都垂直居中   逗号分隔的列表   使用负的 nth-child 选择项目   对图标使用SVG   优化显示文本   对纯CSS滑块使用 ...
1255 0
|
8天前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
26 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
28天前
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
64 34
|
29天前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
53 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
1月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
123 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子

热门文章

最新文章