这些神仙布局方式你还不会?

参考了很多人写的文章,这里做一个汇总

1. clamp(MIN, VAL, MAX) 

clamp() - CSS: Cascading Style Sheets | MDN

clamp(MIN, VAL, MAX) 其实就是表示 max(MIN, min(VAL, MAX))

2. 保持宽高比:aspect-ratio: <width> / <height>

aspect-ratio - CSS: Cascading Style Sheets | MDN

 aspect-ratio  CSS 属性为 box 容器规定了一个期待的纵横比,这个纵横比可以用来计算自动尺寸以及为其他布局函数服务。

例如:盒子保持一个正方形

<style>
    div {
        width: 100px;   
        aspect-ratio: 1/1;
    }
</style>
<body><div>正方形</div></body>

3. grid 布局 auto-fit 和 auto-fill

repeat() - CSS(层叠样式表) | MDN

auto-fit 会自动撑开到占满所有

auto-fill 会自动填充满父元素,并且自元素是 minmax(150px, 1fr) 的合适尺寸

 4. min() max()

min() - CSS(层叠样式表) | MDN

max() - CSS(层叠样式表) | MDN

5. attr()

attr - CSS(层叠样式表) | MDN

CSS 表达式 attr() 用来获取选择到的元素的某一 HTML 属性值,并用于其样式。它也可以用于伪元素,属性值采用伪元素所依附的元素。

<style>
  p:before {
    content: attr(data-foo)" ";
    color: attr(color color, green);
  }
</style>
<body>
  <p data-foo="hello" color="red">world</p>
</body>

当前兼容性不是特别好,但是这个功能会很有用

6. blur()

blur() CSS 方法将高斯模糊应用于输出图片。

blur() - CSS(层叠样式表) | MDN

7. calc()

calc() 此 CSS 函数允许在声明 CSS 属性值时执行一些计算

calc() - CSS(层叠样式表) | MDN

8. minmax()

minmax() - CSS(层叠样式表) | MDN

CSS函数minmax()定义了一个长宽范围的闭区间, 它与CSS 网格布局一起使用。

9. @supports

@supports - CSS(层叠样式表) | MDN

@supports CSS at-rule 您可以指定依赖于浏览器中的一个或多个特定的 CSS 功能的支持声明。这被称为特性查询

10. @media

@media - CSS(层叠样式表) | MDN

这个我具体讲解一下,因为很多人只会简单根据屏幕宽度来设置样式,其实他还有很多作用

比如,我们不希望用户在手机上点击按钮有 hover 效果,因为手机上本身是不应该有 hover 的

@media (any-hover: hover) {
  div:hover {
    background: red;
  }
}

上边这段就会只在可以 hover 的时候添加 hover

如果我们想删除某些 ui 框架里手机上的 hover 效果,可以采用

@media (any-hover: none) {
  div:hover {
    background: transparent;
  }
}

我们想要在窗口变成正方形的时候给元素换颜色,可以采用

<style>
  div {
    width: 100%;
    height: 200px;
    background-color: red;
  }
  @media (aspect-ratio: 1 / 1) {
    div {
      background-color: limegreen;
    }
  }
</style>
<body>
  <div>content</div>
</body>

 等等,都可以在这里查到

使用媒体查询 - CSS(层叠样式表) | MDN

猜你喜欢

转载自blog.csdn.net/weixin_42335036/article/details/125282655