关于css:冷门又好用的-CSS-特性

53次阅读

共计 4020 个字符,预计需要花费 11 分钟才能阅读完成。

1. 多列布局(Multi-column Layout)

MDN – CSS Multi-column Layout

Can I Use – CSS3 Multi-column Layout

CSS 提供了对多列布局的反对。反对设置布局中的列数 (column-count)、内容应如何列之间的流动规定、列之间的间距 (column-gap) 以及列分割线(column-rule)的款式。

比方能够实现上面的瀑布流成果:

Codepen demo

次要款式:

.masonry {
  width: 1440px;
  margin: 20px auto;
  columns: 4;
  column-gap: 30px;

  .item {
    width: 100%;
    break-inside: avoid;
    margin-bottom: 30px;

    img {width: 100%;}
  }
}

2. 书写模式(Writing Modes)

MDN – CSS Writing Modes

Can I Use – CSS writing-mode property

Writing Modes 定义了各种国内书写模式,例如从左到右(拉丁语、印度语)、从右到左(希伯来语、阿拉伯语)、双向(混合从左到右和从右到左的语言)和垂直(汉语)。

上面是三种书写形式的展现:

Codepen demo

要害款式:

.left-to-right {direction: ltr;}

.right-to-left {direction: rtl;}

.vertical {writing-mode: vertical-rl;}

或者,能够用来实现一个黑客帝国的 code rain:

Codepen – Matrix code rain

3. aspect-ratio 属性

MDN – aspect-ratio

Can I Use – CSS property: aspect-ratio

CSS 的 aspect-ratio 属性用于设置元素的首选宽高比,能够主动计算宽度、高度和其余一些布局性能,省去同时计算宽和高的工作。

比方,视频网站能够设置视频播放窗口比例为 16/9:

Codepen demo

要害款式:

.video-box {
  width: 70vw;
  background-color: #000;
  aspect-ratio: 16/9;
}

4. gap 属性

MDN – gap

Can I Use – gap property for Flexbox

CSS 的 gap 属性用于 flex 和 grid 布局时设置行和列之间的距离,是 row-gapcolumn-gap 的简写。

以前在应用 flex 布局的时候常常会用 marginpadding 来管制 flex item 之间的距离,用 gap 会更不便。

比方:

<div class="flex-box">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>
.flex-box {
  display: flex;
  width: 400px;
  flex-wrap: wrap;
  gap: 20px;
}

.item {
  width: 120px;
  height: 60px;
  background-color: c·rimson;
}

Codepen demo

5. CSS Shapes

MDN – CSS Shapes

Can I Use – CSS Shapes Level 1

CSS Shapes 用于形容元素的几何形态。元素的惯例形态就是矩形,应用 CSS Shapes 能够将元素定义为圆、椭圆或多边形。

对于 Level 1 标准,CSS Shapes 能够利用于浮动元素。该标准定义了不同的办法来定义浮动元素上的形态。

比方,实现上面文字盘绕圆形图片的成果:

Codepen demo

要害款式:

img {
  width: 300px;
  float: left;
  shape-outside: circle(50%);
}

6. object-fit 属性

MDN – object-fit

Can I Use – CSS3 object-fit/object-position

object-fit 属性用于设置 replaced element(例如 <img><video>)的内容如何适配其容器的尺寸。

比方,调整一张图片在容器外面的显示:

Codepen demo

7. filter 属性

MDN – filter

Can I Use – CSS Filter Effects

CSS 的 filter 属性将图像的成果调整(含糊、对比度、灰度、色调等)利用于元素。filter 通常用于调整图像、背景和边框的渲染。

比方,每年的国家公祭日很多网站会把色彩调整成黑白,就能够用 filter 一行代码搞定:

8. backdrop-filter 属性

filter 相似的属性,backdrop-filter 属性将图形成果(例如含糊或色彩偏移)利用于元素的背景区域。因为它实用于元素前面的所有内容,应用时须要将元素或其背景至多局部设置为通明能力看到成果。

MDN – backdrop-filter

Can I Use – CSS Backdrop Filter

比方,能够用它做一个毛玻璃的成果:

Codepen demo

要害代码:

<div class="box">
  <p>
    If I know what love is
    <br />it is because of you
  </p>
</div>
.box {background: url(../images/roses.jpg) no-repeat;
}

p {background-color: rgba(255, 255, 255, 0.3);
  backdrop-filter: blur(20px);
  color: white;
}

9. conic-gradient() 函数

MDN – conic-gradient()

Can I Use – conic-gradient()

CSS 中的 linear-gradient() 函数大家应该接触的不少,除此之外 gradient 家族中还有 radial-gradient()conic-gradient() 等,更多类型可参考 MDN – gradient。

conic-gradient() 函数创立一个图像,该图像由渐变色组成,色彩围绕中心点旋转过渡(而不是从核心辐射)。

例如,常见的渐变色仪表盘图表就能够用 conic-gradient() 函数绘制:

Codepen demo

10. accent-color 属性

MDN – accent-color

Can I Use – CSS property: accent-color

CSS 的 accent-color 属性用于设置由某些元素生成的 UI 控件的强调色。比方 <input> 元素生成的 checkboxradio 控件被选中时的色彩。

比方,扭转以下元素的强调色:

Codepen demo

要害代码:

<input type="checkbox" class="checkbox" checked />
<input type="radio" class="radio" checked />
<input type="range" class="range" />
<progress value="70" max="100" class="progress">70%</progress>
.checkbox {
  width: 40px;
  height: 40px;
  accent-color: crimson;
}

.radio {
  width: 40px;
  height: 40px;
  accent-color: dodgerblue;
}

.range {
  width: 200px;
  accent-color: lawngreen;
}

.progress {
  width: 200px;
  accent-color: coral;
}

11. 滚动捕获(Scroll Snap)

MDN – CSS Scroll Snap

Can I Use – CSS Scroll Snap

CSS Scroll Snap 引入了对滚动地位的捕获,它强制执行滚动操作实现后滚动容器的滚动端口可能完结的地位。

比方,我想让每次滚动完结的地位都停在下一个元素结尾,实现一个滚动翻页的成果:

Codepen demo

要害代码:

<article class="scroller">
  <section>
    <h2>Page one</h2>
  </section>
  <section>
    <h2>Page two</h2>
  </section>
  <section>
    <h2>Page three</h2>
  </section>
  <section>
    <h2>Page four</h2>
  </section>
</article>
.scroller {
  overflow-y: scroll;
  scroll-snap-type: y mandatory;
}

section {scroll-snap-align: start;}

12. overscroll-behavior 属性

MDN – overscroll-behavior

Can I Use – CSS overscroll-behavior

CSS 的 overscroll-behavior 属性用于定义元素滚动到滚动区域边界时的行为。它是 overscroll-behavior-x 和 overscroll-behavior-y 的简写。

浏览器的默认行为是:当子元素滚动到边界后持续滚动鼠标,会触发父元素的滚动。该行为被称作 scroll chaining。很多时候咱们不须要这样的行为,比方当咱们滚动一个弹窗中的内容时,不心愿前面的页面也跟着滚动。通过设置 overscroll-behavior:contain 就能够批改这一行为,而不须要监听 scroll 事件去阻止冒泡。

示例 :Codepen demo

好了,目前能想到的就是这么多,心愿对大家更高效、更优雅的画页面有帮忙 😀!

正文完
 0