Home  >  Article  >  Web Front-end  >  CSS advanced layout techniques

CSS advanced layout techniques

高洛峰
高洛峰Original
2017-02-09 13:14:461213browse

Use :empty to distinguish empty elements

Compatibility: IE8 is not supported

If we have the above list:

<div class="item">a</div>
<div class="item">b</div>
<div class="item"></div>

We hope to be able to compare empty elements and If non-empty elements are treated differently, there are two options.

Use :empty to select empty elements:

.item:empty {
  display: none;
}

Or use :not(:empty) to select non-empty elements:

.item:not(:empty) {
  border: 1px solid #ccc;
  /* ... */
}

Use :*-Of-Type to select elements

Compatibility: IE8 is not supported

Example.

Bold the first p paragraph:

p:first-of-type {
  font-weight: bold;
}

Add a border to the last img:

img:last-of-type {
  border: 10px solid #ccc;
}

Add style to the unconnected blockquote:

blockquote:only-of-type {
  border-left: 5px solid #ccc;
  padding-left: 2em;
}

Let the p paragraphs in odd-numbered columns be red first:

p:nth-of-type(even) {
  color: red;
}

In addition, :nth-of-type can also have other types of parameters:

/* Even number*/
: nth-of-type(even)

/* only the third one*/
:nth-of-type(3)

/* every third one*/
:nth-of-type(3n)

/* Add three to every fourth, i.e. 3, 7, 11, ... */
:nth-of-type(4n+3 )

Use calc for fluid layout

Compatibility: IE8 is not supported

Left, middle and right fluid layout:

nav {
  position: fixed;
  left: 0;
  top: 0;
  width: 5rem;
  height: 100%;
}
aside {
  position: fixed;
  right: 0;
  top: 0;
  width: 20rem;
  height: 100%;
}
main {
  margin-left: 5rem;
  width: calc(100% - 25rem);
}

Use vw and vh to create full-screen scrolling effect

Compatibility: IE8 is not supported

vw and vh are relative to the viewport, so they will not change with the content and layout Change with change.

section {
  width: 100vw;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background-size: cover;
  background-repeat: no-repeat;
  background-attachment: fixed;
}
section:nth-of-type(1) {
  background-image: url(&#39;https://unsplash.it/1024/683?image=1068&#39;);
}
section:nth-of-type(2) {
  background-image: url(&#39;https://unsplash.it/1024/683?image=1073&#39;);
}
section:nth-of-type(3) {
  background-image: url(&#39;https://unsplash.it/1024/683?image=1047&#39;);
}
section:nth-of-type(4) {
  background-image: url(&#39;https://unsplash.it/1024/683?image=1032&#39;);
}
body {
  margin: 0;
}
p {
  color: #fff;
  font-size: 100px;
  font-family: monospace;
}

Use unset to do CSS Reset

Compatibility: IE is not supported

body {
  color: red;
}
button {
  color: white;
  border: 1px solid #ccc;
}
/* 取消 section 中 button 的 color 设置 */
section button {
  color: unset;
}

Use column to do responsive column layout

Compatibility : Does not support IE9

nav {
  column-count: 4;
  column-width: 150px;
  column-gap: 3rem;
  column-rule: 1px dashed #ccc;
  column-fill: auto;
}
h2 {
  column-span: all;
}

For more articles related to CSS advanced layout techniques, please pay attention to the PHP Chinese website!

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