Home > Web Front-end > CSS Tutorial > Advanced CSS Tips

Advanced CSS Tips

高洛峰
Release: 2016-11-22 10:00:53
Original
1578 people have browsed it

Use :not() to add/cancel the border on the menu

Many people will add a border to the navigation like this, and then cancel it for the last one:

/* add border */
.nav li {
  border-right: 1px solid #666;
}
/* remove border */
.nav li:last-child {
  border-right: none;
}
Copy after login

In fact, using CSS3’s :not() can be simplified to the following code:

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

Of course, you can also use .nav li + li or even .nav li:first-child ~ li, but using :not() can make the intention more clear
All major browsers support the :not selector, except IE8 and earlier versions

Add line-height attributes to body

You don’t need to add line-height attributes to

and separately. On the contrary, you only need to add them to the body:

body {
  line-height: 1;
}
Copy after login

In this way, the text element can easily inherit this attribute from the body

Vertical centering

You can vertically center any element:

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

Note: flexbox has some bugs under IE11

Use commas to separate the list

The list looks like it is comma-separated:

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

Remove the comma after the last element via the :not() pseudo-class

Use negative nth-child to select elements

Use negative nth-child between 1 and n Select elements between:

li {
  display: none;
}
/* 选择第1到3个元素并显示它们 */
li:nth-child(-n+3) {
  display: block;
}
Copy after login

Of course, if you understand :not(), you can also do this:

li:not(:nth-child(-n+3)) {
  display: none;
}
Copy after login

Use SVG for icons

There is no reason not to use SVG for icons:

.logo {
  background: url("logo.svg");
}
Copy after login

SVG for any resolution The zoom effect is very good and supports all IE9+ browsers, so give up using png, jpg, and gif files
Note: The following code can improve accessibility for users who use assistive devices to access the Internet:

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

Optimize display text

Sometimes fonts don’t display optimally on all devices, so let your device browser help you:

html {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
Copy after login

Note: Please use optimizeLegibility responsibly. In addition, IE/Edge does not support text-rendering

Use max-height to implement pure CSS slideshow

Use max-height with beyond hiding to implement pure CSS slideshow:

.slider ul {
  max-height: 0;
  overlow: hidden;
}
.slider:hover ul {
  max-height: 1000px;
  transition: .3s ease; /* animate to max-height */
}
Copy after login

继承box-sizing

让box-sizing继承自html:

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

这使得在插件或者其他组件中修改box-sizing属性变得更加容易

设置表格相同宽度

.calendar {
  table-layout: fixed;
}
Copy after login

使用Flexbox来避免Margin Hacks

在做多列布局的时候,可以通过Flexbox的space-between属性来避免nth-、first-、 last-child等hacks:

.list {
  display: flex;
  justify-content: space-between;
}
.list .person {
  flex-basis: 23%;
}
Copy after login

这样,列之间的空白就会被均匀的填满

对空链接使用属性选择器

中没有文本而href不为空的时候,显示其链接:

文本溢出省略的处理方法

单行文本溢出

多行文本溢出


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template