CSS advanced layout techniques

高洛峰
Release: 2017-02-09 13:14:46
Original
1256 people have browsed it

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>
Copy after login

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;
}
Copy after login

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

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

Use :*-Of-Type to select elements

Compatibility: IE8 is not supported

Example.

Bold the first p paragraph:

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

Add a border to the last img:

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

Add style to the unconnected blockquote:

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

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

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

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);
}
Copy after login

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;
}
Copy after login

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;
}
Copy after login

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;
}
Copy after login

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

Related labels:
css
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!