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

Advanced CSS Tips

高洛峰
高洛峰Original
2016-11-22 10:00:531491browse

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;
}

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

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

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 e388a4556c0f65e1904146cc1a846bee and 559b785d768baf49c9620501eda57184 separately. On the contrary, you only need to add them to the body:

body {
  line-height: 1;
}

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;
}

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: ",";
}

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;
}

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

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

Use SVG for icons

There is no reason not to use SVG for icons:

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

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);
}

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;
}

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 */
}

继承box-sizing

让box-sizing继承自html:

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

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

设置表格相同宽度

.calendar {
  table-layout: fixed;
}

使用Flexbox来避免Margin Hacks

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

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

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

对空链接使用属性选择器

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

a[href^="http"]:empty::before {
  content: attr(href);
}

文本溢出省略的处理方法

单行文本溢出

.inline{
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

多行文本溢出

.foo{
    display: -webkit-box!important;
    overflow: hidden;
    text-overflow: ellipsis;
    word-break: break-all;
    -webkit-box-orient: vertical;/*方向*/
    -webkit-line-clamp:4;/*显示多少行文本*/
}


Statement:
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
Previous article:CSS syntax summaryNext article:CSS syntax summary